| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * Test comparison operators. |
| */ |
| public class Compare { |
| |
| /* |
| * Test the integer comparisons in various ways. |
| */ |
| static void testIntCompare(int minus, int plus, int plus2, int zero) { |
| System.out.println("IntMath.testIntCompare"); |
| |
| if (minus > plus) |
| Main.assertTrue(false); |
| if (minus >= plus) |
| Main.assertTrue(false); |
| if (plus < minus) |
| Main.assertTrue(false); |
| if (plus <= minus) |
| Main.assertTrue(false); |
| if (plus == minus) |
| Main.assertTrue(false); |
| if (plus != plus2) |
| Main.assertTrue(false); |
| |
| /* try a branch-taken */ |
| if (plus != minus) { |
| Main.assertTrue(true); |
| } else { |
| Main.assertTrue(false); |
| } |
| |
| if (minus > 0) |
| Main.assertTrue(false); |
| if (minus >= 0) |
| Main.assertTrue(false); |
| if (plus < 0) |
| Main.assertTrue(false); |
| if (plus <= 0) |
| Main.assertTrue(false); |
| if (plus == 0) |
| Main.assertTrue(false); |
| if (zero != 0) |
| Main.assertTrue(false); |
| |
| if (zero == 0) { |
| Main.assertTrue(true); |
| } else { |
| Main.assertTrue(false); |
| } |
| } |
| |
| /* |
| * Test cmp-long. |
| * |
| * minus=-5, alsoMinus=0xFFFFFFFF00000009, plus=4, alsoPlus=8 |
| */ |
| static void testLongCompare(long minus, long alsoMinus, long plus, |
| long alsoPlus) { |
| |
| System.out.println("IntMath.testLongCompare"); |
| if (minus > plus) |
| Main.assertTrue(false); |
| if (plus < minus) |
| Main.assertTrue(false); |
| if (plus == minus) |
| Main.assertTrue(false); |
| |
| if (plus >= plus+1) |
| Main.assertTrue(false); |
| if (minus >= minus+1) |
| Main.assertTrue(false); |
| |
| /* try a branch-taken */ |
| if (plus != minus) { |
| Main.assertTrue(true); |
| } else { |
| Main.assertTrue(false); |
| } |
| |
| /* compare when high words are equal but low words differ */ |
| if (plus > alsoPlus) |
| Main.assertTrue(false); |
| if (alsoPlus < plus) |
| Main.assertTrue(false); |
| if (alsoPlus == plus) |
| Main.assertTrue(false); |
| |
| /* high words are equal, low words have apparently different signs */ |
| if (minus < alsoMinus) // bug! |
| Main.assertTrue(false); |
| if (alsoMinus > minus) |
| Main.assertTrue(false); |
| if (alsoMinus == minus) |
| Main.assertTrue(false); |
| } |
| |
| /* |
| * Test cmpl-float and cmpg-float. |
| */ |
| static void testFloatCompare(float minus, float plus, float plus2, |
| float nan) { |
| |
| System.out.println("IntMath.testFloatCompare"); |
| if (minus > plus) |
| Main.assertTrue(false); |
| if (plus < minus) |
| Main.assertTrue(false); |
| if (plus == minus) |
| Main.assertTrue(false); |
| if (plus != plus2) |
| Main.assertTrue(false); |
| |
| if (plus <= nan) |
| Main.assertTrue(false); |
| if (plus >= nan) |
| Main.assertTrue(false); |
| if (minus <= nan) |
| Main.assertTrue(false); |
| if (minus >= nan) |
| Main.assertTrue(false); |
| if (nan >= plus) |
| Main.assertTrue(false); |
| if (nan <= plus) |
| Main.assertTrue(false); |
| |
| if (nan == nan) |
| Main.assertTrue(false); |
| } |
| |
| static void testDoubleCompare(double minus, double plus, double plus2, |
| double nan) { |
| |
| System.out.println("IntMath.testDoubleCompare"); |
| if (minus > plus) |
| Main.assertTrue(false); |
| if (plus < minus) |
| Main.assertTrue(false); |
| if (plus == minus) |
| Main.assertTrue(false); |
| if (plus != plus2) |
| Main.assertTrue(false); |
| |
| if (plus <= nan) |
| Main.assertTrue(false); |
| if (plus >= nan) |
| Main.assertTrue(false); |
| if (minus <= nan) |
| Main.assertTrue(false); |
| if (minus >= nan) |
| Main.assertTrue(false); |
| if (nan >= plus) |
| Main.assertTrue(false); |
| if (nan <= plus) |
| Main.assertTrue(false); |
| |
| if (nan == nan) |
| Main.assertTrue(false); |
| } |
| |
| public static void run() { |
| testIntCompare(-5, 4, 4, 0); |
| testLongCompare(-5L, -4294967287L, 4L, 8L); |
| |
| testFloatCompare(-5.0f, 4.0f, 4.0f, (1.0f/0.0f) / (1.0f/0.0f)); |
| testDoubleCompare(-5.0, 4.0, 4.0, (1.0/0.0) / (1.0/0.0)); |
| } |
| } |