Path: blob/master/test/langtools/jdk/jshell/IgnoreTest.java
40930 views
/*1* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 8129559 8246353 824745626* @summary Test the ignoring of comments and certain modifiers27* @build KullaTesting TestingInputStream28* @run testng IgnoreTest29*/3031import org.testng.annotations.Test;3233import jdk.jshell.MethodSnippet;34import jdk.jshell.TypeDeclSnippet;35import jdk.jshell.VarSnippet;36import static jdk.jshell.Snippet.Status.VALID;37import static jdk.jshell.Snippet.SubKind.*;3839@Test40public class IgnoreTest extends KullaTesting {4142public void testComment() {43assertVarKeyMatch("//t1\n int//t2\n x//t3\n =//t4\n 12//t5\n ;//t6\n",44true, "x", VAR_DECLARATION_WITH_INITIALIZER_SUBKIND, "int", added(VALID));45assertVarKeyMatch("//t1\n int//t2\n y//t3\n =//t4\n 12//t5\n ;//t6",46true, "y", VAR_DECLARATION_WITH_INITIALIZER_SUBKIND, "int", added(VALID));47assertDeclarationKeyMatch(" //t0\n" +48" int//t0\n" +49" f//t0\n" +50" (//t0\n" +51" int x//t1\n" +52" ) {//t2\n" +53" return x+//t3\n" +54" x//t4\n" +55" ;//t5\n" +56" }//t6",57false, "f", METHOD_SUBKIND, added(VALID));58}5960public void testVarModifier() {61VarSnippet x1 = varKey(assertEval("public int x1;"));62assertVariableDeclSnippet(x1, "x1", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);63VarSnippet x2 = varKey(assertEval("protected int x2;"));64assertVariableDeclSnippet(x2, "x2", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);65VarSnippet x3 = varKey(assertEval("private int x3;"));66assertVariableDeclSnippet(x3, "x3", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);67VarSnippet x4 = varKey(assertEval("static int x4;"));68assertVariableDeclSnippet(x4, "x4", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);69VarSnippet x5 = varKey(assertEval("final int x5;"));70assertVariableDeclSnippet(x5, "x5", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);71}7273public void testVarModifierAnnotation() {74assertEval("@interface A { int value() default 0; }");75VarSnippet x1 = varKey(assertEval("@A public int x1;"));76assertVariableDeclSnippet(x1, "x1", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);77VarSnippet x2 = varKey(assertEval("@A(14) protected int x2;"));78assertVariableDeclSnippet(x2, "x2", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);79VarSnippet x3 = varKey(assertEval("@A(value=111)private int x3;"));80assertVariableDeclSnippet(x3, "x3", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);81VarSnippet x4 = varKey(assertEval("@A static int x4;"));82assertVariableDeclSnippet(x4, "x4", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);83VarSnippet x5 = varKey(assertEval("@A(1111) final int x5;"));84assertVariableDeclSnippet(x5, "x5", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);85}8687public void testVarModifierOtherModifier() {88VarSnippet x1 = varKey(assertEval("volatile public int x1;"));89assertVariableDeclSnippet(x1, "x1", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);90VarSnippet x2 = varKey(assertEval("transient protected int x2;"));91assertVariableDeclSnippet(x2, "x2", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);92VarSnippet x3 = varKey(assertEval("transient private int x3;"));93assertVariableDeclSnippet(x3, "x3", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);94VarSnippet x4 = varKey(assertEval("volatile static int x4;"));95assertVariableDeclSnippet(x4, "x4", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);96VarSnippet x5 = varKey(assertEval("transient final int x5;"));97assertVariableDeclSnippet(x5, "x5", "int", VALID, VAR_DECLARATION_SUBKIND, 0, 0);98}99100public void testMisplacedIgnoredModifier() {101assertEvalFail("int public y;");102assertEvalFail("String private x;");103assertEvalFail("(protected 34);");104}105106public void testMethodModifier() {107MethodSnippet m4 = methodKey(assertEval("static void m4() {}"));108assertMethodDeclSnippet(m4, "m4", "()void", VALID, 0, 0);109MethodSnippet m5 = methodKey(assertEval("final void m5() {}"));110assertMethodDeclSnippet(m5, "m5", "()void", VALID, 0, 0);111}112113public void testMethodModifierAnnotation() {114assertEval("@interface A { int value() default 0; }");115MethodSnippet m4 = methodKey(assertEval("@A static void m4() {}"));116assertMethodDeclSnippet(m4, "m4", "()void", VALID, 0, 0);117MethodSnippet m5 = methodKey(assertEval("@A(value=66)final void m5() {}"));118assertMethodDeclSnippet(m5, "m5", "()void", VALID, 0, 0);119}120121public void testClassModifier() {122TypeDeclSnippet c4 = classKey(assertEval("static class C4 {}"));123assertTypeDeclSnippet(c4, "C4", VALID, CLASS_SUBKIND, 0, 0);124TypeDeclSnippet c5 = classKey(assertEval("final class C5 {}"));125assertTypeDeclSnippet(c5, "C5", VALID, CLASS_SUBKIND, 0, 0);126}127128public void testInsideModifier() {129assertEval("import static java.lang.reflect.Modifier.*;");130assertEval("class C {"131+ "public int z;"132+ "final int f = 3;"133+ "protected int a;"134+ "private void m() {}"135+ "static void b() {}"136+ "}");137assertEval("C.class.getDeclaredField(\"z\").getModifiers() == PUBLIC;", "true");138assertEval("C.class.getDeclaredField(\"f\").getModifiers() == FINAL;", "true");139assertEval("C.class.getDeclaredField(\"a\").getModifiers() == PROTECTED;", "true");140assertEval("C.class.getDeclaredMethod(\"m\").getModifiers() == PRIVATE;", "true");141assertEval("C.class.getDeclaredMethod(\"b\").getModifiers() == STATIC;", "true");142}143}144145146