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