Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/langtools/jdk/jshell/ExecutionControlTestBase.java
40931 views
1
/*
2
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import javax.tools.Diagnostic;
25
26
import org.testng.annotations.Test;
27
import jdk.jshell.VarSnippet;
28
import java.net.InetAddress;
29
30
import static jdk.jshell.Snippet.Status.VALID;
31
import static jdk.jshell.Snippet.SubKind.*;
32
33
public class ExecutionControlTestBase extends KullaTesting {
34
35
String standardListenSpec() {
36
String loopback = InetAddress.getLoopbackAddress().getHostAddress();
37
return "jdi:hostname(" + loopback + ")";
38
}
39
40
String standardLaunchSpec() {
41
return "jdi:launch(true)";
42
}
43
44
String standardJdiSpec() {
45
return "jdi";
46
}
47
48
String standardSpecs() {
49
return "5(" + standardListenSpec() + "), 6(" + standardLaunchSpec() + "), 7(" + standardJdiSpec() + ")";
50
}
51
52
@Test
53
public void classesDeclaration() {
54
assertEval("interface A { }");
55
assertEval("class B implements A { }");
56
assertEval("interface C extends A { }");
57
assertEval("enum D implements C { }");
58
assertEval("@interface E { }");
59
assertClasses(
60
clazz(KullaTesting.ClassType.INTERFACE, "A"),
61
clazz(KullaTesting.ClassType.CLASS, "B"),
62
clazz(KullaTesting.ClassType.INTERFACE, "C"),
63
clazz(KullaTesting.ClassType.ENUM, "D"),
64
clazz(KullaTesting.ClassType.ANNOTATION, "E"));
65
assertActiveKeys();
66
}
67
68
@Test
69
public void interfaceTest() {
70
String interfaceSource
71
= "interface A {\n"
72
+ " default int defaultMethod() { return 1; }\n"
73
+ " static int staticMethod() { return 2; }\n"
74
+ " int method();\n"
75
+ " class Inner1 {}\n"
76
+ " static class Inner2 {}\n"
77
+ "}";
78
assertEval(interfaceSource);
79
assertEval("A.staticMethod();", "2");
80
String classSource
81
= "class B implements A {\n"
82
+ " public int method() { return 3; }\n"
83
+ "}";
84
assertEval(classSource);
85
assertEval("B b = new B();");
86
assertEval("b.defaultMethod();", "1");
87
assertDeclareFail("B.staticMethod();",
88
new ExpectedDiagnostic("compiler.err.cant.resolve.location.args", 0, 14, 1, -1, -1, Diagnostic.Kind.ERROR));
89
assertEval("b.method();", "3");
90
assertEval("new A.Inner1();");
91
assertEval("new A.Inner2();");
92
assertEval("new B.Inner1();");
93
assertEval("new B.Inner2();");
94
}
95
96
@Test
97
public void variables() {
98
VarSnippet snx = varKey(assertEval("int x = 10;"));
99
VarSnippet sny = varKey(assertEval("String y = \"hi\";"));
100
VarSnippet snz = varKey(assertEval("long z;"));
101
assertVariables(variable("int", "x"), variable("String", "y"), variable("long", "z"));
102
assertVarValue(snx, "10");
103
assertVarValue(sny, "\"hi\"");
104
assertVarValue(snz, "0");
105
assertActiveKeys();
106
}
107
108
@Test
109
public void methodOverload() {
110
assertEval("int m() { return 1; }");
111
assertEval("int m(int x) { return 2; }");
112
assertEval("int m(String s) { return 3; }");
113
assertEval("int m(int x, int y) { return 4; }");
114
assertEval("int m(int x, String z) { return 5; }");
115
assertEval("int m(int x, String z, long g) { return 6; }");
116
assertMethods(
117
method("()int", "m"),
118
method("(int)int", "m"),
119
method("(String)int", "m"),
120
method("(int,int)int", "m"),
121
method("(int,String)int", "m"),
122
method("(int,String,long)int", "m")
123
);
124
assertEval("m();", "1");
125
assertEval("m(3);", "2");
126
assertEval("m(\"hi\");", "3");
127
assertEval("m(7, 8);", "4");
128
assertEval("m(7, \"eight\");", "5");
129
assertEval("m(7, \"eight\", 9L);", "6");
130
assertActiveKeys();
131
}
132
133
@Test
134
public void testExprSanity() {
135
assertEval("int x = 3;", "3");
136
assertEval("int y = 4;", "4");
137
assertEval("x + y;", "7");
138
assertActiveKeys();
139
}
140
141
@Test
142
public void testImportOnDemand() {
143
assertImportKeyMatch("import java.util.*;", "java.util.*", TYPE_IMPORT_ON_DEMAND_SUBKIND, added(VALID));
144
assertEval("List<Integer> list = new ArrayList<>();");
145
assertEval("list.add(45);");
146
assertEval("list.size();", "1");
147
}
148
}
149
150