1
2
3
4 package net.sourceforge.pmd.cpd;
5
6 import static org.junit.Assert.assertEquals;
7 import static org.junit.Assert.assertFalse;
8
9 import java.io.IOException;
10 import java.util.List;
11
12 import net.sourceforge.pmd.PMD;
13
14 import org.junit.Test;
15
16 public class EcmascriptTokenizerTest {
17
18 @Test
19 public void test1() throws Throwable {
20 Tokenizer tokenizer = new EcmascriptTokenizer();
21 SourceCode sourceCode = new SourceCode( new SourceCode.StringCodeLoader( getCode1() ) );
22 Tokens tokens = new Tokens();
23 tokenizer.tokenize( sourceCode, tokens );
24 assertEquals( 22, tokens.size() );
25 }
26
27 @Test
28 public void test2() throws Throwable {
29 Tokenizer t = new EcmascriptTokenizer();
30 SourceCode sourceCode = new SourceCode( new SourceCode.StringCodeLoader( getCode2() ) );
31 Tokens tokens = new Tokens();
32 t.tokenize( sourceCode, tokens );
33 assertEquals( 22, tokens.size() );
34 }
35
36
37
38
39
40 @Test
41 public void parseStringNotAsMultiline() throws IOException {
42 Tokenizer t = new EcmascriptTokenizer();
43 SourceCode sourceCode = new SourceCode( new SourceCode.StringCodeLoader(
44 "var s = \"a string \\\n"
45 + "continues\";\n"
46 + "var s = \"a string \\\n"
47 + "continues2\";\n") );
48 Tokens tokens = new Tokens();
49 t.tokenize(sourceCode, tokens);
50 assertEquals(9, tokens.size());
51 List<TokenEntry> list = tokens.getTokens();
52 assertEquals("var", list.get(0).getIdentifier(), list.get(4).getIdentifier());
53 assertEquals("s", list.get(1).getIdentifier(), list.get(5).getIdentifier());
54 assertEquals("=", list.get(2).getIdentifier(), list.get(6).getIdentifier());
55 assertEquals("\"a string continues\"", list.get(3).toString());
56 assertEquals("\"a string continues2\"", list.get(7).toString());
57 assertFalse(list.get(3).getIdentifier() == list.get(7).getIdentifier());
58 }
59
60
61 private String getCode1() {
62 StringBuilder sb = new StringBuilder();
63 sb.append( "function switchToRealPassword() {" ).append(PMD.EOL);
64 sb.append( " var real = $('realPass')" ).append(PMD.EOL);
65 sb.append( " var prompt = $('promptPass')" ).append(PMD.EOL);
66 sb.append( " real.style.display = 'inline'" ).append(PMD.EOL);
67 sb.append( " prompt.style.display = 'none'" ).append(PMD.EOL);
68 sb.append( " real.focus()" ).append(PMD.EOL);
69 sb.append( "}" ).append(PMD.EOL);
70 return sb.toString();
71 }
72
73
74 private String getCode2() {
75 StringBuilder sb = new StringBuilder();
76 sb.append( "function switchToRealPassword() {" ).append(PMD.EOL);
77 sb.append( " var real = $('realPass');" ).append(PMD.EOL);
78 sb.append( " var prompt = $('promptPass');" ).append(PMD.EOL);
79 sb.append( " real.style.display = 'inline';" ).append(PMD.EOL);
80 sb.append( " prompt.style.display = 'none';" ).append(PMD.EOL);
81 sb.append( " real.focus();" ).append(PMD.EOL);
82 sb.append( "}" ).append(PMD.EOL);
83 return sb.toString();
84 }
85 }