blob: 185616a74a562ef54a113a78652b4f6cbe3bc07c [file] [log] [blame]
Aart Bik6e74fa92016-01-25 16:51:32 -08001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Vladimir Markoc2a769d2020-04-21 18:06:43 +010017public class TestCompare {
Aart Bik6e74fa92016-01-25 16:51:32 -080018
Vladimir Markoc2a769d2020-04-21 18:06:43 +010019 /// CHECK-START: void TestCompare.$opt$noinline$testReplaceInputWithItself(int) builder (after)
Vladimir Markoc6b56272016-04-20 18:45:25 +010020 /// CHECK-DAG: <<ArgX:i\d+>> ParameterValue
Vladimir Markoc6b56272016-04-20 18:45:25 +010021 /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0
Vladimir Marko5f846072020-04-09 13:20:11 +010022 /// CHECK-DAG: <<Cmp:i\d+>> Compare [<<ArgX>>,<<Zero>>]
Vladimir Markoc6b56272016-04-20 18:45:25 +010023 /// CHECK-DAG: GreaterThanOrEqual [<<Cmp>>,<<Zero>>]
24
Vladimir Markoc2a769d2020-04-21 18:06:43 +010025 /// CHECK-START: void TestCompare.$opt$noinline$testReplaceInputWithItself(int) instruction_simplifier (after)
Vladimir Markoc6b56272016-04-20 18:45:25 +010026 /// CHECK-DAG: <<ArgX:i\d+>> ParameterValue
27 /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0
28 /// CHECK-DAG: GreaterThanOrEqual [<<ArgX>>,<<Zero>>]
29
30 public static void $opt$noinline$testReplaceInputWithItself(int x) {
Vladimir Markoc2a769d2020-04-21 18:06:43 +010031 // The instruction builder first replaces Integer.compare(x, 0) with Compare HIR
32 // and then the instruction simplifier merges the Compare into the GreaterThanOrEqual.
33 // This is a regression test to check that it is allowed to replace the second
34 // input of the GreaterThanOrEqual, i.e. <<Zero>>, with the very same instruction.
Vladimir Markoc6b56272016-04-20 18:45:25 +010035 if (Integer.compare(x, 0) < 0) {
36 System.out.println("OOOPS");
37 }
38 }
39
Vladimir Markoc2a769d2020-04-21 18:06:43 +010040 /// CHECK-START: int TestCompare.compareBooleans(boolean, boolean) select_generator (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +000041 /// CHECK-NOT: Phi
42
Vladimir Markoc2a769d2020-04-21 18:06:43 +010043 /// CHECK-START: int TestCompare.compareBooleans(boolean, boolean) instruction_simplifier$after_bce (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +000044 /// CHECK: <<ArgX:z\d+>> ParameterValue
45 /// CHECK: <<ArgY:z\d+>> ParameterValue
46 /// CHECK-DAG: <<Result:i\d+>> Compare [<<ArgX>>,<<ArgY>>]
47 /// CHECK-DAG: Return [<<Result>>]
48
Vladimir Markoc2a769d2020-04-21 18:06:43 +010049 /// CHECK-START: int TestCompare.compareBooleans(boolean, boolean) instruction_simplifier$after_bce (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +000050 /// CHECK-NOT: Select
51
52 private static int compareBooleans(boolean x, boolean y) {
53 return Integer.compare((x ? 1 : 0), (y ? 1 : 0));
54 }
55
Vladimir Markoc2a769d2020-04-21 18:06:43 +010056 /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) builder (after)
Vladimir Markoaafe4322020-04-21 10:38:04 +010057 /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0
58 /// CHECK-DAG: <<One:i\d+>> IntConstant 1
59 /// CHECK-DAG: <<PhiX:i\d+>> Phi [<<One>>,<<Zero>>]
60 /// CHECK-DAG: <<PhiY:i\d+>> Phi [<<One>>,<<Zero>>]
61 /// CHECK-DAG: <<Result:i\d+>> Compare [<<PhiX>>,<<PhiY>>]
62 /// CHECK-DAG: Return [<<Result>>]
63
Vladimir Markoc2a769d2020-04-21 18:06:43 +010064 /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) builder (after)
Vladimir Markoaafe4322020-04-21 10:38:04 +010065 /// CHECK-NOT: InvokeStaticOrDirect
66
Vladimir Markoc2a769d2020-04-21 18:06:43 +010067 /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) select_generator (after)
Vladimir Markoaafe4322020-04-21 10:38:04 +010068 /// CHECK: <<ArgX:z\d+>> ParameterValue
69 /// CHECK: <<ArgY:z\d+>> ParameterValue
70 /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0
71 /// CHECK-DAG: <<One:i\d+>> IntConstant 1
72 /// CHECK-DAG: <<SelX:i\d+>> Select [<<Zero>>,<<One>>,<<ArgX>>]
73 /// CHECK-DAG: <<SelY:i\d+>> Select [<<Zero>>,<<One>>,<<ArgY>>]
74 /// CHECK-DAG: <<Result:i\d+>> Compare [<<SelX>>,<<SelY>>]
75 /// CHECK-DAG: Return [<<Result>>]
76
Vladimir Markoc2a769d2020-04-21 18:06:43 +010077 /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) select_generator (after)
Vladimir Markoaafe4322020-04-21 10:38:04 +010078 /// CHECK-NOT: Phi
79
Vladimir Markoc2a769d2020-04-21 18:06:43 +010080 /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) instruction_simplifier$after_bce (after)
Vladimir Markoaafe4322020-04-21 10:38:04 +010081 /// CHECK: <<ArgX:z\d+>> ParameterValue
82 /// CHECK: <<ArgY:z\d+>> ParameterValue
83 /// CHECK-DAG: <<Result:i\d+>> Compare [<<ArgX>>,<<ArgY>>]
84 /// CHECK-DAG: Return [<<Result>>]
85
Vladimir Markoc2a769d2020-04-21 18:06:43 +010086 /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) instruction_simplifier$after_bce (after)
Vladimir Markoaafe4322020-04-21 10:38:04 +010087 /// CHECK-NOT: Select
88
89 private static int compareBooleans2(boolean x, boolean y) {
90 // Note: D8 would replace the ternary expression `x ? 1 : 0` with `x`
91 // but explicit `if` is preserved.
92 int src_x;
93 if (x) {
94 src_x = 1;
95 } else {
96 src_x = 0;
97 }
98 int src_y;
99 if (y) {
100 src_y = 1;
101 } else {
102 src_y = 0;
103 }
104 return Integer.compare(src_x, src_y);
Alan Leung75b4e122017-09-07 15:20:26 -0700105 }
106
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100107 /// CHECK-START: int TestCompare.compareBytes(byte, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000108 /// CHECK-DAG: <<Result:i\d+>> Compare
109 /// CHECK-DAG: Return [<<Result>>]
110
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100111 /// CHECK-START: int TestCompare.compareBytes(byte, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000112 /// CHECK-NOT: InvokeStaticOrDirect
113
114 private static int compareBytes(byte x, byte y) {
Aart Bik6e74fa92016-01-25 16:51:32 -0800115 return Integer.compare(x, y);
116 }
117
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100118 /// CHECK-START: int TestCompare.compareShorts(short, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000119 /// CHECK-DAG: <<Result:i\d+>> Compare
120 /// CHECK-DAG: Return [<<Result>>]
121
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100122 /// CHECK-START: int TestCompare.compareShorts(short, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000123 /// CHECK-NOT: InvokeStaticOrDirect
124
125 private static int compareShorts(short x, short y) {
126 return Integer.compare(x, y);
127 }
128
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100129 /// CHECK-START: int TestCompare.compareChars(char, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000130 /// CHECK-DAG: <<Result:i\d+>> Compare
131 /// CHECK-DAG: Return [<<Result>>]
132
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100133 /// CHECK-START: int TestCompare.compareChars(char, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000134 /// CHECK-NOT: InvokeStaticOrDirect
135
136 private static int compareChars(char x, char y) {
137 return Integer.compare(x, y);
138 }
139
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100140 /// CHECK-START: int TestCompare.compareInts(int, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000141 /// CHECK-DAG: <<Result:i\d+>> Compare
142 /// CHECK-DAG: Return [<<Result>>]
143
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100144 /// CHECK-START: int TestCompare.compareInts(int, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000145 /// CHECK-NOT: InvokeStaticOrDirect
146
147 private static int compareInts(int x, int y) {
148 return Integer.compare(x, y);
149 }
150
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100151 /// CHECK-START: int TestCompare.compareLongs(long, long) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000152 /// CHECK-DAG: <<Result:i\d+>> Compare
153 /// CHECK-DAG: Return [<<Result>>]
154
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100155 /// CHECK-START: int TestCompare.compareLongs(long, long) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000156 /// CHECK-NOT: InvokeStaticOrDirect
157
158 private static int compareLongs(long x, long y) {
Aart Bik6e74fa92016-01-25 16:51:32 -0800159 return Long.compare(x, y);
160 }
161
Aart Bik6e74fa92016-01-25 16:51:32 -0800162
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100163 /// CHECK-START: int TestCompare.compareByteShort(byte, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000164 /// CHECK-DAG: <<Result:i\d+>> Compare
165 /// CHECK-DAG: Return [<<Result>>]
166
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100167 /// CHECK-START: int TestCompare.compareByteShort(byte, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000168 /// CHECK-NOT: InvokeStaticOrDirect
169
170 public static int compareByteShort(byte x, short y) {
171 return Integer.compare(x, y);
172 }
173
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100174 /// CHECK-START: int TestCompare.compareByteChar(byte, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000175 /// CHECK-DAG: <<Result:i\d+>> Compare
176 /// CHECK-DAG: Return [<<Result>>]
177
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100178 /// CHECK-START: int TestCompare.compareByteChar(byte, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000179 /// CHECK-NOT: InvokeStaticOrDirect
180
181 public static int compareByteChar(byte x, char y) {
182 return Integer.compare(x, y);
183 }
184
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100185 /// CHECK-START: int TestCompare.compareByteInt(byte, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000186 /// CHECK-DAG: <<Result:i\d+>> Compare
187 /// CHECK-DAG: Return [<<Result>>]
188
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100189 /// CHECK-START: int TestCompare.compareByteInt(byte, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000190 /// CHECK-NOT: InvokeStaticOrDirect
191
192 public static int compareByteInt(byte x, int y) {
193 return Integer.compare(x, y);
194 }
195
196
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100197 /// CHECK-START: int TestCompare.compareShortByte(short, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000198 /// CHECK-DAG: <<Result:i\d+>> Compare
199 /// CHECK-DAG: Return [<<Result>>]
200
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100201 /// CHECK-START: int TestCompare.compareShortByte(short, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000202 /// CHECK-NOT: InvokeStaticOrDirect
203
204 public static int compareShortByte(short x, byte y) {
205 return Integer.compare(x, y);
206 }
207
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100208 /// CHECK-START: int TestCompare.compareShortChar(short, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000209 /// CHECK-DAG: <<Result:i\d+>> Compare
210 /// CHECK-DAG: Return [<<Result>>]
211
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100212 /// CHECK-START: int TestCompare.compareShortChar(short, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000213 /// CHECK-NOT: InvokeStaticOrDirect
214
215 public static int compareShortChar(short x, char y) {
216 return Integer.compare(x, y);
217 }
218
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100219 /// CHECK-START: int TestCompare.compareShortInt(short, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000220 /// CHECK-DAG: <<Result:i\d+>> Compare
221 /// CHECK-DAG: Return [<<Result>>]
222
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100223 /// CHECK-START: int TestCompare.compareShortInt(short, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000224 /// CHECK-NOT: InvokeStaticOrDirect
225
226 public static int compareShortInt(short x, int y) {
227 return Integer.compare(x, y);
228 }
229
230
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100231 /// CHECK-START: int TestCompare.compareCharByte(char, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000232 /// CHECK-DAG: <<Result:i\d+>> Compare
233 /// CHECK-DAG: Return [<<Result>>]
234
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100235 /// CHECK-START: int TestCompare.compareCharByte(char, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000236 /// CHECK-NOT: InvokeStaticOrDirect
237
238 public static int compareCharByte(char x, byte y) {
239 return Integer.compare(x, y);
240 }
241
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100242 /// CHECK-START: int TestCompare.compareCharShort(char, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000243 /// CHECK-DAG: <<Result:i\d+>> Compare
244 /// CHECK-DAG: Return [<<Result>>]
245
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100246 /// CHECK-START: int TestCompare.compareCharShort(char, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000247 /// CHECK-NOT: InvokeStaticOrDirect
248
249 public static int compareCharShort(char x, short y) {
250 return Integer.compare(x, y);
251 }
252
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100253 /// CHECK-START: int TestCompare.compareCharInt(char, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000254 /// CHECK-DAG: <<Result:i\d+>> Compare
255 /// CHECK-DAG: Return [<<Result>>]
256
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100257 /// CHECK-START: int TestCompare.compareCharInt(char, int) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000258 /// CHECK-NOT: InvokeStaticOrDirect
259
260 public static int compareCharInt(char x, int y) {
261 return Integer.compare(x, y);
262 }
263
264
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100265 /// CHECK-START: int TestCompare.compareIntByte(int, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000266 /// CHECK-DAG: <<Result:i\d+>> Compare
267 /// CHECK-DAG: Return [<<Result>>]
268
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100269 /// CHECK-START: int TestCompare.compareIntByte(int, byte) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000270 /// CHECK-NOT: InvokeStaticOrDirect
271
272 public static int compareIntByte(int x, byte y) {
273 return Integer.compare(x, y);
274 }
275
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100276 /// CHECK-START: int TestCompare.compareIntShort(int, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000277 /// CHECK-DAG: <<Result:i\d+>> Compare
278 /// CHECK-DAG: Return [<<Result>>]
279
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100280 /// CHECK-START: int TestCompare.compareIntShort(int, short) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000281 /// CHECK-NOT: InvokeStaticOrDirect
282
283 public static int compareIntShort(int x, short y) {
284 return Integer.compare(x, y);
285 }
286
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100287 /// CHECK-START: int TestCompare.compareIntChar(int, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000288 /// CHECK-DAG: <<Result:i\d+>> Compare
289 /// CHECK-DAG: Return [<<Result>>]
290
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100291 /// CHECK-START: int TestCompare.compareIntChar(int, char) builder (after)
Roland Levillaina5c4a402016-03-15 15:02:50 +0000292 /// CHECK-NOT: InvokeStaticOrDirect
293
294 public static int compareIntChar(int x, char y) {
295 return Integer.compare(x, y);
296 }
297
298
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100299 public static void testCompareBooleans() {
Roland Levillaina5c4a402016-03-15 15:02:50 +0000300 expectEquals(-1, compareBooleans(false, true));
Vladimir Markoaafe4322020-04-21 10:38:04 +0100301 expectEquals(-1, compareBooleans2(false, true));
Roland Levillaina5c4a402016-03-15 15:02:50 +0000302
303 expectEquals(0, compareBooleans(false, false));
304 expectEquals(0, compareBooleans(true, true));
Vladimir Markoaafe4322020-04-21 10:38:04 +0100305 expectEquals(0, compareBooleans2(false, false));
306 expectEquals(0, compareBooleans2(true, true));
Roland Levillaina5c4a402016-03-15 15:02:50 +0000307
308 expectEquals(1, compareBooleans(true, false));
Vladimir Markoaafe4322020-04-21 10:38:04 +0100309 expectEquals(1, compareBooleans2(true, false));
Roland Levillaina5c4a402016-03-15 15:02:50 +0000310 }
311
312 public static void testCompareBytes() {
313 expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)(Byte.MIN_VALUE + 1)));
314 expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)-1));
315 expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)0));
316 expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)1));
317 expectEquals(-1, compareBytes(Byte.MIN_VALUE, Byte.MAX_VALUE));
318 expectEquals(-1, compareBytes((byte)-1, (byte)0));
319 expectEquals(-1, compareBytes((byte)-1, (byte)1));
320 expectEquals(-1, compareBytes((byte)0, (byte)1));
321
322 expectEquals(0, compareBytes(Byte.MIN_VALUE, Byte.MIN_VALUE));
323 expectEquals(0, compareBytes((byte)-1, (byte)-1));
324 expectEquals(0, compareBytes((byte)0, (byte)0));
325 expectEquals(0, compareBytes((byte)1, (byte)1));
326 expectEquals(0, compareBytes(Byte.MAX_VALUE, Byte.MAX_VALUE));
327
328 expectEquals(1, compareBytes((byte)0, (byte)-1));
329 expectEquals(1, compareBytes((byte)1, (byte)-1));
330 expectEquals(1, compareBytes((byte)1, (byte)0));
331 expectEquals(1, compareBytes(Byte.MAX_VALUE, Byte.MIN_VALUE));
332 expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)-1));
333 expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)0));
334 expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)1));
335 expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
336
337 for (byte i = -11; i <= 11; i++) {
338 for (byte j = -11; j <= 11; j++) {
339 int expected = 0;
340 if (i < j) expected = -1;
341 else if (i > j) expected = 1;
342 expectEquals(expected, compareBytes(i, j));
343 }
344 }
345 }
346
347 public static void testCompareShorts() {
348 expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)(Short.MIN_VALUE + 1)));
349 expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)-1));
350 expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)0));
351 expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)1));
352 expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)Short.MAX_VALUE));
353 expectEquals(-1, compareShorts((short)-1, (short)0));
354 expectEquals(-1, compareShorts((short)-1, (short)1));
355 expectEquals(-1, compareShorts((short)0, (short)1));
356
357 expectEquals(0, compareShorts(Short.MIN_VALUE, Short.MIN_VALUE));
358 expectEquals(0, compareShorts((short)-1, (short)-1));
359 expectEquals(0, compareShorts((short)0, (short)0));
360 expectEquals(0, compareShorts((short)1, (short)1));
361 expectEquals(0, compareShorts(Short.MAX_VALUE, Short.MAX_VALUE));
362
363 expectEquals(1, compareShorts((short)0, (short)-1));
364 expectEquals(1, compareShorts((short)1, (short)-1));
365 expectEquals(1, compareShorts((short)1, (short)0));
366 expectEquals(1, compareShorts(Short.MAX_VALUE, Short.MIN_VALUE));
367 expectEquals(1, compareShorts(Short.MAX_VALUE, (short)-1));
368 expectEquals(1, compareShorts(Short.MAX_VALUE, (short)0));
369 expectEquals(1, compareShorts(Short.MAX_VALUE, (short)1));
370 expectEquals(1, compareShorts(Short.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
371
372 for (short i = -11; i <= 11; i++) {
373 for (short j = -11; j <= 11; j++) {
374 int expected = 0;
375 if (i < j) expected = -1;
376 else if (i > j) expected = 1;
377 expectEquals(expected, compareShorts(i, j));
378 }
379 }
380 }
381
382 public static void testCompareChars() {
383 expectEquals(-1, compareChars((char)0, Character.MAX_VALUE));
384 expectEquals(-1, compareChars((char)0, (char)1));
385
386 expectEquals(0, compareChars((char)0, (char)0));
387 expectEquals(0, compareChars((char)1, (char)1));
388 expectEquals(0, compareChars(Character.MAX_VALUE, Character.MAX_VALUE));
389
390 expectEquals(1, compareChars((char)1, (char)0));
391 expectEquals(1, compareChars(Character.MAX_VALUE, (char)0));
392 expectEquals(1, compareChars(Character.MAX_VALUE, (char)1));
393 expectEquals(1, compareChars(Character.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
394
395 for (char i = 0; i <= 11; i++) {
396 for (char j = 0; j <= 11; j++) {
397 int expected = 0;
398 if (i < j) expected = -1;
399 else if (i > j) expected = 1;
400 expectEquals(expected, compareChars(i, j));
401 }
402 }
403 }
404
405 public static void testCompareInts() {
406 expectEquals(-1, compareInts(Integer.MIN_VALUE, Integer.MIN_VALUE + 1));
407 expectEquals(-1, compareInts(Integer.MIN_VALUE, -1));
408 expectEquals(-1, compareInts(Integer.MIN_VALUE, 0));
409 expectEquals(-1, compareInts(Integer.MIN_VALUE, 1));
410 expectEquals(-1, compareInts(Integer.MIN_VALUE, Integer.MAX_VALUE));
411 expectEquals(-1, compareInts(-1, 0));
412 expectEquals(-1, compareInts(-1, 1));
413 expectEquals(-1, compareInts(0, 1));
414
415 expectEquals(0, compareInts(Integer.MIN_VALUE, Integer.MIN_VALUE));
416 expectEquals(0, compareInts(-1, -1));
417 expectEquals(0, compareInts(0, 0));
418 expectEquals(0, compareInts(1, 1));
419 expectEquals(0, compareInts(Integer.MAX_VALUE, Integer.MAX_VALUE));
420
421 expectEquals(1, compareInts(0, -1));
422 expectEquals(1, compareInts(1, -1));
423 expectEquals(1, compareInts(1, 0));
424 expectEquals(1, compareInts(Integer.MAX_VALUE, Integer.MIN_VALUE));
425 expectEquals(1, compareInts(Integer.MAX_VALUE, -1));
426 expectEquals(1, compareInts(Integer.MAX_VALUE, 0));
427 expectEquals(1, compareInts(Integer.MAX_VALUE, 1));
428 expectEquals(1, compareInts(Integer.MAX_VALUE, Integer.MAX_VALUE - 1));
Aart Bik6e74fa92016-01-25 16:51:32 -0800429
430 for (int i = -11; i <= 11; i++) {
431 for (int j = -11; j <= 11; j++) {
432 int expected = 0;
433 if (i < j) expected = -1;
434 else if (i > j) expected = 1;
Roland Levillaina5c4a402016-03-15 15:02:50 +0000435 expectEquals(expected, compareInts(i, j));
Aart Bik6e74fa92016-01-25 16:51:32 -0800436 }
437 }
Roland Levillaina5c4a402016-03-15 15:02:50 +0000438 }
Aart Bik6e74fa92016-01-25 16:51:32 -0800439
Roland Levillaina5c4a402016-03-15 15:02:50 +0000440 public static void testCompareLongs() {
441 expectEquals(-1, compareLongs(Long.MIN_VALUE, Long.MIN_VALUE + 1L));
442 expectEquals(-1, compareLongs(Long.MIN_VALUE, -1L));
443 expectEquals(-1, compareLongs(Long.MIN_VALUE, 0L));
444 expectEquals(-1, compareLongs(Long.MIN_VALUE, 1L));
445 expectEquals(-1, compareLongs(Long.MIN_VALUE, Long.MAX_VALUE));
446 expectEquals(-1, compareLongs(-1L, 0L));
447 expectEquals(-1, compareLongs(-1L, 1L));
448 expectEquals(-1, compareLongs(0L, 1L));
Aart Bik6e74fa92016-01-25 16:51:32 -0800449
Roland Levillaina5c4a402016-03-15 15:02:50 +0000450 expectEquals(0, compareLongs(Long.MIN_VALUE, Long.MIN_VALUE));
451 expectEquals(0, compareLongs(-1L, -1L));
452 expectEquals(0, compareLongs(0L, 0L));
453 expectEquals(0, compareLongs(1L, 1L));
454 expectEquals(0, compareLongs(Long.MAX_VALUE, Long.MAX_VALUE));
Aart Bik6e74fa92016-01-25 16:51:32 -0800455
Roland Levillaina5c4a402016-03-15 15:02:50 +0000456 expectEquals(1, compareLongs(0L, -1L));
457 expectEquals(1, compareLongs(1L, -1L));
458 expectEquals(1, compareLongs(1L, 0L));
459 expectEquals(1, compareLongs(Long.MAX_VALUE, Long.MIN_VALUE));
460 expectEquals(1, compareLongs(Long.MAX_VALUE, -1L));
461 expectEquals(1, compareLongs(Long.MAX_VALUE, 0L));
462 expectEquals(1, compareLongs(Long.MAX_VALUE, 1L));
463 expectEquals(1, compareLongs(Long.MAX_VALUE, Long.MAX_VALUE - 1L));
Aart Bik6e74fa92016-01-25 16:51:32 -0800464
Roland Levillaina5c4a402016-03-15 15:02:50 +0000465 expectEquals(-1, compareLongs(0x111111117FFFFFFFL, 0x11111111FFFFFFFFL));
466 expectEquals(0, compareLongs(0x111111117FFFFFFFL, 0x111111117FFFFFFFL));
467 expectEquals(1, compareLongs(0x11111111FFFFFFFFL, 0x111111117FFFFFFFL));
Aart Bika19616e2016-02-01 18:57:58 -0800468
Aart Bik6e74fa92016-01-25 16:51:32 -0800469 for (long i = -11L; i <= 11L; i++) {
470 for (long j = -11L; j <= 11L; j++) {
471 int expected = 0;
472 if (i < j) expected = -1;
473 else if (i > j) expected = 1;
Roland Levillaina5c4a402016-03-15 15:02:50 +0000474 expectEquals(expected, compareLongs(i, j));
Aart Bik6e74fa92016-01-25 16:51:32 -0800475 }
476 }
477
Aart Bika19616e2016-02-01 18:57:58 -0800478 for (long i = Long.MIN_VALUE; i <= Long.MIN_VALUE + 11L; i++) {
Roland Levillaina5c4a402016-03-15 15:02:50 +0000479 expectEquals(-1, compareLongs(i, 0));
Aart Bika19616e2016-02-01 18:57:58 -0800480 }
481
482 for (long i = Long.MAX_VALUE; i >= Long.MAX_VALUE - 11L; i--) {
Roland Levillaina5c4a402016-03-15 15:02:50 +0000483 expectEquals(1, compareLongs(i, 0));
Aart Bika19616e2016-02-01 18:57:58 -0800484 }
Roland Levillaina5c4a402016-03-15 15:02:50 +0000485 }
486
487
488 public static void testCompareByteShort() {
489 expectEquals(-1, compareByteShort(Byte.MIN_VALUE, (short)-1));
490 expectEquals(-1, compareByteShort(Byte.MIN_VALUE, (short)0));
491 expectEquals(-1, compareByteShort(Byte.MIN_VALUE, (short)1));
492 expectEquals(-1, compareByteShort(Byte.MIN_VALUE, Short.MAX_VALUE));
493 expectEquals(-1, compareByteShort((byte)-1, (short)0));
494 expectEquals(-1, compareByteShort((byte)-1, (short)1));
495 expectEquals(-1, compareByteShort((byte)0, (short)1));
496 expectEquals(-1, compareByteShort(Byte.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
497 expectEquals(-1, compareByteShort(Byte.MAX_VALUE, Short.MAX_VALUE));
498
499 expectEquals(0, compareByteShort((byte)-1, (short)-1));
500 expectEquals(0, compareByteShort((byte)0, (short)0));
501 expectEquals(0, compareByteShort((byte)1, (short)1));
502
503 expectEquals(1, compareByteShort(Byte.MIN_VALUE, Short.MIN_VALUE));
504 expectEquals(1, compareByteShort(Byte.MIN_VALUE, (short)(Short.MIN_VALUE + 1)));
505 expectEquals(1, compareByteShort((byte)0, (short)-1));
506 expectEquals(1, compareByteShort((byte)1, (short)-1));
507 expectEquals(1, compareByteShort((byte)1, (short)0));
508 expectEquals(1, compareByteShort(Byte.MAX_VALUE, Short.MIN_VALUE));
509 expectEquals(1, compareByteShort(Byte.MAX_VALUE, (short)-1));
510 expectEquals(1, compareByteShort(Byte.MAX_VALUE, (short)0));
511 expectEquals(1, compareByteShort(Byte.MAX_VALUE, (short)1));
512
513 for (byte i = -11; i <= 11; i++) {
514 for (short j = -11; j <= 11; j++) {
515 int expected = 0;
516 if (i < j) expected = -1;
517 else if (i > j) expected = 1;
518 expectEquals(expected, compareByteShort(i, j));
519 }
520 }
521 }
522
523 public static void testCompareByteChar() {
524 expectEquals(-1, compareByteChar(Byte.MIN_VALUE, (char)0));
525 expectEquals(-1, compareByteChar(Byte.MIN_VALUE, (char)1));
526 expectEquals(-1, compareByteChar(Byte.MIN_VALUE, Character.MAX_VALUE));
527 expectEquals(-1, compareByteChar((byte)-1, (char)0));
528 expectEquals(-1, compareByteChar((byte)-1, (char)1));
529 expectEquals(-1, compareByteChar((byte)0, (char)1));
530 expectEquals(-1, compareByteChar(Byte.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
531 expectEquals(-1, compareByteChar(Byte.MAX_VALUE, Character.MAX_VALUE));
532
533 expectEquals(0, compareByteChar((byte)0, (char)0));
534 expectEquals(0, compareByteChar((byte)1, (char)1));
535
536 expectEquals(1, compareByteChar((byte)1, (char)0));
537 expectEquals(1, compareByteChar(Byte.MAX_VALUE, (char)0));
538 expectEquals(1, compareByteChar(Byte.MAX_VALUE, (char)1));
539
540 for (byte i = -11; i <= 11; i++) {
541 for (char j = 0; j <= 11; j++) {
542 int expected = 0;
543 if (i < j) expected = -1;
544 else if (i > j) expected = 1;
545 expectEquals(expected, compareByteChar(i, j));
546 }
547 }
548 }
549
550 public static void testCompareByteInt() {
551 expectEquals(-1, compareByteInt(Byte.MIN_VALUE, -1));
552 expectEquals(-1, compareByteInt(Byte.MIN_VALUE, 0));
553 expectEquals(-1, compareByteInt(Byte.MIN_VALUE, 1));
554 expectEquals(-1, compareByteInt(Byte.MIN_VALUE, Integer.MAX_VALUE));
555 expectEquals(-1, compareByteInt((byte)-1, 0));
556 expectEquals(-1, compareByteInt((byte)-1, 1));
557 expectEquals(-1, compareByteInt((byte)0, 1));
558 expectEquals(-1, compareByteInt(Byte.MAX_VALUE, Integer.MAX_VALUE - 1));
559 expectEquals(-1, compareByteInt(Byte.MAX_VALUE, Integer.MAX_VALUE));
560
561 expectEquals(0, compareByteInt((byte)-1, -1));
562 expectEquals(0, compareByteInt((byte)0, 0));
563 expectEquals(0, compareByteInt((byte)1, 1));
564
565 expectEquals(1, compareByteInt(Byte.MIN_VALUE, Integer.MIN_VALUE));
566 expectEquals(1, compareByteInt(Byte.MIN_VALUE, Integer.MIN_VALUE + 1));
567 expectEquals(1, compareByteInt((byte)0, -1));
568 expectEquals(1, compareByteInt((byte)1, -1));
569 expectEquals(1, compareByteInt((byte)1, 0));
570 expectEquals(1, compareByteInt(Byte.MAX_VALUE, Integer.MIN_VALUE));
571 expectEquals(1, compareByteInt(Byte.MAX_VALUE, -1));
572 expectEquals(1, compareByteInt(Byte.MAX_VALUE, 0));
573 expectEquals(1, compareByteInt(Byte.MAX_VALUE, 1));
574
575 for (byte i = -11; i <= 11; i++) {
576 for (int j = -11; j <= 11; j++) {
577 int expected = 0;
578 if (i < j) expected = -1;
579 else if (i > j) expected = 1;
580 expectEquals(expected, compareByteInt(i, j));
581 }
582 }
583 }
584
585
586 public static void testCompareShortByte() {
587 expectEquals(-1, compareShortByte(Short.MIN_VALUE, Byte.MIN_VALUE));
588 expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)(Byte.MIN_VALUE + 1)));
589 expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)-1));
590 expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)0));
591 expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)1));
592 expectEquals(-1, compareShortByte(Short.MIN_VALUE, Byte.MAX_VALUE));
593 expectEquals(-1, compareShortByte((short)-1, (byte)0));
594 expectEquals(-1, compareShortByte((short)-1, (byte)1));
595 expectEquals(-1, compareShortByte((short)0, (byte)1));
596
597 expectEquals(0, compareShortByte((short)-1, (byte)-1));
598 expectEquals(0, compareShortByte((short)0, (byte)0));
599 expectEquals(0, compareShortByte((short)1, (byte)1));
600
601 expectEquals(1, compareShortByte((short)0, (byte)-1));
602 expectEquals(1, compareShortByte((short)1, (byte)-1));
603 expectEquals(1, compareShortByte((short)1, (byte)0));
604 expectEquals(1, compareShortByte(Short.MAX_VALUE, Byte.MIN_VALUE));
605 expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)-1));
606 expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)0));
607 expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)1));
608 expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
609 expectEquals(1, compareShortByte(Short.MAX_VALUE, Byte.MAX_VALUE));
610
611 for (short i = -11; i <= 11; i++) {
612 for (byte j = -11; j <= 11; j++) {
613 int expected = 0;
614 if (i < j) expected = -1;
615 else if (i > j) expected = 1;
616 expectEquals(expected, compareShortByte(i, j));
617 }
618 }
619 }
620
621 public static void testCompareShortChar() {
622 expectEquals(-1, compareShortChar(Short.MIN_VALUE, (char)0));
623 expectEquals(-1, compareShortChar(Short.MIN_VALUE, (char)1));
624 expectEquals(-1, compareShortChar(Short.MIN_VALUE, Character.MAX_VALUE));
625 expectEquals(-1, compareShortChar((short)-1, (char)0));
626 expectEquals(-1, compareShortChar((short)-1, (char)1));
627 expectEquals(-1, compareShortChar((short)0, (char)1));
628 expectEquals(-1, compareShortChar(Short.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
629 expectEquals(-1, compareShortChar(Short.MAX_VALUE, Character.MAX_VALUE));
630
631 expectEquals(0, compareShortChar((short)0, (char)0));
632 expectEquals(0, compareShortChar((short)1, (char)1));
633
634 expectEquals(1, compareShortChar((short)1, (char)0));
635 expectEquals(1, compareShortChar(Short.MAX_VALUE, (char)0));
636 expectEquals(1, compareShortChar(Short.MAX_VALUE, (char)1));
637
638 for (short i = -11; i <= 11; i++) {
639 for (char j = 0; j <= 11; j++) {
640 int expected = 0;
641 if (i < j) expected = -1;
642 else if (i > j) expected = 1;
643 expectEquals(expected, compareShortChar(i, j));
644 }
645 }
646 }
647
648 public static void testCompareShortInt() {
649 expectEquals(-1, compareShortInt(Short.MIN_VALUE, -1));
650 expectEquals(-1, compareShortInt(Short.MIN_VALUE, 0));
651 expectEquals(-1, compareShortInt(Short.MIN_VALUE, 1));
652 expectEquals(-1, compareShortInt(Short.MIN_VALUE, Integer.MAX_VALUE));
653 expectEquals(-1, compareShortInt((short)-1, 0));
654 expectEquals(-1, compareShortInt((short)-1, 1));
655 expectEquals(-1, compareShortInt((short)0, 1));
656 expectEquals(-1, compareShortInt(Short.MAX_VALUE, Integer.MAX_VALUE - 1));
657 expectEquals(-1, compareShortInt(Short.MAX_VALUE, Integer.MAX_VALUE));
658
659 expectEquals(0, compareShortInt((short)-1, -1));
660 expectEquals(0, compareShortInt((short)0, 0));
661 expectEquals(0, compareShortInt((short)1, 1));
662
663 expectEquals(1, compareShortInt(Short.MIN_VALUE, Integer.MIN_VALUE));
664 expectEquals(1, compareShortInt(Short.MIN_VALUE, Integer.MIN_VALUE + 1));
665 expectEquals(1, compareShortInt((short)0, -1));
666 expectEquals(1, compareShortInt((short)1, -1));
667 expectEquals(1, compareShortInt((short)1, 0));
668 expectEquals(1, compareShortInt(Short.MAX_VALUE, Integer.MIN_VALUE));
669 expectEquals(1, compareShortInt(Short.MAX_VALUE, -1));
670 expectEquals(1, compareShortInt(Short.MAX_VALUE, 0));
671 expectEquals(1, compareShortInt(Short.MAX_VALUE, 1));
672
673 for (short i = -11; i <= 11; i++) {
674 for (int j = -11; j <= 11; j++) {
675 int expected = 0;
676 if (i < j) expected = -1;
677 else if (i > j) expected = 1;
678 expectEquals(expected, compareShortInt(i, j));
679 }
680 }
681 }
682
683
684 public static void testCompareCharByte() {
685 expectEquals(-1, compareCharByte((char)0, (byte)1));
686 expectEquals(-1, compareCharByte((char)0, Byte.MAX_VALUE));
687
688 expectEquals(0, compareCharByte((char)0, (byte)0));
689 expectEquals(0, compareCharByte((char)1, (byte)1));
690
691 expectEquals(1, compareCharByte((char)0, Byte.MIN_VALUE));
692 expectEquals(1, compareCharByte((char)0, (byte)(Byte.MIN_VALUE + 1)));
693 expectEquals(1, compareCharByte((char)0, (byte)-1));
694 expectEquals(1, compareCharByte((char)1, (byte)-1));
695 expectEquals(1, compareCharByte((char)1, (byte)0));
696 expectEquals(1, compareCharByte(Character.MAX_VALUE, Byte.MIN_VALUE));
697 expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)-1));
698 expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)0));
699 expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)1));
700 expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
701 expectEquals(1, compareCharByte(Character.MAX_VALUE, Byte.MAX_VALUE));
702
703 for (char i = 0; i <= 11; i++) {
704 for (byte j = -11; j <= 11; j++) {
705 int expected = 0;
706 if (i < j) expected = -1;
707 else if (i > j) expected = 1;
708 expectEquals(expected, compareCharByte(i, j));
709 }
710 }
711 }
712
713 public static void testCompareCharShort() {
714 expectEquals(-1, compareCharShort((char)0, (short)1));
715 expectEquals(-1, compareCharShort((char)0, Short.MAX_VALUE));
716
717 expectEquals(0, compareCharShort((char)0, (short)0));
718 expectEquals(0, compareCharShort((char)1, (short)1));
719
720 expectEquals(1, compareCharShort((char)0, Short.MIN_VALUE));
721 expectEquals(1, compareCharShort((char)0, (short)(Short.MIN_VALUE + 1)));
722 expectEquals(1, compareCharShort((char)0, (short)-1));
723 expectEquals(1, compareCharShort((char)1, (short)-1));
724 expectEquals(1, compareCharShort((char)1, (short)0));
725 expectEquals(1, compareCharShort(Character.MAX_VALUE, Short.MIN_VALUE));
726 expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)-1));
727 expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)0));
728 expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)1));
729 expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
730 expectEquals(1, compareCharShort(Character.MAX_VALUE, Short.MAX_VALUE));
731
732 for (char i = 0; i <= 11; i++) {
733 for (short j = -11; j <= 11; j++) {
734 int expected = 0;
735 if (i < j) expected = -1;
736 else if (i > j) expected = 1;
737 expectEquals(expected, compareCharShort(i, j));
738 }
739 }
740 }
741
742 public static void testCompareCharInt() {
743 expectEquals(-1, compareCharInt((char)0, 1));
744 expectEquals(-1, compareCharInt((char)0, Integer.MAX_VALUE));
745 expectEquals(-1, compareCharInt(Character.MAX_VALUE, Integer.MAX_VALUE - 1));
746 expectEquals(-1, compareCharInt(Character.MAX_VALUE, Integer.MAX_VALUE));
747
748 expectEquals(0, compareCharInt((char)0, 0));
749 expectEquals(0, compareCharInt((char)1, 1));
750
751 expectEquals(1, compareCharInt((char)0, Integer.MIN_VALUE));
752 expectEquals(1, compareCharInt((char)0, Integer.MIN_VALUE + 1));
753 expectEquals(1, compareCharInt((char)0, -1));
754 expectEquals(1, compareCharInt((char)1, -1));
755 expectEquals(1, compareCharInt((char)1, 0));
756 expectEquals(1, compareCharInt(Character.MAX_VALUE, Integer.MIN_VALUE));
757 expectEquals(1, compareCharInt(Character.MAX_VALUE, -1));
758 expectEquals(1, compareCharInt(Character.MAX_VALUE, 0));
759 expectEquals(1, compareCharInt(Character.MAX_VALUE, 1));
760
761 for (char i = 0; i <= 11; i++) {
762 for (int j = -11; j <= 11; j++) {
763 int expected = 0;
764 if (i < j) expected = -1;
765 else if (i > j) expected = 1;
766 expectEquals(expected, compareCharInt(i, j));
767 }
768 }
769 }
770
771
772 public static void testCompareIntByte() {
773 expectEquals(-1, compareIntByte(Integer.MIN_VALUE, Byte.MIN_VALUE));
774 expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)(Byte.MIN_VALUE + 1)));
775 expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)-1));
776 expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)0));
777 expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)1));
778 expectEquals(-1, compareIntByte(Integer.MIN_VALUE, Byte.MAX_VALUE));
779 expectEquals(-1, compareIntByte(-1, (byte)0));
780 expectEquals(-1, compareIntByte(-1, (byte)1));
781 expectEquals(-1, compareIntByte(0, (byte)1));
782
783 expectEquals(0, compareIntByte(-1, (byte)-1));
784 expectEquals(0, compareIntByte(0, (byte)0));
785 expectEquals(0, compareIntByte(1, (byte)1));
786
787 expectEquals(1, compareIntByte(0, (byte)-1));
788 expectEquals(1, compareIntByte(1, (byte)-1));
789 expectEquals(1, compareIntByte(1, (byte)0));
790 expectEquals(1, compareIntByte(Integer.MAX_VALUE, Byte.MIN_VALUE));
791 expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)-1));
792 expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)0));
793 expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)1));
794 expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
795 expectEquals(1, compareIntByte(Integer.MAX_VALUE, Byte.MAX_VALUE));
796
797 for (int i = -11; i <= 11; i++) {
798 for (byte j = -11; j <= 11; j++) {
799 int expected = 0;
800 if (i < j) expected = -1;
801 else if (i > j) expected = 1;
802 expectEquals(expected, compareIntByte(i, j));
803 }
804 }
805 }
806
807 public static void testCompareIntShort() {
808 expectEquals(-1, compareIntShort(Integer.MIN_VALUE, Short.MIN_VALUE));
809 expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)(Short.MIN_VALUE + 1)));
810 expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)-1));
811 expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)0));
812 expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)1));
813 expectEquals(-1, compareIntShort(Integer.MIN_VALUE, Short.MAX_VALUE));
814 expectEquals(-1, compareIntShort(-1, (short)0));
815 expectEquals(-1, compareIntShort(-1, (short)1));
816 expectEquals(-1, compareIntShort(0, (short)1));
817
818 expectEquals(0, compareIntShort(-1, (short)-1));
819 expectEquals(0, compareIntShort(0, (short)0));
820 expectEquals(0, compareIntShort(1, (short)1));
821
822 expectEquals(1, compareIntShort(0, (short)-1));
823 expectEquals(1, compareIntShort(1, (short)-1));
824 expectEquals(1, compareIntShort(1, (short)0));
825 expectEquals(1, compareIntShort(Integer.MAX_VALUE, Short.MIN_VALUE));
826 expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)-1));
827 expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)0));
828 expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)1));
829 expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
830 expectEquals(1, compareIntShort(Integer.MAX_VALUE, Short.MAX_VALUE));
831
832 for (int i = -11; i <= 11; i++) {
833 for (short j = -11; j <= 11; j++) {
834 int expected = 0;
835 if (i < j) expected = -1;
836 else if (i > j) expected = 1;
837 expectEquals(expected, compareIntShort(i, j));
838 }
839 }
840 }
841
842 public static void testCompareIntChar() {
843 expectEquals(-1, compareIntChar(Integer.MIN_VALUE, (char)0));
844 expectEquals(-1, compareIntChar(Integer.MIN_VALUE, (char)1));
845 expectEquals(-1, compareIntChar(Integer.MIN_VALUE, Character.MAX_VALUE));
846 expectEquals(-1, compareIntChar(-1, (char)0));
847 expectEquals(-1, compareIntChar(-1, (char)1));
848 expectEquals(-1, compareIntChar(0, (char)1));
849
850 expectEquals(0, compareIntChar(0, (char)0));
851 expectEquals(0, compareIntChar(1, (char)1));
852
853 expectEquals(1, compareIntChar(1, (char)0));
854 expectEquals(1, compareIntChar(Integer.MAX_VALUE, (char)0));
855 expectEquals(1, compareIntChar(Integer.MAX_VALUE, (char)1));
856 expectEquals(1, compareIntChar(Integer.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
857 expectEquals(1, compareIntChar(Integer.MAX_VALUE, Character.MAX_VALUE));
858
859 for (int i = -11; i <= 11; i++) {
860 for (char j = 0; j <= 11; j++) {
861 int expected = 0;
862 if (i < j) expected = -1;
863 else if (i > j) expected = 1;
864 expectEquals(expected, compareIntChar(i, j));
865 }
866 }
867 }
868
869
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100870 public static void main() {
Vladimir Markoc6b56272016-04-20 18:45:25 +0100871 $opt$noinline$testReplaceInputWithItself(42);
872
Roland Levillaina5c4a402016-03-15 15:02:50 +0000873 testCompareBooleans();
874 testCompareBytes();
875 testCompareShorts();
876 testCompareChars();
877 testCompareInts();
878 testCompareLongs();
879
880 testCompareByteShort();
881 testCompareByteChar();
882 testCompareByteInt();
883
884 testCompareShortByte();
885 testCompareShortChar();
886 testCompareShortInt();
887
888 testCompareCharByte();
889 testCompareCharShort();
890 testCompareCharInt();
891
892 testCompareIntByte();
893 testCompareIntShort();
894 testCompareIntChar();
Aart Bika19616e2016-02-01 18:57:58 -0800895
Vladimir Markoc2a769d2020-04-21 18:06:43 +0100896 System.out.println("TestCompare passed");
Aart Bik6e74fa92016-01-25 16:51:32 -0800897 }
898
899 private static void expectEquals(int expected, int result) {
900 if (expected != result) {
901 throw new Error("Expected: " + expected + ", found: " + result);
902 }
903 }
904}