package tests.antlrParsers.moduleParser; import static org.junit.Assert.assertTrue; import org.junit.Test; import antlr.C.ModuleParser; public class PreprocessorTests extends FunctionDefinitionTests { @Test public void testPreprocessorIfs() { String input = "int foo(){ #if bar\n { #endif\n}"; ModuleParser parser = createParser(input); String output = parser.function_def().toStringTree(parser); System.out.println(output); assertTrue(output.startsWith("(function_def ")); } @Test public void testNestedPreprocessorIfs() { String input = "int foo(){ #if bar\n #if bar2\n { #endif #endif\n}"; ModuleParser parser = createParser(input); String output = parser.function_def().toStringTree(parser); System.out.println(output); assertTrue(output.startsWith("(function_def ")); } @Test public void testPreprocIfBeforeFunc() { String input = "#ifdef foo\nint foo(){ #if x\n foo();\n #else\n #endif\n} abc\n #endif\n"; ModuleParser parser = createParser(input); String output = parser.code().toStringTree(parser); System.out.println(output); assertTrue(output.contains("(water abc)")); } @Test public void testPreprocIfNesting() { String input = "foo(){ #ifdef x\n #ifdef y\n #else\n #endif\n#endif\n abc(); } foo();"; ModuleParser parser = createParser(input); String output = parser.code().toStringTree(parser); System.out.println(output); assertTrue(output .contains("(compound_statement { #ifdef x\\n #ifdef y\\n #else\\n #endif\\n #endif\\n abc ( ) ; }))")); } @Test public void testPreprocIfInElse() { String input = "foo(){ #ifdef x\n #else\n #ifdef y\n #endif\n#endif\n abc(); } foo();"; ModuleParser parser = createParser(input); String output = parser.code().toStringTree(parser); System.out.println(output); assertTrue(output .contains("(compound_statement { #ifdef x\\n #else\\n #ifdef y\\n #endif\\n #endif\\n abc ( ) ; }))")); } @Test public void testStartingPreProcElse() { String input = "#ifdef foo\n int foo(){ #else\n {\n#endif\n } abc\n #endif\n"; ModuleParser parser = createParser(input); String output = parser.code().toStringTree(parser); System.out.println(output); assertTrue(output.contains("(water abc)")); } }