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 } |