Tue, 18 Dec 2012 22:16:45 +0000
8005193: New regression test test/tools/javac/lambda/BadMethodCall2.java fails
Summary: Bad golden file in negative test
Reviewed-by: jjh
rfield@1422 | 1 | /* |
rfield@1422 | 2 | * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved. |
rfield@1422 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
rfield@1422 | 4 | * |
rfield@1422 | 5 | * This code is free software; you can redistribute it and/or modify it |
rfield@1422 | 6 | * under the terms of the GNU General Public License version 2 only, as |
rfield@1422 | 7 | * published by the Free Software Foundation. Oracle designates this |
rfield@1422 | 8 | * particular file as subject to the "Classpath" exception as provided |
rfield@1422 | 9 | * by Oracle in the LICENSE file that accompanied this code. |
rfield@1422 | 10 | * |
rfield@1422 | 11 | * This code is distributed in the hope that it will be useful, but WITHOUT |
rfield@1422 | 12 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
rfield@1422 | 13 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
rfield@1422 | 14 | * version 2 for more details (a copy is included in the LICENSE file that |
rfield@1422 | 15 | * accompanied this code). |
rfield@1422 | 16 | * |
rfield@1422 | 17 | * You should have received a copy of the GNU General Public License version |
rfield@1422 | 18 | * 2 along with this work; if not, write to the Free Software Foundation, |
rfield@1422 | 19 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
rfield@1422 | 20 | * |
rfield@1422 | 21 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
rfield@1422 | 22 | * or visit www.oracle.com if you need additional information or have any |
rfield@1422 | 23 | * questions. |
rfield@1422 | 24 | */ |
rfield@1422 | 25 | |
rfield@1422 | 26 | /** |
rfield@1422 | 27 | * @test |
rfield@1422 | 28 | * @bug 8003639 |
rfield@1422 | 29 | * @summary convert lambda testng tests to jtreg and add them |
rfield@1422 | 30 | * @run testng MethodReferenceTestKinds |
rfield@1422 | 31 | */ |
rfield@1422 | 32 | |
rfield@1422 | 33 | import org.testng.annotations.Test; |
rfield@1422 | 34 | |
rfield@1422 | 35 | import static org.testng.Assert.assertEquals; |
rfield@1422 | 36 | |
rfield@1422 | 37 | /** |
rfield@1422 | 38 | * @author Robert Field |
rfield@1422 | 39 | */ |
rfield@1422 | 40 | |
rfield@1422 | 41 | @Test |
rfield@1422 | 42 | public class MethodReferenceTestKinds extends MethodReferenceTestKindsSup { |
rfield@1422 | 43 | |
rfield@1422 | 44 | interface S0 { String get(); } |
rfield@1422 | 45 | interface S1 { String get(MethodReferenceTestKinds x); } |
rfield@1422 | 46 | interface S2 { String get(MethodReferenceTestKinds x, MethodReferenceTestKinds y); } |
rfield@1422 | 47 | |
rfield@1422 | 48 | interface SXN0 { MethodReferenceTestKindsBase make(MethodReferenceTestKinds x); } |
rfield@1422 | 49 | interface SXN1 { MethodReferenceTestKindsBase make(MethodReferenceTestKinds x, String str); } |
rfield@1422 | 50 | |
rfield@1422 | 51 | interface SN0 { MethodReferenceTestKindsBase make(); } |
rfield@1422 | 52 | interface SN1 { MethodReferenceTestKindsBase make(String x); } |
rfield@1422 | 53 | |
rfield@1422 | 54 | class In extends MethodReferenceTestKindsBase { |
rfield@1422 | 55 | In(String val) { |
rfield@1422 | 56 | this.val = val; |
rfield@1422 | 57 | } |
rfield@1422 | 58 | |
rfield@1422 | 59 | In() { |
rfield@1422 | 60 | this("blank"); |
rfield@1422 | 61 | } |
rfield@1422 | 62 | } |
rfield@1422 | 63 | |
rfield@1422 | 64 | String instanceMethod0() { return "IM:0-" + this; } |
rfield@1422 | 65 | String instanceMethod1(MethodReferenceTestKinds x) { return "IM:1-" + this + x; } |
rfield@1422 | 66 | |
rfield@1422 | 67 | static String staticMethod0() { return "SM:0"; } |
rfield@1422 | 68 | static String staticMethod1(MethodReferenceTestKinds x) { return "SM:1-" + x; } |
rfield@1422 | 69 | |
rfield@1422 | 70 | MethodReferenceTestKinds(String val) { |
rfield@1422 | 71 | super(val); |
rfield@1422 | 72 | } |
rfield@1422 | 73 | |
rfield@1422 | 74 | MethodReferenceTestKinds() { |
rfield@1422 | 75 | super("blank"); |
rfield@1422 | 76 | } |
rfield@1422 | 77 | |
rfield@1422 | 78 | MethodReferenceTestKinds inst(String val) { |
rfield@1422 | 79 | return new MethodReferenceTestKinds(val); |
rfield@1422 | 80 | } |
rfield@1422 | 81 | |
rfield@1422 | 82 | public void testMRBound() { |
rfield@1422 | 83 | S0 var = this::instanceMethod0; |
rfield@1422 | 84 | assertEquals(var.get(), "IM:0-MethodReferenceTestKinds(blank)"); |
rfield@1422 | 85 | } |
rfield@1422 | 86 | |
rfield@1422 | 87 | public void testMRBoundArg() { |
rfield@1422 | 88 | S1 var = this::instanceMethod1; |
rfield@1422 | 89 | assertEquals(var.get(inst("arg")), "IM:1-MethodReferenceTestKinds(blank)MethodReferenceTestKinds(arg)"); |
rfield@1422 | 90 | } |
rfield@1422 | 91 | |
rfield@1422 | 92 | public void testMRUnbound() { |
rfield@1422 | 93 | S1 var = MethodReferenceTestKinds::instanceMethod0; |
rfield@1422 | 94 | assertEquals(var.get(inst("rcvr")), "IM:0-MethodReferenceTestKinds(rcvr)"); |
rfield@1422 | 95 | } |
rfield@1422 | 96 | |
rfield@1422 | 97 | public void testMRUnboundArg() { |
rfield@1422 | 98 | S2 var = MethodReferenceTestKinds::instanceMethod1; |
rfield@1422 | 99 | assertEquals(var.get(inst("rcvr"), inst("arg")), "IM:1-MethodReferenceTestKinds(rcvr)MethodReferenceTestKinds(arg)"); |
rfield@1422 | 100 | } |
rfield@1422 | 101 | |
rfield@1422 | 102 | public void testMRSuper() { |
rfield@1422 | 103 | S0 var = super::instanceMethod0; |
rfield@1422 | 104 | assertEquals(var.get(), "SIM:0-MethodReferenceTestKinds(blank)"); |
rfield@1422 | 105 | } |
rfield@1422 | 106 | |
rfield@1422 | 107 | public void testMRSuperArg() { |
rfield@1422 | 108 | S1 var = super::instanceMethod1; |
rfield@1422 | 109 | assertEquals(var.get(inst("arg")), "SIM:1-MethodReferenceTestKinds(blank)MethodReferenceTestKinds(arg)"); |
rfield@1422 | 110 | } |
rfield@1422 | 111 | |
rfield@1422 | 112 | public void testMRStatic() { |
rfield@1422 | 113 | S0 var = MethodReferenceTestKinds::staticMethod0; |
rfield@1422 | 114 | assertEquals(var.get(), "SM:0"); |
rfield@1422 | 115 | } |
rfield@1422 | 116 | |
rfield@1422 | 117 | public void testMRStaticArg() { |
rfield@1422 | 118 | S1 var = MethodReferenceTestKinds::staticMethod1; |
rfield@1422 | 119 | assertEquals(var.get(inst("arg")), "SM:1-MethodReferenceTestKinds(arg)"); |
rfield@1422 | 120 | } |
rfield@1422 | 121 | |
rfield@1422 | 122 | public void testMRTopLevel() { |
rfield@1422 | 123 | SN0 var = MethodReferenceTestKindsBase::new; |
rfield@1422 | 124 | assertEquals(var.make().toString(), "MethodReferenceTestKindsBase(blank)"); |
rfield@1422 | 125 | } |
rfield@1422 | 126 | |
rfield@1422 | 127 | public void testMRTopLevelArg() { |
rfield@1422 | 128 | SN1 var = MethodReferenceTestKindsBase::new; |
rfield@1422 | 129 | assertEquals(var.make("name").toString(), "MethodReferenceTestKindsBase(name)"); |
rfield@1422 | 130 | } |
rfield@1422 | 131 | |
rfield@1422 | 132 | public void testMRImplicitInner() { |
rfield@1422 | 133 | SN0 var = MethodReferenceTestKinds.In::new; |
rfield@1422 | 134 | assertEquals(var.make().toString(), "In(blank)"); |
rfield@1422 | 135 | } |
rfield@1422 | 136 | |
rfield@1422 | 137 | public void testMRImplicitInnerArg() { |
rfield@1422 | 138 | SN1 var = MethodReferenceTestKinds.In::new; |
rfield@1422 | 139 | assertEquals(var.make("name").toString(), "In(name)"); |
rfield@1422 | 140 | } |
rfield@1422 | 141 | |
rfield@1422 | 142 | } |
rfield@1422 | 143 | |
rfield@1422 | 144 | |
rfield@1422 | 145 | class MethodReferenceTestKindsBase { |
rfield@1422 | 146 | String val = "unset"; |
rfield@1422 | 147 | |
rfield@1422 | 148 | public String toString() { |
rfield@1422 | 149 | return getClass().getSimpleName() + "(" + val + ")"; |
rfield@1422 | 150 | } |
rfield@1422 | 151 | |
rfield@1422 | 152 | MethodReferenceTestKindsBase(String val) { |
rfield@1422 | 153 | this.val = val; |
rfield@1422 | 154 | } |
rfield@1422 | 155 | |
rfield@1422 | 156 | MethodReferenceTestKindsBase() { |
rfield@1422 | 157 | this("blank"); |
rfield@1422 | 158 | } |
rfield@1422 | 159 | |
rfield@1422 | 160 | } |
rfield@1422 | 161 | |
rfield@1422 | 162 | class MethodReferenceTestKindsSup extends MethodReferenceTestKindsBase { |
rfield@1422 | 163 | String instanceMethod0() { return "SIM:0-" + this; } |
rfield@1422 | 164 | String instanceMethod1(MethodReferenceTestKinds x) { return "SIM:1-" + this + x; } |
rfield@1422 | 165 | |
rfield@1422 | 166 | MethodReferenceTestKindsSup(String val) { |
rfield@1422 | 167 | super(val); |
rfield@1422 | 168 | } |
rfield@1422 | 169 | |
rfield@1422 | 170 | } |