aoqi@0: /* aoqi@0: * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. aoqi@0: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: * aoqi@0: * This code is free software; you can redistribute it and/or modify it aoqi@0: * under the terms of the GNU General Public License version 2 only, as aoqi@0: * published by the Free Software Foundation. Oracle designates this aoqi@0: * particular file as subject to the "Classpath" exception as provided aoqi@0: * by Oracle in the LICENSE file that accompanied this code. aoqi@0: * aoqi@0: * This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: * version 2 for more details (a copy is included in the LICENSE file that aoqi@0: * accompanied this code). aoqi@0: * aoqi@0: * You should have received a copy of the GNU General Public License version aoqi@0: * 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: * aoqi@0: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: * or visit www.oracle.com if you need additional information or have any aoqi@0: * questions. aoqi@0: */ aoqi@0: aoqi@0: /** aoqi@0: * @test aoqi@0: * @bug 8003639 aoqi@0: * @summary convert lambda testng tests to jtreg and add them aoqi@0: * @run testng MethodReferenceTestKinds aoqi@0: */ aoqi@0: aoqi@0: import org.testng.annotations.Test; aoqi@0: aoqi@0: import static org.testng.Assert.assertEquals; aoqi@0: aoqi@0: /** aoqi@0: * @author Robert Field aoqi@0: */ aoqi@0: aoqi@0: @Test aoqi@0: public class MethodReferenceTestKinds extends MethodReferenceTestKindsSup { aoqi@0: aoqi@0: interface S0 { String get(); } aoqi@0: interface S1 { String get(MethodReferenceTestKinds x); } aoqi@0: interface S2 { String get(MethodReferenceTestKinds x, MethodReferenceTestKinds y); } aoqi@0: aoqi@0: interface SXN0 { MethodReferenceTestKindsBase make(MethodReferenceTestKinds x); } aoqi@0: interface SXN1 { MethodReferenceTestKindsBase make(MethodReferenceTestKinds x, String str); } aoqi@0: aoqi@0: interface SN0 { MethodReferenceTestKindsBase make(); } aoqi@0: interface SN1 { MethodReferenceTestKindsBase make(String x); } aoqi@0: aoqi@0: class In extends MethodReferenceTestKindsBase { aoqi@0: In(String val) { aoqi@0: this.val = val; aoqi@0: } aoqi@0: aoqi@0: In() { aoqi@0: this("blank"); aoqi@0: } aoqi@0: } aoqi@0: aoqi@0: String instanceMethod0() { return "IM:0-" + this; } aoqi@0: String instanceMethod1(MethodReferenceTestKinds x) { return "IM:1-" + this + x; } aoqi@0: aoqi@0: static String staticMethod0() { return "SM:0"; } aoqi@0: static String staticMethod1(MethodReferenceTestKinds x) { return "SM:1-" + x; } aoqi@0: aoqi@0: MethodReferenceTestKinds(String val) { aoqi@0: super(val); aoqi@0: } aoqi@0: aoqi@0: MethodReferenceTestKinds() { aoqi@0: super("blank"); aoqi@0: } aoqi@0: aoqi@0: MethodReferenceTestKinds inst(String val) { aoqi@0: return new MethodReferenceTestKinds(val); aoqi@0: } aoqi@0: aoqi@0: public void testMRBound() { aoqi@0: S0 var = this::instanceMethod0; aoqi@0: assertEquals(var.get(), "IM:0-MethodReferenceTestKinds(blank)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRBoundArg() { aoqi@0: S1 var = this::instanceMethod1; aoqi@0: assertEquals(var.get(inst("arg")), "IM:1-MethodReferenceTestKinds(blank)MethodReferenceTestKinds(arg)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRUnbound() { aoqi@0: S1 var = MethodReferenceTestKinds::instanceMethod0; aoqi@0: assertEquals(var.get(inst("rcvr")), "IM:0-MethodReferenceTestKinds(rcvr)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRUnboundArg() { aoqi@0: S2 var = MethodReferenceTestKinds::instanceMethod1; aoqi@0: assertEquals(var.get(inst("rcvr"), inst("arg")), "IM:1-MethodReferenceTestKinds(rcvr)MethodReferenceTestKinds(arg)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRSuper() { aoqi@0: S0 var = super::instanceMethod0; aoqi@0: assertEquals(var.get(), "SIM:0-MethodReferenceTestKinds(blank)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRSuperArg() { aoqi@0: S1 var = super::instanceMethod1; aoqi@0: assertEquals(var.get(inst("arg")), "SIM:1-MethodReferenceTestKinds(blank)MethodReferenceTestKinds(arg)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRStatic() { aoqi@0: S0 var = MethodReferenceTestKinds::staticMethod0; aoqi@0: assertEquals(var.get(), "SM:0"); aoqi@0: } aoqi@0: aoqi@0: public void testMRStaticArg() { aoqi@0: S1 var = MethodReferenceTestKinds::staticMethod1; aoqi@0: assertEquals(var.get(inst("arg")), "SM:1-MethodReferenceTestKinds(arg)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRTopLevel() { aoqi@0: SN0 var = MethodReferenceTestKindsBase::new; aoqi@0: assertEquals(var.make().toString(), "MethodReferenceTestKindsBase(blank)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRTopLevelArg() { aoqi@0: SN1 var = MethodReferenceTestKindsBase::new; aoqi@0: assertEquals(var.make("name").toString(), "MethodReferenceTestKindsBase(name)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRImplicitInner() { aoqi@0: SN0 var = MethodReferenceTestKinds.In::new; aoqi@0: assertEquals(var.make().toString(), "In(blank)"); aoqi@0: } aoqi@0: aoqi@0: public void testMRImplicitInnerArg() { aoqi@0: SN1 var = MethodReferenceTestKinds.In::new; aoqi@0: assertEquals(var.make("name").toString(), "In(name)"); aoqi@0: } aoqi@0: aoqi@0: } aoqi@0: aoqi@0: aoqi@0: class MethodReferenceTestKindsBase { aoqi@0: String val = "unset"; aoqi@0: aoqi@0: public String toString() { aoqi@0: return getClass().getSimpleName() + "(" + val + ")"; aoqi@0: } aoqi@0: aoqi@0: MethodReferenceTestKindsBase(String val) { aoqi@0: this.val = val; aoqi@0: } aoqi@0: aoqi@0: MethodReferenceTestKindsBase() { aoqi@0: this("blank"); aoqi@0: } aoqi@0: aoqi@0: } aoqi@0: aoqi@0: class MethodReferenceTestKindsSup extends MethodReferenceTestKindsBase { aoqi@0: String instanceMethod0() { return "SIM:0-" + this; } aoqi@0: String instanceMethod1(MethodReferenceTestKinds x) { return "SIM:1-" + this + x; } aoqi@0: aoqi@0: MethodReferenceTestKindsSup(String val) { aoqi@0: super(val); aoqi@0: } aoqi@0: aoqi@0: }