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 } 59 | Popular Tags |