test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestFDCCE.java

changeset 0
959103a6100f
equal deleted inserted replaced
-1:000000000000 0:959103a6100f
1 /*
2 * Copyright (c) 2012, 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. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 /**
27 * @test
28 * @bug 8003639
29 * @summary convert lambda testng tests to jtreg and add them
30 * @run testng MethodReferenceTestFDCCE
31 */
32
33 import org.testng.annotations.Test;
34 import java.lang.reflect.Array;
35
36 import static org.testng.Assert.assertEquals;
37 import static org.testng.Assert.assertTrue;
38 import static org.testng.Assert.fail;
39
40 /**
41 * Method references and raw types.
42 * @author Robert Field
43 */
44
45 @Test
46 @SuppressWarnings({"rawtypes", "unchecked"})
47 public class MethodReferenceTestFDCCE {
48
49 static void assertCCE(Throwable t) {
50 assertEquals(t.getClass().getName(), "java.lang.ClassCastException");
51 }
52
53 interface Pred<T> { boolean accept(T x); }
54
55 interface Ps { boolean accept(short x); }
56
57 interface Oo { Object too(int x); }
58
59 interface Reto<T> { T m(); }
60
61 class A {}
62 class B extends A {}
63
64 static boolean isMinor(int x) {
65 return x < 18;
66 }
67
68 static boolean tst(A x) {
69 return true;
70 }
71
72 static Object otst(Object x) {
73 return x;
74 }
75
76 static boolean stst(Short x) {
77 return x < 18;
78 }
79
80 static short ritst() {
81 return 123;
82 }
83
84 public void testMethodReferenceFDPrim1() {
85 Pred<Byte> p = MethodReferenceTestFDCCE::isMinor;
86 Pred p2 = p;
87 assertTrue(p2.accept((Byte)(byte)15));
88 }
89
90 public void testMethodReferenceFDPrim2() {
91 Pred<Byte> p = MethodReferenceTestFDCCE::isMinor;
92 Pred p2 = p;
93 assertTrue(p2.accept((byte)15));
94 }
95
96 public void testMethodReferenceFDPrimICCE() {
97 Pred<Byte> p = MethodReferenceTestFDCCE::isMinor;
98 Pred p2 = p;
99 try {
100 p2.accept(15); // should throw CCE
101 fail("Exception should have been thrown");
102 } catch (Throwable t) {
103 assertCCE(t);
104 }
105 }
106
107 public void testMethodReferenceFDPrimOCCE() {
108 Pred<Byte> p = MethodReferenceTestFDCCE::isMinor;
109 Pred p2 = p;
110 try {
111 p2.accept(new Object()); // should throw CCE
112 fail("Exception should have been thrown");
113 } catch (Throwable t) {
114 assertCCE(t);
115 }
116 }
117
118 public void testMethodReferenceFDRef() {
119 Pred<B> p = MethodReferenceTestFDCCE::tst;
120 Pred p2 = p;
121 assertTrue(p2.accept(new B()));
122 }
123
124 public void testMethodReferenceFDRefCCE() {
125 Pred<B> p = MethodReferenceTestFDCCE::tst;
126 Pred p2 = p;
127 try {
128 p2.accept(new A()); // should throw CCE
129 fail("Exception should have been thrown");
130 } catch (Throwable t) {
131 assertCCE(t);
132 }
133 }
134
135 public void testMethodReferenceFDPrimPrim() {
136 Ps p = MethodReferenceTestFDCCE::isMinor;
137 assertTrue(p.accept((byte)15));
138 }
139
140 public void testMethodReferenceFDPrimBoxed() {
141 Ps p = MethodReferenceTestFDCCE::stst;
142 assertTrue(p.accept((byte)15));
143 }
144
145 public void testMethodReferenceFDPrimRef() {
146 Oo p = MethodReferenceTestFDCCE::otst;
147 assertEquals(p.too(15).getClass().getName(), "java.lang.Integer");
148 }
149
150 public void testMethodReferenceFDRet1() {
151 Reto<Short> p = MethodReferenceTestFDCCE::ritst;
152 assertEquals(p.m(), (Short)(short)123);
153 }
154 }

mercurial