21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 |
23 |
24 /* |
24 /* |
25 * @test |
25 * @test |
26 * @summary null test |
26 * @bug 8144903 |
|
27 * @summary Tests for determining the type from the expression |
27 * @build KullaTesting TestingInputStream |
28 * @build KullaTesting TestingInputStream |
28 * @run testng TypeNameTest |
29 * @run testng TypeNameTest |
29 */ |
30 */ |
30 |
31 |
31 import jdk.jshell.Snippet; |
32 import jdk.jshell.Snippet; |
32 import jdk.jshell.VarSnippet; |
33 import jdk.jshell.VarSnippet; |
33 import org.testng.annotations.Test; |
34 import org.testng.annotations.Test; |
34 |
35 |
35 import static jdk.jshell.Snippet.Status.VALID; |
36 import static jdk.jshell.Snippet.Status.VALID; |
36 import static org.testng.Assert.assertEquals; |
37 import static org.testng.Assert.assertEquals; |
37 import static jdk.jshell.Snippet.Status.OVERWRITTEN; |
|
38 |
38 |
39 @Test |
39 @Test |
40 public class TypeNameTest extends KullaTesting { |
40 public class TypeNameTest extends KullaTesting { |
41 |
41 |
42 public void testReplClassName() { |
42 public void testReplClassName() { |
60 public void testCapturedTypeName() { |
60 public void testCapturedTypeName() { |
61 VarSnippet sn = (VarSnippet) varKey(assertEval("\"\".getClass();")); |
61 VarSnippet sn = (VarSnippet) varKey(assertEval("\"\".getClass();")); |
62 assertEquals(sn.typeName(), "Class<? extends String>"); |
62 assertEquals(sn.typeName(), "Class<? extends String>"); |
63 } |
63 } |
64 |
64 |
|
65 public void testArrayTypeOfCapturedTypeName() { |
|
66 VarSnippet sn = (VarSnippet) varKey(assertEval("\"\".getClass().getEnumConstants();")); |
|
67 assertEquals(sn.typeName(), "String[]"); |
|
68 } |
|
69 |
65 public void testJavaLang() { |
70 public void testJavaLang() { |
66 VarSnippet sn = (VarSnippet) varKey(assertEval("\"\";")); |
71 VarSnippet sn = (VarSnippet) varKey(assertEval("\"\";")); |
67 assertEquals(sn.typeName(), "String"); |
72 assertEquals(sn.typeName(), "String"); |
68 } |
73 } |
69 |
74 |
81 assertEquals(sn2.typeName(), "Object"); |
86 assertEquals(sn2.typeName(), "Object"); |
82 assertEval("java.util.List<?> list3 = java.util.Arrays.asList(\"\");"); |
87 assertEval("java.util.List<?> list3 = java.util.Arrays.asList(\"\");"); |
83 VarSnippet sn3 = (VarSnippet) varKey(assertEval("list3.iterator().next()")); |
88 VarSnippet sn3 = (VarSnippet) varKey(assertEval("list3.iterator().next()")); |
84 assertEquals(sn3.typeName(), "Object"); |
89 assertEquals(sn3.typeName(), "Object"); |
85 assertEval("class Test1<X extends CharSequence> { public X get() { return null; } }"); |
90 assertEval("class Test1<X extends CharSequence> { public X get() { return null; } }"); |
86 Snippet x = varKey(assertEval("Test1<?> x = new Test1<>();")); |
91 Snippet x = varKey(assertEval("Test1<?> test1 = new Test1<>();")); |
87 VarSnippet sn4 = (VarSnippet) varKey(assertEval("x.get()")); |
92 VarSnippet sn4 = (VarSnippet) varKey(assertEval("test1.get()")); |
88 assertEquals(sn4.typeName(), "CharSequence"); |
93 assertEquals(sn4.typeName(), "Object"); |
89 assertEval("class Foo<X extends Number & CharSequence> { public X get() { return null; } }"); |
94 assertEval("class Test2<X extends Number & CharSequence> { public X get() { return null; } }"); |
90 assertEval("Foo<?> x = new Foo<>();", |
95 assertEval("Test2<?> test2 = new Test2<>();"); |
91 ste(MAIN_SNIPPET, VALID, VALID, true, null), |
96 VarSnippet sn5 = (VarSnippet) varKey(assertEval("test2.get()")); |
92 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET)); |
|
93 VarSnippet sn5 = (VarSnippet) varKey(assertEval("x.get()")); |
|
94 assertEquals(sn5.typeName(), "Object"); |
97 assertEquals(sn5.typeName(), "Object"); |
|
98 assertEval("class Test3<T> { T[][] get() { return null; } }", added(VALID)); |
|
99 assertEval("Test3<? extends String> test3 = new Test3<>();"); |
|
100 VarSnippet sn6 = (VarSnippet) varKey(assertEval("test3.get()")); |
|
101 assertEquals(sn6.typeName(), "String[][]"); |
95 } |
102 } |
96 } |
103 } |