langtools/test/jdk/jshell/TypeNameTest.java
changeset 34750 36d62753f5da
parent 33362 65ec6de1d6b4
child 43134 006808ae5f6e
equal deleted inserted replaced
34572:4edcff1b9a88 34750:36d62753f5da
    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 }