package bluej.parser;
import java.io.StringReader;
import java.util.LinkedList;
import java.util.List;
import bluej.parser.lexer.LocatableToken;
import junit.framework.TestCase;
public class NewParserTest
extends TestCase{
| Test array as type parameter
|
public void test1()
{
StringReader sr = new StringReader(
"LinkedList<String[]>"
);
InfoParser ip = new InfoParser(sr, null);
List<LocatableToken> ll = new LinkedList<LocatableToken>();
assertTrue(ip.parseTypeSpec(false, true, ll));
assertEquals(6, ll.size());
}
| Test handling of '>>' sequence in type spec
|
public void test2()
{
StringReader sr = new StringReader(
"LinkedList<List<String[]>>"
);
InfoParser ip = new InfoParser(sr, null);
List<LocatableToken> ll = new LinkedList<LocatableToken>();
assertTrue(ip.parseTypeSpec(false, true, ll));
assertEquals(8, ll.size());
}
| Test multiple type parameters
|
public void test3()
{
StringReader sr = new StringReader(
"Map<String,Integer> v1; "
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test generic inner class of generic outer class
|
public void test4()
{
StringReader sr = new StringReader(
"Outer<String>.Inner<String> v8; "
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test wildcard type parameters
|
public void test5()
{
StringReader sr = new StringReader(
"A<?> v8; " +
"A<? extends String> v9; " +
"A<? super String> v10;"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
ip.parseStatement();
ip.parseStatement();
}
| Test less-than operator.
|
public void test6()
{
StringReader sr = new StringReader(
"b = (i < j);"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test a funky statement.
|
public void test7()
{
StringReader sr = new StringReader(
"boolean.class.equals(T.class);"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test a class declaration with a single type parameter.
|
public void test8()
{
StringReader sr = new StringReader(
"class A<T>{}"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test a class declaration containing a semi-colon
|
public void test9()
{
StringReader sr = new StringReader(
"class A{;}"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test a simple enum
|
public void test10()
{
StringReader sr = new StringReader(
"enum A {" +
" one, two, three;" +
" private int x;" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test array declarators after a variable name.
|
public void test11()
{
StringReader sr = new StringReader(
"int a[] = {1, 2, 3};"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test array declarators after a method parameter name.
|
public void test12()
{
StringReader sr = new StringReader(
"int a[], int[] b);"
);
JavaParser ip = new JavaParser(sr);
ip.parseMethodParamsBody();
}
| Test array declarators after a field name.
|
public void test13()
{
StringReader sr = new StringReader(
"class A { int x[] = {1,2,3}, y = 5; }"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test multiple field definition in one statement.
|
public void test13p2()
{
StringReader sr = new StringReader(
"class A { private int x, y; }"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test multiple variable declaration in a single statement.
|
public void test14()
{
StringReader sr = new StringReader(
"int x[], y = 3, z, q;"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test annotation declaration
|
public void test15()
{
StringReader sr = new StringReader(
"public @interface Copyright{ String value();}"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test use of marker annotation
|
public void test16()
{
StringReader sr = new StringReader(
"@Preliminary public class TimeTravel { }"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test the use of an annotation.
|
public void test17()
{
StringReader sr = new StringReader(
"@Copyright(\"2002 Yoyodyne Propulsion Systems\")"+
"public class NewParserTest { }"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test the '?:' operator.
|
public void testQuestionOperator()
{
StringReader sr = new StringReader(
"Object g = (x<y) ? null : null;"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test a static method call.
|
public void testStaticMethodCall()
{
StringReader sr = new StringReader(
"AAA.bbb(1,2,3);"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test the declaration of an annotation.
|
public void test18()
{
StringReader sr = new StringReader(
"public @interface RequestForEnhancement { " +
"int id();" +
"String synopsis();"+
"String engineer() default \"[unassigned]\"; "+
"String date() default \"[unimplemented]\"; "+
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test the use of an annotation.
|
public void test19()
{
StringReader sr = new StringReader(
"public @RequestForEnhancement(" +
"id = 2868724," +
"synopsis = \"Enable time-travel\","+
"engineer = \"Mr. Peabody\", "+
"date = \"4/1/3007\""+
")"+
"static void travelThroughTime(Date destination) { } }"
);
JavaParser ip = new JavaParser(sr);
ip.parseClassBody();
}
| Test the use of an annotation for a method.
|
public void test20()
{
StringReader sr = new StringReader(
"@Test public static void m1() { } }"
);
JavaParser ip = new JavaParser(sr);
ip.parseClassBody();
}
| Test the use of a qualified annotation
|
public void test21()
{
StringReader sr = new StringReader(
"@Test.RequestForEnhancement int req;"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
public void test22()
{
StringReader sr = new StringReader(
"@Expression(\"execution(* com.mypackage.Target.*(..))\") "+
"Pointcut pc1; "
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
public void test23()
{
StringReader sr = new StringReader(
"@Expression(\"execution(* com.mypackage.Target.*(..))\") "+
"volatile Pointcut pc1; "
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
public void test24()
{
StringReader sr = new StringReader(
"(byte)++(bb)"
);
JavaParser ip = new JavaParser(sr);
ip.parseExpression();
}
public void test25()
{
StringReader sr = new StringReader(
"new String[]{\"hello\", \"goodbye\",}"
);
JavaParser ip = new JavaParser(sr);
ip.parseExpression();
}
private void checkLambdaExpression(String s)
{
StringReader sr = new StringReader("(" + s + ")");
JavaParser ip = new JavaParser(sr);
ip.parseExpression();
sr = new StringReader("Runnable r = " + s + ";");
ip = new JavaParser(sr);
ip.parseStatement();
sr = new StringReader("doSomething(" + s + ");");
ip = new JavaParser(sr);
ip.parseStatement();
}
public void testLambdaNoParameters1()
{
checkLambdaExpression("() -> {}");
}
public void testLambdaNoParameters2()
{
checkLambdaExpression("() -> 42");
}
public void testLambdaNoParameters3()
{
checkLambdaExpression("() -> null");
}
public void testLambdaNoParameters4()
{
checkLambdaExpression("() -> {return 42;}");
}
public void testLambdaNoParameters5()
{
checkLambdaExpression("() -> System.gc()");
}
public void testLambdaNoParameters6()
{
String s = "() -> {\n "
+ " if (true) return 12;\n"
+ " else {\n"
+ " int result = 15;\n"
+ " for (int i = 1; i < 10; i++)\n"
+ " result *= i;\n"
+ " return result;\n"
+ " }\n"
+ "}\n";
checkLambdaExpression(s);
}
public void testLambdaSingleParameter1()
{
checkLambdaExpression("(int x) -> x+1");
}
public void testLambdaSingleParameter2()
{
checkLambdaExpression("(x) -> x+1");
}
public void testLambdaSingleParameter3()
{
checkLambdaExpression("x -> x+1");
}
public void testLambdaSingleParameter4()
{
checkLambdaExpression("t -> { t.start(); } ");
}
public void testLambdaSingleParameter5()
{
checkLambdaExpression("(final int x) -> x+1");
}
public void testLambdaSingleParameter6()
{
checkLambdaExpression("(CustomClass x) -> x+1");
}
public void testLambdaSingleParameter7()
{
checkLambdaExpression("(int... x) -> x+1");
}
public void testLambdaMultipleParameters1()
{
checkLambdaExpression("(int x, float y) -> x+y");
}
public void testLambdaMultipleParameters2()
{
checkLambdaExpression("(x,y) -> x+y");
}
public void testMethodRef2()
{
checkLambdaExpression("SomeClass::someMethod");
}
public void testMethodRef3()
{
checkLambdaExpression("somepkg.someotherpkg.SomeClass::someMethod");
}
public void testMethodRef4()
{
checkLambdaExpression("SomeClass::new");
}
| Test generic method call
|
public void testGenericMethodCall()
{
StringReader sr = new StringReader(
"this.<String>someMethod(\"hello\")"
);
JavaParser ip = new JavaParser(sr);
ip.parseExpression();
}
public void testPrimitiveCast()
{
StringReader sr = new StringReader(
"(byte)(a + 1)"
);
JavaParser ip = new JavaParser(sr);
ip.parseExpression();
}
public void testSynchronizedModifier()
{
StringReader sr = new StringReader(
"interface A {" +
"synchronized int someMethod();" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
sr = new StringReader("synchronized { throw new Exception(); }");
ip = new JavaParser(sr);
ip.parseStatement();
sr = new StringReader("synchronized(getSomeValue()) { throw new Exception(); }");
ip = new JavaParser(sr);
ip.parseStatement();
}
public void testVarargsMethod()
{
StringReader sr = new StringReader(
"interface A {" +
"synchronized int someMethod(int ... a);" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseTypeDef();
}
| Test for loop with double initializer
|
public void testForLoop()
{
StringReader sr = new StringReader(
"for (int i = 8, j; ; ) {" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test for loop where initializer has modifier(s)
|
public void testForLoop2()
{
StringReader sr = new StringReader(
"for (final int i : intArray) {" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test for loop where initializer variables are already declared
|
public void testForLoop3()
{
StringReader sr = new StringReader(
"for (i = 0, j = 8; i++; i < 10) {" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test for loop where loop var is an array (and brackets on LHS)
|
public void testForLoop4()
{
StringReader sr = new StringReader(
"for (int[][] lesser : multidimArray) {}"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
| Test for loop where loop var is an array (and brackets on RHS)
|
public void testForLoop5()
{
StringReader sr = new StringReader(
"for (int lesser[][] : multidimArray) {}"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
public void testFunkyCast()
{
StringReader sr = new StringReader(
"return (Insets)((ContainerPeer)peer).insets().clone();"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
public void testMethodParamModifier()
{
StringReader sr = new StringReader(
"interface I {" +
"void someMethod(final String argument);" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
public void testParenthesizedValue()
{
StringReader sr = new StringReader(
"new int[] { 1, 2 + (someValue), 3 }"
);
JavaParser ip = new JavaParser(sr);
ip.parseExpression();
}
public void testTopLevelExtraSemis()
{
StringReader sr = new StringReader(
"import java.lang.*; ;" +
"interface A {" +
"};"
);
JavaParser ip = new JavaParser(sr);
ip.parseCU();
}
public void testParenthesizedInTrinary()
{
StringReader sr = new StringReader(
"sb.append((isFilled) ? \"yes\": \"no\");"
);
JavaParser ip = new JavaParser(sr);
ip.parseStatement();
}
public void testDefaultMethodModifier()
{
StringReader sr = new StringReader(
"interface A {\n" +
" default int someMethod() { return 3; }\n" +
"}"
);
JavaParser ip = new JavaParser(sr);
ip.parseCU();
}
public void testConstructor1()
{
new JavaParser(new StringReader("Foo() { return; } }")).parseClassBody();
}
public void testConstructor2()
{
new JavaParser(new StringReader("public Foo() { return; } }")).parseClassBody();
}
public void testConstructor3()
{
new JavaParser(new StringReader("<T> Foo(T t) { return; } }")).parseClassBody();
}
public void testConstructor4()
{
new JavaParser(new StringReader("public <T, U> Foo() { return; } }")).parseClassBody();
}
public void testMethod1()
{
new JavaParser(new StringReader("void foo() { return; } }")).parseClassBody();
}
public void testMethod2()
{
new JavaParser(new StringReader("<T, U> void foo() { return; } }")).parseClassBody();
}
public void testMethod3()
{
new JavaParser(new StringReader("public <T, U> void foo() { return; } }")).parseClassBody();
}
public void testMethod4()
{
new JavaParser(new StringReader("public <T, U> java.lang.String[] foo() { return; } }")).parseClassBody();
}
public void testField1()
{
new JavaParser(new StringReader("int foo; }")).parseClassBody();
}
public void testField2()
{
new JavaParser(new StringReader("int foo[]; }")).parseClassBody();
}
public void testField3()
{
new JavaParser(new StringReader("int foo = 0; }")).parseClassBody();
}
}
top,
use,
map,
class NewParserTest
. test1
. test2
. test3
. test4
. test5
. test6
. test7
. test8
. test9
. test10
. test11
. test12
. test13
. test13p2
. test14
. test15
. test16
. test17
. testQuestionOperator
. testStaticMethodCall
. test18
. test19
. test20
. test21
. test22
. test23
. test24
. test25
. checkLambdaExpression
. testLambdaNoParameters1
. testLambdaNoParameters2
. testLambdaNoParameters3
. testLambdaNoParameters4
. testLambdaNoParameters5
. testLambdaNoParameters6
. testLambdaSingleParameter1
. testLambdaSingleParameter2
. testLambdaSingleParameter3
. testLambdaSingleParameter4
. testLambdaSingleParameter5
. testLambdaSingleParameter6
. testLambdaSingleParameter7
. testLambdaMultipleParameters1
. testLambdaMultipleParameters2
. testMethodRef2
. testMethodRef3
. testMethodRef4
. testGenericMethodCall
. testPrimitiveCast
. testSynchronizedModifier
. testVarargsMethod
. testForLoop
. testForLoop2
. testForLoop3
. testForLoop4
. testForLoop5
. testFunkyCast
. testMethodParamModifier
. testParenthesizedValue
. testTopLevelExtraSemis
. testParenthesizedInTrinary
. testDefaultMethodModifier
. testConstructor1
. testConstructor2
. testConstructor3
. testConstructor4
. testMethod1
. testMethod2
. testMethod3
. testMethod4
. testField1
. testField2
. testField3
893 neLoCode
+ 30 LoComm