/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.java.ast;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Set;
import org.junit.Test;
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.lang.java.ParserTst;
public class ASTLiteralTest extends ParserTst {
@Test
public void testIsStringLiteral() {
Set<ASTLiteral> literals = getNodes(ASTLiteral.class, TEST1);
assertTrue((literals.iterator().next()).isStringLiteral());
}
@Test
public void testIsNotStringLiteral() {
Set<ASTLiteral> literals = getNodes(ASTLiteral.class, TEST2);
assertFalse((literals.iterator().next()).isStringLiteral());
}
@Test
public void testIsIntIntLiteral() {
Set<ASTLiteral> literals = getNodes(ASTLiteral.class, TEST3);
assertTrue((literals.iterator().next()).isIntLiteral());
}
@Test
public void testIsIntLongLiteral() {
Set<ASTLiteral> literals = getNodes(ASTLiteral.class, TEST4);
assertTrue((literals.iterator().next()).isLongLiteral());
}
@Test
public void testIsFloatFloatLiteral() {
Set<ASTLiteral> literals = getNodes(ASTLiteral.class, TEST5);
assertTrue((literals.iterator().next()).isFloatLiteral());
}
@Test
public void testIsFloatDoubleLiteral() {
Set<ASTLiteral> literals = getNodes(ASTLiteral.class, TEST6);
assertTrue((literals.iterator().next()).isDoubleLiteral());
}
@Test
public void testIsCharLiteral() {
Set<ASTLiteral> literals = getNodes(ASTLiteral.class, TEST7);
assertTrue((literals.iterator().next()).isCharLiteral());
}
@Test
public void testStringUnicodeEscapesNotEscaped() {
ASTLiteral literal = new ASTLiteral(1);
literal.setStringLiteral();
literal.setImage("abcüabc");
literal.testingOnlySetBeginColumn(1);
literal.testingOnlySetEndColumn(7);
assertEquals("abcüabc", literal.getEscapedStringLiteral());
assertEquals("abcüabc", literal.getImage());
}
@Test
public void testStringUnicodeEscapesInvalid() {
ASTLiteral literal = new ASTLiteral(1);
literal.setStringLiteral();
literal.setImage("abc\\uXYZAabc");
literal.testingOnlySetBeginColumn(1);
literal.testingOnlySetEndColumn(12);
assertEquals("abc\\uXYZAabc", literal.getEscapedStringLiteral());
assertEquals("abc\\uXYZAabc", literal.getImage());
}
@Test
public void testStringUnicodeEscapesValid() {
ASTLiteral literal = new ASTLiteral(1);
literal.setStringLiteral();
literal.setImage("abc\u1234abc");
literal.testingOnlySetBeginColumn(1);
literal.testingOnlySetEndColumn(12);
assertEquals("abc\\u1234abc", literal.getEscapedStringLiteral());
assertEquals("abcሴabc", literal.getImage());
}
@Test
public void testCharacterUnicodeEscapesValid() {
ASTLiteral literal = new ASTLiteral(1);
literal.setCharLiteral();
literal.setImage("\u0030");
literal.testingOnlySetBeginColumn(1);
literal.testingOnlySetEndColumn(6);
assertEquals("\\u0030", literal.getEscapedStringLiteral());
assertEquals("0", literal.getImage());
}
private static final String TEST1 = "public class Foo {" + PMD.EOL + " String x = \"foo\";" + PMD.EOL + "}";
private static final String TEST2 = "public class Foo {" + PMD.EOL + " int x = 42;" + PMD.EOL + "}";
private static final String TEST3 = "public class Foo {" + PMD.EOL + " int x = 42;" + PMD.EOL + "}";
private static final String TEST4 = "public class Foo {" + PMD.EOL + " long x = 42L;" + PMD.EOL + "}";
private static final String TEST5 = "public class Foo {" + PMD.EOL + " float x = 3.14159f;" + PMD.EOL + "}";
private static final String TEST6 = "public class Foo {" + PMD.EOL + " double x = 3.14159;" + PMD.EOL + "}";
private static final String TEST7 = "public class Foo {" + PMD.EOL + " char x = 'x';" + PMD.EOL + "}";
}