View Javadoc
1   package net.sourceforge.pmd.lang.java.ast;
2   
3   import static org.junit.Assert.assertEquals;
4   import static org.junit.Assert.assertFalse;
5   import static org.junit.Assert.assertTrue;
6   
7   import java.util.Set;
8   
9   import net.sourceforge.pmd.PMD;
10  import net.sourceforge.pmd.lang.java.ParserTst;
11  
12  import org.junit.Test;
13  
14  public class ASTLiteralTest extends ParserTst {
15  
16      @Test
17      public void testIsStringLiteral() throws Throwable {
18          Set literals = getNodes(ASTLiteral.class, TEST1);
19          assertTrue(((ASTLiteral)(literals.iterator().next())).isStringLiteral());
20      }
21  
22      @Test
23      public void testIsNotStringLiteral() throws Throwable {
24          Set literals = getNodes(ASTLiteral.class, TEST2);
25          assertFalse(((ASTLiteral)(literals.iterator().next())).isStringLiteral());
26      }
27  
28      @Test
29      public void testIsIntIntLiteral() throws Throwable {
30          Set literals = getNodes(ASTLiteral.class, TEST3);
31          assertTrue(((ASTLiteral)(literals.iterator().next())).isIntLiteral());
32      }
33  
34      @Test
35      public void testIsIntLongLiteral() throws Throwable {
36          Set literals = getNodes(ASTLiteral.class, TEST4);
37          assertTrue(((ASTLiteral)(literals.iterator().next())).isLongLiteral());
38      }
39  
40      @Test
41      public void testIsFloatFloatLiteral() throws Throwable {
42          Set literals = getNodes(ASTLiteral.class, TEST5);
43          assertTrue(((ASTLiteral)(literals.iterator().next())).isFloatLiteral());
44      }
45  
46      @Test
47      public void testIsFloatDoubleLiteral() throws Throwable {
48          Set literals = getNodes(ASTLiteral.class, TEST6);
49          assertTrue(((ASTLiteral)(literals.iterator().next())).isDoubleLiteral());
50      }
51  
52      @Test
53      public void testIsCharLiteral() throws Throwable {
54          Set literals = getNodes(ASTLiteral.class, TEST7);
55          assertTrue(((ASTLiteral)(literals.iterator().next())).isCharLiteral());
56      }
57  
58      @Test
59      public void testStringUnicodeEscapesNotEscaped() {
60          ASTLiteral literal = new ASTLiteral(1);
61          literal.setStringLiteral();
62          literal.setImage("abcüabc");
63          literal.testingOnly__setBeginColumn(1);
64          literal.testingOnly__setEndColumn(7);
65          assertEquals("abcüabc", literal.getEscapedStringLiteral());
66          assertEquals("abcüabc", literal.getImage());
67      }
68  
69      @Test
70      public void testStringUnicodeEscapesInvalid() {
71          ASTLiteral literal = new ASTLiteral(1);
72          literal.setStringLiteral();
73          literal.setImage("abc\\uXYZAabc");
74          literal.testingOnly__setBeginColumn(1);
75          literal.testingOnly__setEndColumn(12);
76          assertEquals("abc\\uXYZAabc", literal.getEscapedStringLiteral());
77          assertEquals("abc\\uXYZAabc", literal.getImage());
78      }
79  
80      @Test
81      public void testStringUnicodeEscapesValid() {
82          ASTLiteral literal = new ASTLiteral(1);
83          literal.setStringLiteral();
84          literal.setImage("abc\u1234abc");
85          literal.testingOnly__setBeginColumn(1);
86          literal.testingOnly__setEndColumn(12);
87          assertEquals("abc\\u1234abc", literal.getEscapedStringLiteral());
88          assertEquals("abcሴabc", literal.getImage());
89      }
90  
91      @Test
92      public void testCharacterUnicodeEscapesValid() {
93          ASTLiteral literal = new ASTLiteral(1);
94          literal.setCharLiteral();
95          literal.setImage("\u0030");
96          literal.testingOnly__setBeginColumn(1);
97          literal.testingOnly__setEndColumn(6);
98          assertEquals("\\u0030", literal.getEscapedStringLiteral());
99          assertEquals("0", literal.getImage());
100     }
101 
102     private static final String TEST1 =
103     "public class Foo {" + PMD.EOL +
104     "  String x = \"foo\";" + PMD.EOL +
105     "}";
106 
107     private static final String TEST2 =
108     "public class Foo {" + PMD.EOL +
109     "  int x = 42;" + PMD.EOL +
110     "}";
111 
112     private static final String TEST3 =
113     "public class Foo {" + PMD.EOL +
114     "  int x = 42;" + PMD.EOL +
115     "}";
116 
117     private static final String TEST4 =
118     "public class Foo {" + PMD.EOL +
119     "  long x = 42L;" + PMD.EOL +
120     "}";
121 
122     private static final String TEST5 =
123     "public class Foo {" + PMD.EOL +
124     "  float x = 3.14159f;" + PMD.EOL +
125     "}";
126 
127     private static final String TEST6 =
128     "public class Foo {" + PMD.EOL +
129     "  double x = 3.14159;" + PMD.EOL +
130     "}";
131 
132     private static final String TEST7 =
133     "public class Foo {" + PMD.EOL +
134     "  char x = 'x';" + PMD.EOL +
135     "}";
136 }