Mercurial > hg > Members > kono > jpf-core
comparison src/tests/gov/nasa/jpf/test/java/lang/reflect/MethodTest.java @ 0:61d41facf527
initial v8 import (history reset)
author | Peter Mehlitz <Peter.C.Mehlitz@nasa.gov> |
---|---|
date | Fri, 23 Jan 2015 10:14:01 -0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:61d41facf527 |
---|---|
1 /* | |
2 * Copyright (C) 2014, United States Government, as represented by the | |
3 * Administrator of the National Aeronautics and Space Administration. | |
4 * All rights reserved. | |
5 * | |
6 * The Java Pathfinder core (jpf-core) platform is licensed under the | |
7 * Apache License, Version 2.0 (the "License"); you may not use this file except | |
8 * in compliance with the License. You may obtain a copy of the License at | |
9 * | |
10 * http://www.apache.org/licenses/LICENSE-2.0. | |
11 * | |
12 * Unless required by applicable law or agreed to in writing, software | |
13 * distributed under the License is distributed on an "AS IS" BASIS, | |
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
15 * See the License for the specific language governing permissions and | |
16 * limitations under the License. | |
17 */ | |
18 | |
19 package gov.nasa.jpf.test.java.lang.reflect; | |
20 | |
21 import gov.nasa.jpf.util.test.TestJPF; | |
22 import java.lang.reflect.Method; | |
23 import org.junit.Test; | |
24 | |
25 public class MethodTest extends TestJPF { | |
26 | |
27 public static void main (String[] args){ | |
28 runTestsOfThisClass(args); | |
29 } | |
30 | |
31 @Test | |
32 public void equalsTest () throws SecurityException, NoSuchMethodException{ | |
33 if (verifyNoPropertyViolation()){ | |
34 Method m1 = MethodTest.class.getMethod("equalsTest", new Class[0]); | |
35 Method m2 = MethodTest.class.getMethod("equalsTest", new Class[0]); | |
36 assertTrue(m1.equals(m2)); | |
37 assertFalse(m1 == m2); | |
38 } | |
39 } | |
40 | |
41 public void testIsVarArg1s (Class<?>... argTypes){ | |
42 } | |
43 | |
44 public void testIsVarArgs2 (Class<?>[] argTypes){ | |
45 } | |
46 | |
47 @Test | |
48 public void isVarArgsTest () throws SecurityException, NoSuchMethodException{ | |
49 if (verifyNoPropertyViolation()){ | |
50 for (Method m : MethodTest.class.getDeclaredMethods()){ | |
51 if (m.getName().equals("testIsVarArg1s")) | |
52 assertTrue(m.isVarArgs()); | |
53 else if (m.getName().equals("testIsVarArg1s")) { | |
54 assertFalse(m.isVarArgs()); | |
55 } | |
56 } | |
57 } | |
58 } | |
59 | |
60 @Test | |
61 public void hashCodeTest () throws SecurityException, NoSuchMethodException{ | |
62 if (verifyNoPropertyViolation()){ | |
63 Method m1 = MethodTest.class.getMethod("hashCodeTest", new Class[0]); | |
64 Method m2 = MethodTest.class.getMethod("hashCodeTest", new Class[0]); | |
65 Method m3 = MethodTest.class.getMethod("equalsTest", new Class[0]); | |
66 assertTrue(m1.equals(m2)); | |
67 assertTrue(m1.hashCode() == m2.hashCode()); | |
68 assertFalse(m1.hashCode() == m3.hashCode()); | |
69 } | |
70 } | |
71 | |
72 public static class A { | |
73 public A foo (int a){ | |
74 return new A(); | |
75 } | |
76 } | |
77 | |
78 public static class B extends A { | |
79 @Override | |
80 public B foo (int x){ | |
81 return new B(); | |
82 } | |
83 } | |
84 | |
85 @Test | |
86 public void isBridgeTest (){ | |
87 if (verifyNoPropertyViolation()){ | |
88 assertFalse(B.class.getDeclaredMethods()[0].isBridge()); | |
89 assertTrue(B.class.getDeclaredMethods()[1].isBridge()); | |
90 } | |
91 } | |
92 | |
93 //--- aux | |
94 | |
95 void recordSeen (boolean[] seen, String[] expected, Method m){ | |
96 String mname = m.toString(); | |
97 for (int i=0; i<expected.length; i++){ | |
98 if (expected[i].equals(mname)){ | |
99 seen[i] = true; | |
100 } | |
101 } | |
102 } | |
103 | |
104 boolean checkSeen(boolean[] seen, String[] expected){ | |
105 for (int i=0; i<expected.length; i++){ | |
106 if (!seen[i]){ | |
107 System.out.println("NOT seen: " + expected[i]); | |
108 return false; | |
109 } | |
110 } | |
111 return true; | |
112 } | |
113 | |
114 //------------ getMethods() on interfaces | |
115 interface I1 { | |
116 void i1(); | |
117 } | |
118 | |
119 interface I2 extends I1 { | |
120 void i2(); | |
121 } | |
122 | |
123 @Test | |
124 public void testGetMethodsOnIfc(){ | |
125 if (verifyNoPropertyViolation()){ | |
126 String[] expected = { | |
127 "public abstract void gov.nasa.jpf.test.java.lang.reflect.MethodTest$I2.i2()", | |
128 "public abstract void gov.nasa.jpf.test.java.lang.reflect.MethodTest$I1.i1()" | |
129 }; | |
130 boolean[] seen = new boolean[expected.length]; | |
131 | |
132 Method[] methods = I2.class.getMethods(); | |
133 | |
134 for (Method m : methods){ | |
135 System.out.println(m); | |
136 recordSeen(seen, expected, m); | |
137 } | |
138 assertTrue(methods.length == expected.length); | |
139 //assertTrue(checkSeen(seen, expected)); | |
140 } | |
141 } | |
142 | |
143 | |
144 //------------ getMethods() on classes | |
145 public static class C extends B { | |
146 static { | |
147 System.out.println("C.<clinit>"); | |
148 } | |
149 | |
150 // non-public method | |
151 void nope(){ | |
152 } | |
153 | |
154 // ctor | |
155 C (){ | |
156 System.out.println("C.<init>"); | |
157 } | |
158 } | |
159 | |
160 @Test | |
161 public void testGetMethodsOnClass(){ | |
162 if (verifyNoPropertyViolation()){ | |
163 String[] expected = { | |
164 "public native int java.lang.Object.hashCode()", | |
165 "public final native void java.lang.Object.notify()", | |
166 "public final native void java.lang.Object.notifyAll()", | |
167 "public java.lang.String java.lang.Object.toString()", | |
168 "public final native java.lang.Class java.lang.Object.getClass()", | |
169 "public final native void java.lang.Object.wait(long)", | |
170 "public final void java.lang.Object.wait(long,int)", | |
171 "public gov.nasa.jpf.test.java.lang.reflect.MethodTest$B gov.nasa.jpf.test.java.lang.reflect.MethodTest$B.foo(int)", | |
172 "public boolean java.lang.Object.equals(java.lang.Object)", | |
173 "public volatile gov.nasa.jpf.test.java.lang.reflect.MethodTest$A gov.nasa.jpf.test.java.lang.reflect.MethodTest$B.foo(int)", | |
174 "public final void java.lang.Object.wait()" | |
175 }; | |
176 boolean[] seen = new boolean[expected.length]; | |
177 | |
178 Method[] methods = C.class.getMethods(); | |
179 for (Method m : methods){ | |
180 System.out.println(m); | |
181 } | |
182 } | |
183 } | |
184 } |