blob: 0b72350ad7288839020ae023472400b31ba9047a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020 Martin Weber.
*
* Content is provided to you under the terms and conditions of the Eclipse Public License Version 2.0 "EPL".
* A copy of the EPL is available at http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.cdt.jsoncdb.core.internal;
import static org.junit.Assert.assertEquals;
import org.eclipse.cdt.jsoncdb.core.participant.Arglets.MacrosFile_GCC;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
import org.junit.Test;
/**
* @author Martin Weber
*/
public class MacrosFile_GCCTest {
private MacrosFile_GCC testee;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
testee = new MacrosFile_GCC();
}
/**
* Test method for {@link MacrosFile_GCC#processArgument(IParseContext, IPath, java.lang.String)} .
*/
@Test
public final void testProcessArgument() {
final String more = " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext result;
String parsed;
String name = "/an/Macros/file.inc";
IPath cwd = new Path("");
// -imacros/an/Macros/file.inc
result = new ParseContext();
assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-imacros" + name + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros'/an/Macros/file.inc'
result = new ParseContext();
assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-imacros" + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros"/an/Macros/file.inc"
result = new ParseContext();
assertEquals(8 + name.length() + 2,
testee.processArgument(result, cwd, "-imacros" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros /an/Macros/file.inc
result = new ParseContext();
assertEquals(8 + name.length() + 3, testee.processArgument(result, cwd, "-imacros " + name + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros '/an/Macros/file.inc'
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(result, cwd, "-imacros " + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros "/an/Macros/file.inc"
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(result, cwd, "-imacros " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
name = (new Path("A:an\\Macros/file.inc")).toOSString();
// -imacrosA:an\Macros/file.inc
result = new ParseContext();
assertEquals(8 + name.length(), testee.processArgument(result, cwd, "-imacros" + name + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
}
/**
* Test method for {@link MacrosFile_GCC#processArgument(IParseContext, IPath, java.lang.String)}
*/
@Test
public final void testProcessArgument_WS() {
final String more = " -o CMakeFiles/execut1.dir/util1.c.o -c /testprojects/C-subsrc/src/src-sub/main1.c";
ParseContext result = new ParseContext();
String parsed;
String name = "/ye olde/Ma cr os/fi le.inc";
IPath cwd = new Path("");
// -imacros'/ye olde/Ma cr os/fi le.inc'
result = new ParseContext();
assertEquals(8 + name.length() + 2, testee.processArgument(result, cwd, "-imacros" + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros"/ye olde/Ma cr os/fi le.inc"
result = new ParseContext();
assertEquals(8 + name.length() + 2,
testee.processArgument(result, cwd, "-imacros" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros '/ye olde/Ma cr os/fi le.inc'
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(result, cwd, "-imacros " + "'" + name + "'" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
// -imacros "/ye olde/Ma cr os/fi le.inc"
result = new ParseContext();
assertEquals(8 + name.length() + 3 + 2,
testee.processArgument(result, cwd, "-imacros " + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
name = (new Path("A:an\\Ma cr os/fi le.inc")).toOSString();
// -imacros'A:an\Ma cr os/fi le.inc'
result = new ParseContext();
assertEquals(8 + name.length() + 2,
testee.processArgument(result, cwd, "-imacros" + "\"" + name + "\"" + more));
assertEquals("#entries", 1, result.getMacroFiles().size());
parsed = result.getMacroFiles().get(0);
assertEquals("name", name, parsed);
}
}