1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2008 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker /** 18*795d594fSAndroid Build Coastguard Worker * Test comparison operators. 19*795d594fSAndroid Build Coastguard Worker */ 20*795d594fSAndroid Build Coastguard Worker public class Compare { 21*795d594fSAndroid Build Coastguard Worker 22*795d594fSAndroid Build Coastguard Worker /* 23*795d594fSAndroid Build Coastguard Worker * Test the integer comparisons in various ways. 24*795d594fSAndroid Build Coastguard Worker */ testIntCompare(int minus, int plus, int plus2, int zero)25*795d594fSAndroid Build Coastguard Worker static void testIntCompare(int minus, int plus, int plus2, int zero) { 26*795d594fSAndroid Build Coastguard Worker System.out.println("IntMath.testIntCompare"); 27*795d594fSAndroid Build Coastguard Worker 28*795d594fSAndroid Build Coastguard Worker if (minus > plus) 29*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 30*795d594fSAndroid Build Coastguard Worker if (minus >= plus) 31*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 32*795d594fSAndroid Build Coastguard Worker if (plus < minus) 33*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 34*795d594fSAndroid Build Coastguard Worker if (plus <= minus) 35*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 36*795d594fSAndroid Build Coastguard Worker if (plus == minus) 37*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 38*795d594fSAndroid Build Coastguard Worker if (plus != plus2) 39*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 40*795d594fSAndroid Build Coastguard Worker 41*795d594fSAndroid Build Coastguard Worker /* try a branch-taken */ 42*795d594fSAndroid Build Coastguard Worker if (plus != minus) { 43*795d594fSAndroid Build Coastguard Worker Main.assertTrue(true); 44*795d594fSAndroid Build Coastguard Worker } else { 45*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 46*795d594fSAndroid Build Coastguard Worker } 47*795d594fSAndroid Build Coastguard Worker 48*795d594fSAndroid Build Coastguard Worker if (minus > 0) 49*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 50*795d594fSAndroid Build Coastguard Worker if (minus >= 0) 51*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 52*795d594fSAndroid Build Coastguard Worker if (plus < 0) 53*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 54*795d594fSAndroid Build Coastguard Worker if (plus <= 0) 55*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 56*795d594fSAndroid Build Coastguard Worker if (plus == 0) 57*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 58*795d594fSAndroid Build Coastguard Worker if (zero != 0) 59*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 60*795d594fSAndroid Build Coastguard Worker 61*795d594fSAndroid Build Coastguard Worker if (zero == 0) { 62*795d594fSAndroid Build Coastguard Worker Main.assertTrue(true); 63*795d594fSAndroid Build Coastguard Worker } else { 64*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 65*795d594fSAndroid Build Coastguard Worker } 66*795d594fSAndroid Build Coastguard Worker } 67*795d594fSAndroid Build Coastguard Worker 68*795d594fSAndroid Build Coastguard Worker /* 69*795d594fSAndroid Build Coastguard Worker * Test cmp-long. 70*795d594fSAndroid Build Coastguard Worker * 71*795d594fSAndroid Build Coastguard Worker * minus=-5, alsoMinus=0xFFFFFFFF00000009, plus=4, alsoPlus=8 72*795d594fSAndroid Build Coastguard Worker */ testLongCompare(long minus, long alsoMinus, long plus, long alsoPlus)73*795d594fSAndroid Build Coastguard Worker static void testLongCompare(long minus, long alsoMinus, long plus, 74*795d594fSAndroid Build Coastguard Worker long alsoPlus) { 75*795d594fSAndroid Build Coastguard Worker 76*795d594fSAndroid Build Coastguard Worker System.out.println("IntMath.testLongCompare"); 77*795d594fSAndroid Build Coastguard Worker if (minus > plus) 78*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 79*795d594fSAndroid Build Coastguard Worker if (plus < minus) 80*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 81*795d594fSAndroid Build Coastguard Worker if (plus == minus) 82*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 83*795d594fSAndroid Build Coastguard Worker 84*795d594fSAndroid Build Coastguard Worker if (plus >= plus+1) 85*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 86*795d594fSAndroid Build Coastguard Worker if (minus >= minus+1) 87*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 88*795d594fSAndroid Build Coastguard Worker 89*795d594fSAndroid Build Coastguard Worker /* try a branch-taken */ 90*795d594fSAndroid Build Coastguard Worker if (plus != minus) { 91*795d594fSAndroid Build Coastguard Worker Main.assertTrue(true); 92*795d594fSAndroid Build Coastguard Worker } else { 93*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 94*795d594fSAndroid Build Coastguard Worker } 95*795d594fSAndroid Build Coastguard Worker 96*795d594fSAndroid Build Coastguard Worker /* compare when high words are equal but low words differ */ 97*795d594fSAndroid Build Coastguard Worker if (plus > alsoPlus) 98*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 99*795d594fSAndroid Build Coastguard Worker if (alsoPlus < plus) 100*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 101*795d594fSAndroid Build Coastguard Worker if (alsoPlus == plus) 102*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 103*795d594fSAndroid Build Coastguard Worker 104*795d594fSAndroid Build Coastguard Worker /* high words are equal, low words have apparently different signs */ 105*795d594fSAndroid Build Coastguard Worker if (minus < alsoMinus) // bug! 106*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 107*795d594fSAndroid Build Coastguard Worker if (alsoMinus > minus) 108*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 109*795d594fSAndroid Build Coastguard Worker if (alsoMinus == minus) 110*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 111*795d594fSAndroid Build Coastguard Worker } 112*795d594fSAndroid Build Coastguard Worker 113*795d594fSAndroid Build Coastguard Worker /* 114*795d594fSAndroid Build Coastguard Worker * Test cmpl-float and cmpg-float. 115*795d594fSAndroid Build Coastguard Worker */ testFloatCompare(float minus, float plus, float plus2, float nan)116*795d594fSAndroid Build Coastguard Worker static void testFloatCompare(float minus, float plus, float plus2, 117*795d594fSAndroid Build Coastguard Worker float nan) { 118*795d594fSAndroid Build Coastguard Worker 119*795d594fSAndroid Build Coastguard Worker System.out.println("IntMath.testFloatCompare"); 120*795d594fSAndroid Build Coastguard Worker if (minus > plus) 121*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 122*795d594fSAndroid Build Coastguard Worker if (plus < minus) 123*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 124*795d594fSAndroid Build Coastguard Worker if (plus == minus) 125*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 126*795d594fSAndroid Build Coastguard Worker if (plus != plus2) 127*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 128*795d594fSAndroid Build Coastguard Worker 129*795d594fSAndroid Build Coastguard Worker if (plus <= nan) 130*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 131*795d594fSAndroid Build Coastguard Worker if (plus >= nan) 132*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 133*795d594fSAndroid Build Coastguard Worker if (minus <= nan) 134*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 135*795d594fSAndroid Build Coastguard Worker if (minus >= nan) 136*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 137*795d594fSAndroid Build Coastguard Worker if (nan >= plus) 138*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 139*795d594fSAndroid Build Coastguard Worker if (nan <= plus) 140*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 141*795d594fSAndroid Build Coastguard Worker 142*795d594fSAndroid Build Coastguard Worker if (nan == nan) 143*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 144*795d594fSAndroid Build Coastguard Worker } 145*795d594fSAndroid Build Coastguard Worker testDoubleCompare(double minus, double plus, double plus2, double nan)146*795d594fSAndroid Build Coastguard Worker static void testDoubleCompare(double minus, double plus, double plus2, 147*795d594fSAndroid Build Coastguard Worker double nan) { 148*795d594fSAndroid Build Coastguard Worker 149*795d594fSAndroid Build Coastguard Worker System.out.println("IntMath.testDoubleCompare"); 150*795d594fSAndroid Build Coastguard Worker if (minus > plus) 151*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 152*795d594fSAndroid Build Coastguard Worker if (plus < minus) 153*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 154*795d594fSAndroid Build Coastguard Worker if (plus == minus) 155*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 156*795d594fSAndroid Build Coastguard Worker if (plus != plus2) 157*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 158*795d594fSAndroid Build Coastguard Worker 159*795d594fSAndroid Build Coastguard Worker if (plus <= nan) 160*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 161*795d594fSAndroid Build Coastguard Worker if (plus >= nan) 162*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 163*795d594fSAndroid Build Coastguard Worker if (minus <= nan) 164*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 165*795d594fSAndroid Build Coastguard Worker if (minus >= nan) 166*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 167*795d594fSAndroid Build Coastguard Worker if (nan >= plus) 168*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 169*795d594fSAndroid Build Coastguard Worker if (nan <= plus) 170*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 171*795d594fSAndroid Build Coastguard Worker 172*795d594fSAndroid Build Coastguard Worker if (nan == nan) 173*795d594fSAndroid Build Coastguard Worker Main.assertTrue(false); 174*795d594fSAndroid Build Coastguard Worker } 175*795d594fSAndroid Build Coastguard Worker run()176*795d594fSAndroid Build Coastguard Worker public static void run() { 177*795d594fSAndroid Build Coastguard Worker testIntCompare(-5, 4, 4, 0); 178*795d594fSAndroid Build Coastguard Worker testLongCompare(-5L, -4294967287L, 4L, 8L); 179*795d594fSAndroid Build Coastguard Worker 180*795d594fSAndroid Build Coastguard Worker testFloatCompare(-5.0f, 4.0f, 4.0f, (1.0f/0.0f) / (1.0f/0.0f)); 181*795d594fSAndroid Build Coastguard Worker testDoubleCompare(-5.0, 4.0, 4.0, (1.0/0.0) / (1.0/0.0)); 182*795d594fSAndroid Build Coastguard Worker } 183*795d594fSAndroid Build Coastguard Worker } 184