1   package test.net.sourceforge.pmd.cpd;
2   
3   import static org.junit.Assert.assertEquals;
4   import net.sourceforge.pmd.PMD;
5   import net.sourceforge.pmd.cpd.CPPTokenizer;
6   import net.sourceforge.pmd.cpd.SourceCode;
7   import net.sourceforge.pmd.cpd.Tokens;
8   
9   import org.junit.Test;
10  
11  public class CPPTokenizerTest {
12  
13      @Test
14      public void testMultiLineMacros() throws Throwable {
15          CPPTokenizer tokenizer = new CPPTokenizer();
16          SourceCode code = new SourceCode(new SourceCode.StringCodeLoader(TEST1));
17          Tokens tokens = new Tokens();
18          tokenizer.tokenize(code, tokens);
19          assertEquals(7, tokens.size());
20      }
21  
22      @Test
23      public void testDollarSignInIdentifier() {
24          parse(TEST2);
25      }
26  
27      @Test
28      public void testDollarSignStartingIdentifier() {
29          parse(TEST3);
30      }
31  
32      @Test
33      public void testWideCharacters() {
34          parse(TEST4);
35      }
36  
37      private void parse(String snippet) {
38          CPPTokenizer tokenizer = new CPPTokenizer();
39          SourceCode code = new SourceCode(new SourceCode.StringCodeLoader(snippet));
40          Tokens tokens = new Tokens();
41          tokenizer.tokenize(code, tokens);
42      }
43  
44      private static final String TEST1 =
45              "#define FOO a +\\" + PMD.EOL +
46              "            b +\\" + PMD.EOL +
47              "            c +\\" + PMD.EOL +
48              "            d +\\" + PMD.EOL +
49              "            e +\\" + PMD.EOL +
50              "            f +\\" + PMD.EOL +
51              "            g" + PMD.EOL +
52              " void main() {}";
53  
54      private static final String TEST2 =
55              " void main() { int x$y = 42; }";
56  
57      private static final String TEST3 =
58              " void main() { int $x = 42; }";
59  
60      private static final String TEST4 =
61              " void main() { char x = L'a'; }";
62  
63      public static junit.framework.Test suite() {
64          return new junit.framework.JUnit4TestAdapter(CPPTokenizerTest.class);
65      }
66  }