langtools/test/jdk/jshell/JShellQueryTest.java
changeset 40515 819fc588bd19
parent 40304 0318f4e75c6d
equal deleted inserted replaced
40514:fa42e8040550 40515:819fc588bd19
    26  * @bug 8143964
    26  * @bug 8143964
    27  * @summary test queries to the JShell that return Streams
    27  * @summary test queries to the JShell that return Streams
    28  * @build KullaTesting
    28  * @build KullaTesting
    29  * @run testng JShellQueryTest
    29  * @run testng JShellQueryTest
    30  */
    30  */
    31 import java.util.Set;
       
    32 import java.util.stream.Stream;
       
    33 import jdk.jshell.Snippet;
    31 import jdk.jshell.Snippet;
    34 import org.testng.annotations.Test;
    32 import org.testng.annotations.Test;
    35 
    33 
    36 import jdk.jshell.ImportSnippet;
    34 import jdk.jshell.ImportSnippet;
    37 import jdk.jshell.MethodSnippet;
    35 import jdk.jshell.MethodSnippet;
    38 import jdk.jshell.TypeDeclSnippet;
    36 import jdk.jshell.TypeDeclSnippet;
    39 import jdk.jshell.VarSnippet;
    37 import jdk.jshell.VarSnippet;
    40 import static java.util.stream.Collectors.joining;
    38 import static java.util.stream.Collectors.joining;
    41 import static java.util.stream.Collectors.toSet;
       
    42 import static org.testng.Assert.assertEquals;
    39 import static org.testng.Assert.assertEquals;
    43 
    40 
    44 @Test
    41 @Test
    45 public class JShellQueryTest extends KullaTesting {
    42 public class JShellQueryTest extends KullaTesting {
    46 
    43 
    47     private <T> void checkStreamMatch(Stream<T> result, T... expected) {
       
    48         Set<T> sns = result.collect(toSet());
       
    49         Set<T> exp = Stream.of(expected).collect(toSet());
       
    50         assertEquals(sns, exp);
       
    51     }
       
    52 
       
    53     public void testSnippets() {
    44     public void testSnippets() {
    54         checkStreamMatch(getState().snippets());
    45         assertStreamMatch(getState().snippets());
    55         VarSnippet sx = varKey(assertEval("int x = 5;"));
    46         VarSnippet sx = varKey(assertEval("int x = 5;"));
    56         VarSnippet sfoo = varKey(assertEval("String foo;"));
    47         VarSnippet sfoo = varKey(assertEval("String foo;"));
    57         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    48         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    58         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    49         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    59         checkStreamMatch(getState().snippets(), sx, sfoo, smm, svv);
    50         assertStreamMatch(getState().snippets(), sx, sfoo, smm, svv);
    60         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    51         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    61         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    52         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    62         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
    53         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
    63         checkStreamMatch(getState().snippets(), sx, sfoo, smm, svv, sc, si, simp);
    54         assertStreamMatch(getState().snippets(), sx, sfoo, smm, svv, sc, si, simp);
    64     }
    55     }
    65 
    56 
    66     public void testVars() {
    57     public void testVars() {
    67         checkStreamMatch(getState().variables());
    58         assertStreamMatch(getState().variables());
    68         VarSnippet sx = varKey(assertEval("int x = 5;"));
    59         VarSnippet sx = varKey(assertEval("int x = 5;"));
    69         VarSnippet sfoo = varKey(assertEval("String foo;"));
    60         VarSnippet sfoo = varKey(assertEval("String foo;"));
    70         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    61         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    71         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    62         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    72         checkStreamMatch(getState().variables(), sx, sfoo);
    63         assertStreamMatch(getState().variables(), sx, sfoo);
    73         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    64         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    74         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    65         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    75         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
    66         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
    76         checkStreamMatch(getState().variables(), sx, sfoo);
    67         assertStreamMatch(getState().variables(), sx, sfoo);
    77     }
    68     }
    78 
    69 
    79     public void testMethods() {
    70     public void testMethods() {
    80         checkStreamMatch(getState().methods());
    71         assertStreamMatch(getState().methods());
    81         VarSnippet sx = varKey(assertEval("int x = 5;"));
    72         VarSnippet sx = varKey(assertEval("int x = 5;"));
    82         VarSnippet sfoo = varKey(assertEval("String foo;"));
    73         VarSnippet sfoo = varKey(assertEval("String foo;"));
    83         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    74         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    84         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    75         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    85         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    76         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    86         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    77         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    87         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
    78         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
    88         checkStreamMatch(getState().methods(), smm, svv);
    79         assertStreamMatch(getState().methods(), smm, svv);
    89     }
    80     }
    90 
    81 
    91     public void testTypes() {
    82     public void testTypes() {
    92         checkStreamMatch(getState().types());
    83         assertStreamMatch(getState().types());
    93         VarSnippet sx = varKey(assertEval("int x = 5;"));
    84         VarSnippet sx = varKey(assertEval("int x = 5;"));
    94         VarSnippet sfoo = varKey(assertEval("String foo;"));
    85         VarSnippet sfoo = varKey(assertEval("String foo;"));
    95         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    86         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    96         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    87         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    97         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    88         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
    98         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    89         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
    99         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
    90         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
   100         checkStreamMatch(getState().types(), sc, si);
    91         assertStreamMatch(getState().types(), sc, si);
   101     }
    92     }
   102 
    93 
   103     public void testImports() {
    94     public void testImports() {
   104         checkStreamMatch(getState().imports());
    95         assertStreamMatch(getState().imports());
   105         VarSnippet sx = varKey(assertEval("int x = 5;"));
    96         VarSnippet sx = varKey(assertEval("int x = 5;"));
   106         VarSnippet sfoo = varKey(assertEval("String foo;"));
    97         VarSnippet sfoo = varKey(assertEval("String foo;"));
   107         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
    98         MethodSnippet smm = methodKey(assertEval("int mm() { return 6; }"));
   108         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
    99         MethodSnippet svv = methodKey(assertEval("void vv() { }"));
   109         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
   100         TypeDeclSnippet sc = classKey(assertEval("class C { }"));
   110         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
   101         TypeDeclSnippet si = classKey(assertEval("interface I { }"));
   111         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
   102         ImportSnippet simp = importKey(assertEval("import java.lang.reflect.*;"));
   112         checkStreamMatch(getState().imports(), simp);
   103         assertStreamMatch(getState().imports(), simp);
   113     }
   104     }
   114 
   105 
   115     public void testDiagnostics() {
   106     public void testDiagnostics() {
   116         Snippet sx = varKey(assertEval("int x = 5;"));
   107         Snippet sx = varKey(assertEval("int x = 5;"));
   117         checkStreamMatch(getState().diagnostics(sx));
   108         assertStreamMatch(getState().diagnostics(sx));
   118         Snippet broken = methodKey(assertEvalFail("int m() { blah(); return \"hello\"; }"));
   109         Snippet broken = methodKey(assertEvalFail("int m() { blah(); return \"hello\"; }"));
   119         String res = getState().diagnostics(broken)
   110         String res = getState().diagnostics(broken)
   120                 .map(d -> d.getCode())
   111                 .map(d -> d.getCode())
   121                 .collect(joining("+"));
   112                 .collect(joining("+"));
   122         assertEquals(res, "compiler.err.cant.resolve.location.args+compiler.err.prob.found.req");
   113         assertEquals(res, "compiler.err.cant.resolve.location.args+compiler.err.prob.found.req");
   123     }
   114     }
   124 
   115 
   125     public void testUnresolvedDependencies() {
   116     public void testUnresolvedDependencies() {
   126         VarSnippet sx = varKey(assertEval("int x = 5;"));
   117         VarSnippet sx = varKey(assertEval("int x = 5;"));
   127         checkStreamMatch(getState().unresolvedDependencies(sx));
   118         assertStreamMatch(getState().unresolvedDependencies(sx));
   128         MethodSnippet unr = methodKey(getState().eval("void uu() { baz(); zips(); }"));
   119         MethodSnippet unr = methodKey(getState().eval("void uu() { baz(); zips(); }"));
   129         checkStreamMatch(getState().unresolvedDependencies(unr), "method zips()", "method baz()");
   120         assertStreamMatch(getState().unresolvedDependencies(unr), "method zips()", "method baz()");
   130     }
   121     }
   131 }
   122 }