xref: /aosp_15_r20/cts/tools/vm-tests-tf/src/dot/junit/DxAbstractMain.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 public class DxAbstractMain {
20*b7c941bbSAndroid Build Coastguard Worker 
21*b7c941bbSAndroid Build Coastguard Worker     /* NOTE: Because of how tests are generated, this is replicated between
22*b7c941bbSAndroid Build Coastguard Worker      *       this class and DxTestCase.
23*b7c941bbSAndroid Build Coastguard Worker      */
24*b7c941bbSAndroid Build Coastguard Worker 
checkError(Class<?> expectedErrorClass, Throwable thrown, boolean in_invocation_exc)25*b7c941bbSAndroid Build Coastguard Worker     private static void checkError(Class<?> expectedErrorClass, Throwable thrown,
26*b7c941bbSAndroid Build Coastguard Worker                                    boolean in_invocation_exc) {
27*b7c941bbSAndroid Build Coastguard Worker         if (expectedErrorClass != null && thrown == null) {
28*b7c941bbSAndroid Build Coastguard Worker             fail("Expected error of type " + expectedErrorClass, null);
29*b7c941bbSAndroid Build Coastguard Worker         } else if (expectedErrorClass == null && thrown != null) {
30*b7c941bbSAndroid Build Coastguard Worker             fail("Unexpected error " + thrown, thrown);
31*b7c941bbSAndroid Build Coastguard Worker         } else if (expectedErrorClass != null && thrown != null) {
32*b7c941bbSAndroid Build Coastguard Worker             if (in_invocation_exc) {
33*b7c941bbSAndroid Build Coastguard Worker                 if (!(thrown instanceof java.lang.reflect.InvocationTargetException)) {
34*b7c941bbSAndroid Build Coastguard Worker                     fail("Expected invocation target exception, but got " + thrown, thrown);
35*b7c941bbSAndroid Build Coastguard Worker                 }
36*b7c941bbSAndroid Build Coastguard Worker                 thrown = thrown.getCause();
37*b7c941bbSAndroid Build Coastguard Worker             }
38*b7c941bbSAndroid Build Coastguard Worker             if (!expectedErrorClass.equals(thrown.getClass())) {
39*b7c941bbSAndroid Build Coastguard Worker                 fail("Expected error of type " + expectedErrorClass + ", but got " +
40*b7c941bbSAndroid Build Coastguard Worker                          thrown.getClass(), thrown);
41*b7c941bbSAndroid Build Coastguard Worker             }
42*b7c941bbSAndroid Build Coastguard Worker         }
43*b7c941bbSAndroid Build Coastguard Worker     }
44*b7c941bbSAndroid Build Coastguard Worker 
45*b7c941bbSAndroid Build Coastguard Worker     /**
46*b7c941bbSAndroid Build Coastguard Worker      * Try to load the class with the given name, and check for the expected error.
47*b7c941bbSAndroid Build Coastguard Worker      */
load(String className, Class<?> expectedErrorClass)48*b7c941bbSAndroid Build Coastguard Worker     public static Class<?> load(String className, Class<?> expectedErrorClass) {
49*b7c941bbSAndroid Build Coastguard Worker         Class<?> c;
50*b7c941bbSAndroid Build Coastguard Worker         try {
51*b7c941bbSAndroid Build Coastguard Worker             c = Class.forName(className);
52*b7c941bbSAndroid Build Coastguard Worker         } catch (Throwable t) {
53*b7c941bbSAndroid Build Coastguard Worker             if (expectedErrorClass != null) {
54*b7c941bbSAndroid Build Coastguard Worker                 checkError(expectedErrorClass, t, false);
55*b7c941bbSAndroid Build Coastguard Worker             } else {
56*b7c941bbSAndroid Build Coastguard Worker                 fail("Could not load class " + className, t);
57*b7c941bbSAndroid Build Coastguard Worker             }
58*b7c941bbSAndroid Build Coastguard Worker             return null;
59*b7c941bbSAndroid Build Coastguard Worker         }
60*b7c941bbSAndroid Build Coastguard Worker         checkError(expectedErrorClass, null, false);
61*b7c941bbSAndroid Build Coastguard Worker         return c;
62*b7c941bbSAndroid Build Coastguard Worker     }
63*b7c941bbSAndroid Build Coastguard Worker 
64*b7c941bbSAndroid Build Coastguard Worker     /**
65*b7c941bbSAndroid Build Coastguard Worker      * Try to load the class with the given name, find the "run" method and run it.
66*b7c941bbSAndroid Build Coastguard Worker      * If expectedErrorClass is not null, check for an exception of that class.
67*b7c941bbSAndroid Build Coastguard Worker      */
loadAndRun(String className, boolean isStatic, boolean wrapped, Class<?> expectedErrorClass, Object... args)68*b7c941bbSAndroid Build Coastguard Worker     public static void loadAndRun(String className, boolean isStatic, boolean wrapped,
69*b7c941bbSAndroid Build Coastguard Worker                                   Class<?> expectedErrorClass, Object... args) {
70*b7c941bbSAndroid Build Coastguard Worker         Class<?> c = load(className, null);
71*b7c941bbSAndroid Build Coastguard Worker 
72*b7c941bbSAndroid Build Coastguard Worker         java.lang.reflect.Method method = null;
73*b7c941bbSAndroid Build Coastguard Worker         // We expect only ever one declared method named run, but don't know the arguments. So
74*b7c941bbSAndroid Build Coastguard Worker         // search for one.
75*b7c941bbSAndroid Build Coastguard Worker         for (java.lang.reflect.Method m : c.getDeclaredMethods()) {
76*b7c941bbSAndroid Build Coastguard Worker             if (m.getName().equals("run")) {
77*b7c941bbSAndroid Build Coastguard Worker                 method = m;
78*b7c941bbSAndroid Build Coastguard Worker                 break;
79*b7c941bbSAndroid Build Coastguard Worker             }
80*b7c941bbSAndroid Build Coastguard Worker         }
81*b7c941bbSAndroid Build Coastguard Worker         if (method == null) {
82*b7c941bbSAndroid Build Coastguard Worker             fail("Could not find method 'run'", null);
83*b7c941bbSAndroid Build Coastguard Worker         }
84*b7c941bbSAndroid Build Coastguard Worker 
85*b7c941bbSAndroid Build Coastguard Worker         Object receiver = null;
86*b7c941bbSAndroid Build Coastguard Worker         if (!isStatic) {
87*b7c941bbSAndroid Build Coastguard Worker             try {
88*b7c941bbSAndroid Build Coastguard Worker                 receiver = c.newInstance();
89*b7c941bbSAndroid Build Coastguard Worker             } catch (Exception exc) {
90*b7c941bbSAndroid Build Coastguard Worker                 fail("Could not instantiate " + className, exc);
91*b7c941bbSAndroid Build Coastguard Worker             }
92*b7c941bbSAndroid Build Coastguard Worker         }
93*b7c941bbSAndroid Build Coastguard Worker 
94*b7c941bbSAndroid Build Coastguard Worker         try {
95*b7c941bbSAndroid Build Coastguard Worker             method.invoke(receiver, args);
96*b7c941bbSAndroid Build Coastguard Worker         } catch (Throwable t) {
97*b7c941bbSAndroid Build Coastguard Worker             checkError(expectedErrorClass, t, wrapped);
98*b7c941bbSAndroid Build Coastguard Worker             return;
99*b7c941bbSAndroid Build Coastguard Worker         }
100*b7c941bbSAndroid Build Coastguard Worker         checkError(expectedErrorClass, null, false);
101*b7c941bbSAndroid Build Coastguard Worker     }
102*b7c941bbSAndroid Build Coastguard Worker 
loadAndRun(String className, Class<?> expectedErrorClass)103*b7c941bbSAndroid Build Coastguard Worker     public static void loadAndRun(String className, Class<?> expectedErrorClass) {
104*b7c941bbSAndroid Build Coastguard Worker         loadAndRun(className, false, true, expectedErrorClass);
105*b7c941bbSAndroid Build Coastguard Worker     }
106*b7c941bbSAndroid Build Coastguard Worker 
loadAndRun(String className, Class<?> expectedErrorClass, Object... args)107*b7c941bbSAndroid Build Coastguard Worker     public static void loadAndRun(String className, Class<?> expectedErrorClass, Object... args) {
108*b7c941bbSAndroid Build Coastguard Worker         loadAndRun(className, false, true, expectedErrorClass, args);
109*b7c941bbSAndroid Build Coastguard Worker     }
110*b7c941bbSAndroid Build Coastguard Worker 
assertEquals(int expected, int actual)111*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(int expected, int actual) {
112*b7c941bbSAndroid Build Coastguard Worker         if (expected != actual)
113*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException(
114*b7c941bbSAndroid Build Coastguard Worker                     "not equals. Expected " + expected + " actual " + actual);
115*b7c941bbSAndroid Build Coastguard Worker     }
116*b7c941bbSAndroid Build Coastguard Worker 
assertEquals(String message, int expected, int actual)117*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(String message, int expected, int actual) {
118*b7c941bbSAndroid Build Coastguard Worker         if (expected != actual)
119*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException(
120*b7c941bbSAndroid Build Coastguard Worker                     "not equals: " + message + " Expected " + expected + " actual " + actual);
121*b7c941bbSAndroid Build Coastguard Worker     }
122*b7c941bbSAndroid Build Coastguard Worker 
assertEquals(long expected, long actual)123*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(long expected, long actual) {
124*b7c941bbSAndroid Build Coastguard Worker         if (expected != actual)
125*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException(
126*b7c941bbSAndroid Build Coastguard Worker                     "not equals. Expected " + expected + " actual " + actual);
127*b7c941bbSAndroid Build Coastguard Worker     }
128*b7c941bbSAndroid Build Coastguard Worker 
assertEquals(double expected, double actual, double delta)129*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(double expected, double actual, double delta) {
130*b7c941bbSAndroid Build Coastguard Worker         if (!(Math.abs(expected - actual) <= delta))
131*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException("not within delta");
132*b7c941bbSAndroid Build Coastguard Worker     }
133*b7c941bbSAndroid Build Coastguard Worker 
assertEquals(Object expected, Object actual)134*b7c941bbSAndroid Build Coastguard Worker     static public void assertEquals(Object expected, Object actual) {
135*b7c941bbSAndroid Build Coastguard Worker         if (expected == null && actual == null)
136*b7c941bbSAndroid Build Coastguard Worker             return;
137*b7c941bbSAndroid Build Coastguard Worker         if (expected != null && expected.equals(actual))
138*b7c941bbSAndroid Build Coastguard Worker             return;
139*b7c941bbSAndroid Build Coastguard Worker         throw new AssertionFailedException("not the same: " + expected + " vs " + actual);
140*b7c941bbSAndroid Build Coastguard Worker     }
141*b7c941bbSAndroid Build Coastguard Worker 
assertTrue(boolean condition)142*b7c941bbSAndroid Build Coastguard Worker     static public void assertTrue(boolean condition) {
143*b7c941bbSAndroid Build Coastguard Worker         if (!condition)
144*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException("condition was false");
145*b7c941bbSAndroid Build Coastguard Worker     }
146*b7c941bbSAndroid Build Coastguard Worker 
assertFalse(boolean condition)147*b7c941bbSAndroid Build Coastguard Worker     static public void assertFalse(boolean condition) {
148*b7c941bbSAndroid Build Coastguard Worker         if (condition)
149*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException("condition was true");
150*b7c941bbSAndroid Build Coastguard Worker     }
151*b7c941bbSAndroid Build Coastguard Worker 
assertNotNull(Object object)152*b7c941bbSAndroid Build Coastguard Worker     static public void assertNotNull(Object object) {
153*b7c941bbSAndroid Build Coastguard Worker         if (object == null)
154*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException("object was null");
155*b7c941bbSAndroid Build Coastguard Worker     }
156*b7c941bbSAndroid Build Coastguard Worker 
assertNull(Object object)157*b7c941bbSAndroid Build Coastguard Worker     static public void assertNull(Object object) {
158*b7c941bbSAndroid Build Coastguard Worker         if (object != null)
159*b7c941bbSAndroid Build Coastguard Worker             throw new AssertionFailedException("object was not null");
160*b7c941bbSAndroid Build Coastguard Worker     }
161*b7c941bbSAndroid Build Coastguard Worker 
fail(String message)162*b7c941bbSAndroid Build Coastguard Worker     static public void fail(String message) {
163*b7c941bbSAndroid Build Coastguard Worker         fail(message, null);
164*b7c941bbSAndroid Build Coastguard Worker     }
165*b7c941bbSAndroid Build Coastguard Worker 
fail(String message, Throwable cause)166*b7c941bbSAndroid Build Coastguard Worker     static public void fail(String message, Throwable cause) {
167*b7c941bbSAndroid Build Coastguard Worker         throw new AssertionFailedException(message, cause);
168*b7c941bbSAndroid Build Coastguard Worker     }
169*b7c941bbSAndroid Build Coastguard Worker }
170