Ejemplo n.º 1
0
 @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);
   }
 }
Ejemplo n.º 2
0
 @Test
 public void testParsingOnDiverseSourceFiles() {
   Collection<File> files = listFiles(goodFiles, new String[] {"cc", "cpp", "hpp"});
   for (File file : files) {
     p.parse(file);
     CxxParser.finishedParsing(file);
   }
 }
Ejemplo n.º 3
0
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 {};"));
  }
}
Ejemplo n.º 4
0
  @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);
  }
Ejemplo n.º 5
0
  @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
  }