test/testlibrary_tests/AssertsTest.java

Tue, 08 Aug 2017 15:57:29 +0800

author
aoqi
date
Tue, 08 Aug 2017 15:57:29 +0800
changeset 6876
710a3c8b516e
parent 5782
5b1191bf0b4b
parent 0
f90c822e73f8
permissions
-rw-r--r--

merge

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 */
aoqi@0 23
aoqi@0 24 import static com.oracle.java.testlibrary.Asserts.*;
aoqi@0 25
aoqi@0 26 /* @test
aoqi@0 27 * @summary Tests the different assertions in the Assert class
aoqi@0 28 * @library /testlibrary
aoqi@0 29 */
aoqi@0 30 public class AssertsTest {
aoqi@0 31 private static class Foo implements Comparable<Foo> {
aoqi@0 32 final int id;
aoqi@0 33 public Foo(int id) {
aoqi@0 34 this.id = id;
aoqi@0 35 }
aoqi@0 36
aoqi@0 37 public int compareTo(Foo f) {
aoqi@0 38 return new Integer(id).compareTo(new Integer(f.id));
aoqi@0 39 }
aoqi@0 40 }
aoqi@0 41
aoqi@0 42 public static void main(String[] args) throws Exception {
aoqi@0 43 testLessThan();
aoqi@0 44 testLessThanOrEqual();
aoqi@0 45 testEquals();
aoqi@0 46 testGreaterThanOrEqual();
aoqi@0 47 testGreaterThan();
aoqi@0 48 testNotEquals();
aoqi@0 49 testNull();
aoqi@0 50 testNotNull();
aoqi@0 51 testTrue();
aoqi@0 52 testFalse();
aoqi@0 53 }
aoqi@0 54
aoqi@0 55 private static void testLessThan() throws Exception {
aoqi@0 56 expectPass(Assertion.LT, 1, 2);
aoqi@0 57
aoqi@0 58 expectFail(Assertion.LT, 2, 2);
aoqi@0 59 expectFail(Assertion.LT, 2, 1);
aoqi@0 60 expectFail(Assertion.LT, null, 2);
aoqi@0 61 expectFail(Assertion.LT, 2, null);
aoqi@0 62 }
aoqi@0 63
aoqi@0 64 private static void testLessThanOrEqual() throws Exception {
aoqi@0 65 expectPass(Assertion.LTE, 1, 2);
aoqi@0 66 expectPass(Assertion.LTE, 2, 2);
aoqi@0 67
aoqi@0 68 expectFail(Assertion.LTE, 3, 2);
aoqi@0 69 expectFail(Assertion.LTE, null, 2);
aoqi@0 70 expectFail(Assertion.LTE, 2, null);
aoqi@0 71 }
aoqi@0 72
aoqi@0 73 private static void testEquals() throws Exception {
aoqi@0 74 expectPass(Assertion.EQ, 1, 1);
aoqi@0 75 expectPass(Assertion.EQ, null, null);
aoqi@0 76
aoqi@0 77 Foo f1 = new Foo(1);
aoqi@0 78 expectPass(Assertion.EQ, f1, f1);
aoqi@0 79
aoqi@0 80 Foo f2 = new Foo(1);
aoqi@0 81 expectFail(Assertion.EQ, f1, f2);
aoqi@0 82 expectFail(Assertion.LTE, null, 2);
aoqi@0 83 expectFail(Assertion.LTE, 2, null);
aoqi@0 84 }
aoqi@0 85
aoqi@0 86 private static void testGreaterThanOrEqual() throws Exception {
aoqi@0 87 expectPass(Assertion.GTE, 1, 1);
aoqi@0 88 expectPass(Assertion.GTE, 2, 1);
aoqi@0 89
aoqi@0 90 expectFail(Assertion.GTE, 1, 2);
aoqi@0 91 expectFail(Assertion.GTE, null, 2);
aoqi@0 92 expectFail(Assertion.GTE, 2, null);
aoqi@0 93 }
aoqi@0 94
aoqi@0 95 private static void testGreaterThan() throws Exception {
aoqi@0 96 expectPass(Assertion.GT, 2, 1);
aoqi@0 97
aoqi@0 98 expectFail(Assertion.GT, 1, 1);
aoqi@0 99 expectFail(Assertion.GT, 1, 2);
aoqi@0 100 expectFail(Assertion.GT, null, 2);
aoqi@0 101 expectFail(Assertion.GT, 2, null);
aoqi@0 102 }
aoqi@0 103
aoqi@0 104 private static void testNotEquals() throws Exception {
aoqi@0 105 expectPass(Assertion.NE, null, 1);
aoqi@0 106 expectPass(Assertion.NE, 1, null);
aoqi@0 107
aoqi@0 108 Foo f1 = new Foo(1);
aoqi@0 109 Foo f2 = new Foo(1);
aoqi@0 110 expectPass(Assertion.NE, f1, f2);
aoqi@0 111
aoqi@0 112 expectFail(Assertion.NE, null, null);
aoqi@0 113 expectFail(Assertion.NE, f1, f1);
aoqi@0 114 expectFail(Assertion.NE, 1, 1);
aoqi@0 115 }
aoqi@0 116
aoqi@0 117 private static void testNull() throws Exception {
aoqi@0 118 expectPass(Assertion.NULL, null);
aoqi@0 119
aoqi@0 120 expectFail(Assertion.NULL, 1);
aoqi@0 121 }
aoqi@0 122
aoqi@0 123 private static void testNotNull() throws Exception {
aoqi@0 124 expectPass(Assertion.NOTNULL, 1);
aoqi@0 125
aoqi@0 126 expectFail(Assertion.NOTNULL, null);
aoqi@0 127 }
aoqi@0 128
aoqi@0 129 private static void testTrue() throws Exception {
aoqi@0 130 expectPass(Assertion.TRUE, true);
aoqi@0 131
aoqi@0 132 expectFail(Assertion.TRUE, false);
aoqi@0 133 }
aoqi@0 134
aoqi@0 135 private static void testFalse() throws Exception {
aoqi@0 136 expectPass(Assertion.FALSE, false);
aoqi@0 137
aoqi@0 138 expectFail(Assertion.FALSE, true);
aoqi@0 139 }
aoqi@0 140
aoqi@0 141 private static <T extends Comparable<T>> void expectPass(Assertion assertion, T ... args)
aoqi@0 142 throws Exception {
aoqi@0 143 Assertion.run(assertion, args);
aoqi@0 144 }
aoqi@0 145
aoqi@0 146 private static <T extends Comparable<T>> void expectFail(Assertion assertion, T ... args)
aoqi@0 147 throws Exception {
aoqi@0 148 try {
aoqi@0 149 Assertion.run(assertion, args);
aoqi@0 150 } catch (RuntimeException e) {
aoqi@0 151 return;
aoqi@0 152 }
aoqi@0 153 throw new Exception("Expected " + Assertion.format(assertion, (Object[]) args) +
aoqi@0 154 " to throw a RuntimeException");
aoqi@0 155 }
aoqi@0 156
aoqi@0 157 }
aoqi@0 158
aoqi@0 159 enum Assertion {
aoqi@0 160 LT, LTE, EQ, GTE, GT, NE, NULL, NOTNULL, FALSE, TRUE;
aoqi@0 161
aoqi@0 162 public static <T extends Comparable<T>> void run(Assertion assertion, T ... args) {
aoqi@0 163 String msg = "Expected " + format(assertion, args) + " to pass";
aoqi@0 164 switch (assertion) {
aoqi@0 165 case LT:
aoqi@0 166 assertLessThan(args[0], args[1], msg);
aoqi@0 167 break;
aoqi@0 168 case LTE:
aoqi@0 169 assertLessThanOrEqual(args[0], args[1], msg);
aoqi@0 170 break;
aoqi@0 171 case EQ:
aoqi@0 172 assertEquals(args[0], args[1], msg);
aoqi@0 173 break;
aoqi@0 174 case GTE:
aoqi@0 175 assertGreaterThanOrEqual(args[0], args[1], msg);
aoqi@0 176 break;
aoqi@0 177 case GT:
aoqi@0 178 assertGreaterThan(args[0], args[1], msg);
aoqi@0 179 break;
aoqi@0 180 case NE:
aoqi@0 181 assertNotEquals(args[0], args[1], msg);
aoqi@0 182 break;
aoqi@0 183 case NULL:
aoqi@0 184 assertNull(args == null ? args : args[0], msg);
aoqi@0 185 break;
aoqi@0 186 case NOTNULL:
aoqi@0 187 assertNotNull(args == null ? args : args[0], msg);
aoqi@0 188 break;
aoqi@0 189 case FALSE:
aoqi@0 190 assertFalse((Boolean) args[0], msg);
aoqi@0 191 break;
aoqi@0 192 case TRUE:
aoqi@0 193 assertTrue((Boolean) args[0], msg);
aoqi@0 194 break;
aoqi@0 195 default:
aoqi@0 196 // do nothing
aoqi@0 197 }
aoqi@0 198 }
aoqi@0 199
aoqi@0 200 public static String format(Assertion assertion, Object ... args) {
aoqi@0 201 switch (assertion) {
aoqi@0 202 case LT:
aoqi@0 203 return asString("assertLessThan", args);
aoqi@0 204 case LTE:
aoqi@0 205 return asString("assertLessThanOrEqual", args);
aoqi@0 206 case EQ:
aoqi@0 207 return asString("assertEquals", args);
aoqi@0 208 case GTE:
aoqi@0 209 return asString("assertGreaterThanOrEquals", args);
aoqi@0 210 case GT:
aoqi@0 211 return asString("assertGreaterThan", args);
aoqi@0 212 case NE:
aoqi@0 213 return asString("assertNotEquals", args);
aoqi@0 214 case NULL:
aoqi@0 215 return asString("assertNull", args);
aoqi@0 216 case NOTNULL:
aoqi@0 217 return asString("assertNotNull", args);
aoqi@0 218 case FALSE:
aoqi@0 219 return asString("assertFalse", args);
aoqi@0 220 case TRUE:
aoqi@0 221 return asString("assertTrue", args);
aoqi@0 222 default:
aoqi@0 223 return "";
aoqi@0 224 }
aoqi@0 225 }
aoqi@0 226
aoqi@0 227 private static String asString(String assertion, Object ... args) {
aoqi@0 228 if (args == null) {
aoqi@0 229 return String.format("%s(null)", assertion);
aoqi@0 230 }
aoqi@0 231 if (args.length == 1) {
aoqi@0 232 return String.format("%s(%s)", assertion, args[0]);
aoqi@0 233 } else {
aoqi@0 234 return String.format("%s(%s, %s)", assertion, args[0], args[1]);
aoqi@0 235 }
aoqi@0 236 }
aoqi@0 237 }

mercurial