xref: /aosp_15_r20/cts/tools/vm-tests-tf/src/dot/junit/DxTestCase.java (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker /*
2*b7c941bbSAndroid Build Coastguard Worker  * Copyright (C) 2008 The Android Open Source Project
3*b7c941bbSAndroid Build Coastguard Worker  *
4*b7c941bbSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*b7c941bbSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*b7c941bbSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*b7c941bbSAndroid Build Coastguard Worker  *
8*b7c941bbSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*b7c941bbSAndroid Build Coastguard Worker  *
10*b7c941bbSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*b7c941bbSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*b7c941bbSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b7c941bbSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*b7c941bbSAndroid Build Coastguard Worker  * limitations under the License.
15*b7c941bbSAndroid Build Coastguard Worker  */
16*b7c941bbSAndroid Build Coastguard Worker 
17*b7c941bbSAndroid Build Coastguard Worker package dot.junit;
18*b7c941bbSAndroid Build Coastguard Worker 
19*b7c941bbSAndroid Build Coastguard Worker import junit.framework.TestCase;
20*b7c941bbSAndroid Build Coastguard Worker 
21*b7c941bbSAndroid Build Coastguard Worker public class DxTestCase extends TestCase {
22*b7c941bbSAndroid Build Coastguard Worker 
checkError(Class<?> expectedErrorClass, Throwable thrown, boolean in_invocation_exc)23*b7c941bbSAndroid Build Coastguard Worker     private static void checkError(Class<?> expectedErrorClass, Throwable thrown,
24*b7c941bbSAndroid Build Coastguard Worker                                    boolean in_invocation_exc) {
25*b7c941bbSAndroid Build Coastguard Worker         if (expectedErrorClass != null && thrown == null) {
26*b7c941bbSAndroid Build Coastguard Worker             fail("Expected error of type " + expectedErrorClass);
27*b7c941bbSAndroid Build Coastguard Worker         } else if (expectedErrorClass == null && thrown != null) {
28*b7c941bbSAndroid Build Coastguard Worker             fail("Unexpected error " + thrown);
29*b7c941bbSAndroid Build Coastguard Worker         } else if (expectedErrorClass != null && thrown != null) {
30*b7c941bbSAndroid Build Coastguard Worker             if (in_invocation_exc) {
31*b7c941bbSAndroid Build Coastguard Worker                 if (!(thrown instanceof java.lang.reflect.InvocationTargetException)) {
32*b7c941bbSAndroid Build Coastguard Worker                     fail("Expected invocation target exception, but got " + thrown);
33*b7c941bbSAndroid Build Coastguard Worker                 }
34*b7c941bbSAndroid Build Coastguard Worker                 thrown = thrown.getCause();
35*b7c941bbSAndroid Build Coastguard Worker             }
36*b7c941bbSAndroid Build Coastguard Worker             if (!expectedErrorClass.equals(thrown.getClass())) {
37*b7c941bbSAndroid Build Coastguard Worker                 fail("Expected error of type " + expectedErrorClass + ", but got " +
38*b7c941bbSAndroid Build Coastguard Worker                      thrown.getClass());
39*b7c941bbSAndroid Build Coastguard Worker             }
40*b7c941bbSAndroid Build Coastguard Worker         }
41*b7c941bbSAndroid Build Coastguard Worker     }
42*b7c941bbSAndroid Build Coastguard Worker 
43*b7c941bbSAndroid Build Coastguard Worker     /**
44*b7c941bbSAndroid Build Coastguard Worker      * Try to load the class with the given name, and check for the expected error.
45*b7c941bbSAndroid Build Coastguard Worker      */
load(String className, Class<?> expectedErrorClass)46*b7c941bbSAndroid Build Coastguard Worker     public static Class<?> load(String className, Class<?> expectedErrorClass) {
47*b7c941bbSAndroid Build Coastguard Worker         try {
48*b7c941bbSAndroid Build Coastguard Worker             Class<?> c = Class.forName(className);
49*b7c941bbSAndroid Build Coastguard Worker             checkError(expectedErrorClass, null, false);
50*b7c941bbSAndroid Build Coastguard Worker             return c;
51*b7c941bbSAndroid Build Coastguard Worker         } catch (Throwable t) {
52*b7c941bbSAndroid Build Coastguard Worker             if (expectedErrorClass != null) {
53*b7c941bbSAndroid Build Coastguard Worker                 checkError(expectedErrorClass, t, false);
54*b7c941bbSAndroid Build Coastguard Worker             } else {
55*b7c941bbSAndroid Build Coastguard Worker                 fail("Could not load class " + className + ": " + t);
56*b7c941bbSAndroid Build Coastguard Worker             }
57*b7c941bbSAndroid Build Coastguard Worker             return null;
58*b7c941bbSAndroid Build Coastguard Worker         }
59*b7c941bbSAndroid Build Coastguard Worker     }
60*b7c941bbSAndroid Build Coastguard Worker 
61*b7c941bbSAndroid Build Coastguard Worker     /**
62*b7c941bbSAndroid Build Coastguard Worker      * Try to load the class with the given name, find the "run" method and run it.
63*b7c941bbSAndroid Build Coastguard Worker      * If expectedErrorClass is not null, check for an exception of that class.
64*b7c941bbSAndroid Build Coastguard Worker      */
loadAndRun(String className, boolean isStatic, boolean wrapped, Class<?> expectedErrorClass, Object... args)65*b7c941bbSAndroid Build Coastguard Worker     public static void loadAndRun(String className, boolean isStatic, boolean wrapped,
66*b7c941bbSAndroid Build Coastguard Worker                                   Class<?> expectedErrorClass, Object... args) {
67*b7c941bbSAndroid Build Coastguard Worker         Class<?> c = load(className, null);
68*b7c941bbSAndroid Build Coastguard Worker 
69*b7c941bbSAndroid Build Coastguard Worker         java.lang.reflect.Method method = null;
70*b7c941bbSAndroid Build Coastguard Worker         // We expect only ever one declared method named run, but don't know the arguments. So
71*b7c941bbSAndroid Build Coastguard Worker         // search for one.
72*b7c941bbSAndroid Build Coastguard Worker         for (java.lang.reflect.Method m : c.getDeclaredMethods()) {
73*b7c941bbSAndroid Build Coastguard Worker             if (m.getName().equals("run")) {
74*b7c941bbSAndroid Build Coastguard Worker                 method = m;
75*b7c941bbSAndroid Build Coastguard Worker                 break;
76*b7c941bbSAndroid Build Coastguard Worker             }
77*b7c941bbSAndroid Build Coastguard Worker         }
78*b7c941bbSAndroid Build Coastguard Worker         if (method == null) {
79*b7c941bbSAndroid Build Coastguard Worker             fail("Could not find method 'run'");
80*b7c941bbSAndroid Build Coastguard Worker         }
81*b7c941bbSAndroid Build Coastguard Worker 
82*b7c941bbSAndroid Build Coastguard Worker         Object receiver = null;
83*b7c941bbSAndroid Build Coastguard Worker         if (!isStatic) {
84*b7c941bbSAndroid Build Coastguard Worker             try {
85*b7c941bbSAndroid Build Coastguard Worker                 receiver = c.newInstance();
86*b7c941bbSAndroid Build Coastguard Worker             } catch (Exception exc) {
87*b7c941bbSAndroid Build Coastguard Worker                 fail("Could not instantiate " + className + ": " + exc.getMessage());
88*b7c941bbSAndroid Build Coastguard Worker             }
89*b7c941bbSAndroid Build Coastguard Worker         }
90*b7c941bbSAndroid Build Coastguard Worker 
91*b7c941bbSAndroid Build Coastguard Worker         try {
92*b7c941bbSAndroid Build Coastguard Worker             method.invoke(receiver, args);
93*b7c941bbSAndroid Build Coastguard Worker             checkError(expectedErrorClass, null, false);
94*b7c941bbSAndroid Build Coastguard Worker         } catch (Throwable t) {
95*b7c941bbSAndroid Build Coastguard Worker             checkError(expectedErrorClass, t, wrapped);
96*b7c941bbSAndroid Build Coastguard Worker         }
97*b7c941bbSAndroid Build Coastguard Worker     }
98*b7c941bbSAndroid Build Coastguard Worker 
loadAndRun(String className, Class<?> expectedErrorClass)99*b7c941bbSAndroid Build Coastguard Worker     public static void loadAndRun(String className, Class<?> expectedErrorClass) {
100*b7c941bbSAndroid Build Coastguard Worker         loadAndRun(className, false, true, expectedErrorClass);
101*b7c941bbSAndroid Build Coastguard Worker     }
102*b7c941bbSAndroid Build Coastguard Worker 
loadAndRun(String className, Class<?> expectedErrorClass, Object... args)103*b7c941bbSAndroid Build Coastguard Worker     public static void loadAndRun(String className, Class<?> expectedErrorClass, Object... args) {
104*b7c941bbSAndroid Build Coastguard Worker         loadAndRun(className, false, true, expectedErrorClass, args);
105*b7c941bbSAndroid Build Coastguard Worker     }
106*b7c941bbSAndroid Build Coastguard Worker 
107*b7c941bbSAndroid Build Coastguard Worker     // omit the "extends TestCase" and uncomment the following methods if you would like to run the tests as rolled-out, separate tests.
108*b7c941bbSAndroid Build Coastguard Worker 
109*b7c941bbSAndroid Build Coastguard Worker /*
110*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(int expected, int actual) {
111*b7c941bbSAndroid Build Coastguard Worker         if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
112*b7c941bbSAndroid Build Coastguard Worker     }
113*b7c941bbSAndroid Build Coastguard Worker 
114*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(long expected, long actual) {
115*b7c941bbSAndroid Build Coastguard Worker         if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
116*b7c941bbSAndroid Build Coastguard Worker     }
117*b7c941bbSAndroid Build Coastguard Worker 
118*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(double expected, double actual, double delta) {
119*b7c941bbSAndroid Build Coastguard Worker         if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
120*b7c941bbSAndroid Build Coastguard Worker     }
121*b7c941bbSAndroid Build Coastguard Worker 
122*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(Object expected, Object actual) {
123*b7c941bbSAndroid Build Coastguard Worker         if (expected == null && actual == null)
124*b7c941bbSAndroid Build Coastguard Worker             return;
125*b7c941bbSAndroid Build Coastguard Worker         if (expected != null && expected.equals(actual))
126*b7c941bbSAndroid Build Coastguard Worker             return;
127*b7c941bbSAndroid Build Coastguard Worker         throw new RuntimeException("AssertionFailedError: not the same");
128*b7c941bbSAndroid Build Coastguard Worker     }
129*b7c941bbSAndroid Build Coastguard Worker 
130*b7c941bbSAndroid Build Coastguard Worker     static public void assertTrue(boolean condition) {
131*b7c941bbSAndroid Build Coastguard Worker         if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
132*b7c941bbSAndroid Build Coastguard Worker     }
133*b7c941bbSAndroid Build Coastguard Worker 
134*b7c941bbSAndroid Build Coastguard Worker     static public void assertFalse(boolean condition) {
135*b7c941bbSAndroid Build Coastguard Worker         if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
136*b7c941bbSAndroid Build Coastguard Worker     }
137*b7c941bbSAndroid Build Coastguard Worker 
138*b7c941bbSAndroid Build Coastguard Worker     static public void assertNotNull(Object object) {
139*b7c941bbSAndroid Build Coastguard Worker         if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
140*b7c941bbSAndroid Build Coastguard Worker     }
141*b7c941bbSAndroid Build Coastguard Worker 
142*b7c941bbSAndroid Build Coastguard Worker     static public void assertNull(Object object) {
143*b7c941bbSAndroid Build Coastguard Worker         if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
144*b7c941bbSAndroid Build Coastguard Worker     }
145*b7c941bbSAndroid Build Coastguard Worker 
146*b7c941bbSAndroid Build Coastguard Worker     static public void fail(String message) {
147*b7c941bbSAndroid Build Coastguard Worker         throw new RuntimeException("AssertionFailedError msg:"+message);
148*b7c941bbSAndroid Build Coastguard Worker     }
149*b7c941bbSAndroid Build Coastguard Worker */
150*b7c941bbSAndroid Build Coastguard Worker 
151*b7c941bbSAndroid Build Coastguard Worker 
152*b7c941bbSAndroid Build Coastguard Worker }
153