@Test public void testPreproccessorParsingOnDiverseSourceFiles() { conf = new CxxConfiguration(); conf.setErrorRecoveryEnabled(false); String baseDir = new File("src/test").getAbsolutePath(); conf.setBaseDir(baseDir); conf.setIncludeDirectories(Arrays.asList("resources")); p = CxxParser.create(mock(SquidAstVisitorContext.class), conf); Collection<File> files = listFiles(preprocessorFiles, new String[] {"cc", "cpp", "hpp"}); for (File file : files) { p.parse(file); CxxParser.finishedParsing(file); } }
@Test public void testParsingOnDiverseSourceFiles() { Collection<File> files = listFiles(goodFiles, new String[] {"cc", "cpp", "hpp"}); for (File file : files) { p.parse(file); CxxParser.finishedParsing(file); } }
public class SomethingTest { Parser<Grammar> p = CxxParser.create(mock(SquidAstVisitorContext.class)); Grammar g = p.getGrammar(); @Test public void test() { // p.setRootRule(g.rule(CxxGrammarImpl.TEST)); // assertThat(p).parse("void foo() override {};")); } }
@Test public void testParsingInCCompatMode() { // The C-compatibility replaces c++ keywords, which aren't keywords in C, // with non-keyword-strings via the preprocessor. // This mode works if such a file causes parsing errors when the mode // is switched off and doesn't, if the mode is switched on. File cfile = (File) listFiles(cCompatibilityFiles, new String[] {"c"}).toArray()[0]; SquidAstVisitorContext context = mock(SquidAstVisitorContext.class); when(context.getFile()).thenReturn(cfile); conf.setCFilesPatterns(new String[] {""}); p = CxxParser.create(context, conf); try { p.parse(cfile); } catch (com.sonar.sslr.api.RecognitionException re) { } conf.setCFilesPatterns(new String[] {"*.c"}); p = CxxParser.create(context, conf); p.parse(cfile); }
@Test public void testParseErrorRecovery() { // The error recovery works, if: // - a syntacticly incorrect file causes a parse error when recovery is disabled // - but doesn't cause such an error if we run with default settings try { p.parse(erroneousSources); fail("Parser could not recognize the syntax error"); } catch (com.sonar.sslr.api.RecognitionException re) { } conf.setErrorRecoveryEnabled(true); p = CxxParser.create(mock(SquidAstVisitorContext.class), conf); p.parse(erroneousSources); // <-- this shouldn't throw now }