    1   package test.net.sourceforge.pmd.cpd;
    2
    3   import junit.framework.TestCase;
    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   public class CPPTokenizerTest extends TestCase {
    10
    11      public void testMultiLineMacros() throws Throwable {
    12          CPPTokenizer tokenizer = new CPPTokenizer();
    13          SourceCode code = new SourceCode(new SourceCode.StringCodeLoader(TEST1));
    14          Tokens tokens = new Tokens();
    15          tokenizer.tokenize(code, tokens);
    16          assertEquals(7, tokens.size());
    17      }
    18
    19      public void testDollarSignInIdentifier() {
    20          parse(TEST2);
    21      }
    22
    23      public void testDollarSignStartingIdentifier() {
    24          parse(TEST3);
    25      }
    26
    27      public void testWideCharacters() {
    28          parse(TEST4);
    29      }
    30
    31      private void parse(String snippet) {
    32          CPPTokenizer tokenizer = new CPPTokenizer();
    33          SourceCode code = new SourceCode(new SourceCode.StringCodeLoader(snippet));
    34          Tokens tokens = new Tokens();
    35          tokenizer.tokenize(code, tokens);
    36      }
    37
    38      private static final String TEST1 =
    39              "#define FOO a +//" + PMD.EOL +
    40              "            b +//" + PMD.EOL +
    41              "            c +//" + PMD.EOL +
    42              "            d +//" + PMD.EOL +
    43              "            e +//" + PMD.EOL +
    44              "            f +//" + PMD.EOL +
    45              "            g" + PMD.EOL +
    46              " void main() {}";
    47
    48      private static final String TEST2 =
    49              " void main() { int x$y = 42; }";
    50
    51      private static final String TEST3 =
    52              " void main() { int $x = 42; }";
    53
    54      private static final String TEST4 =
    55              " void main() { char x = L'a'; }";
    56
    57
    58  }