Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright (C) 2008 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 
     17 package android.core;
     18 
     19 import junit.framework.TestCase;
     20 import android.test.suitebuilder.annotation.SmallTest;
     21 
     22 /**
     23  * Tests for basic functionality of floats and doubles.
     24  */
     25 public class FloatDoubleTest extends TestCase {
     26 
     27     @SmallTest
     28     public void testFloatDouble() throws Exception {
     29         Double d = Double.valueOf(1.0);
     30         Float f = Float.valueOf(1.0f);
     31         Object o = new Object();
     32 
     33         assertFalse(f.equals(d));
     34         assertFalse(d.equals(f));
     35         assertFalse(f.equals(o));
     36         assertFalse(d.equals(o));
     37         assertFalse(f.equals(null));
     38         assertFalse(d.equals(null));
     39     }
     40 
     41     @SmallTest
     42     public void testFloat() throws Exception {
     43         float pz = 0.0f;
     44         float nz = -0.0f;
     45 
     46         float pzero = 1.0f / Float.POSITIVE_INFINITY;
     47         float nzero = 1.0f / Float.NEGATIVE_INFINITY;
     48 
     49         // Everything compares as '=='
     50         assertTrue(pz == pz);
     51         assertTrue(pz == nz);
     52         assertTrue(pz == pzero);
     53         assertTrue(pz == nzero);
     54 
     55         assertTrue(nz == pz);
     56         assertTrue(nz == nz);
     57         assertTrue(nz == pzero);
     58         assertTrue(nz == nzero);
     59 
     60         assertTrue(pzero == pz);
     61         assertTrue(pzero == nz);
     62         assertTrue(pzero == pzero);
     63         assertTrue(pzero == nzero);
     64 
     65         assertTrue(nzero == pz);
     66         assertTrue(nzero == nz);
     67         assertTrue(nzero == pzero);
     68         assertTrue(nzero == nzero);
     69 
     70         // +-0 are distinct as Floats
     71         assertEquals(Float.valueOf(pz), Float.valueOf(pz));
     72         assertTrue(!Float.valueOf(pz).equals(Float.valueOf(nz)));
     73         assertEquals(Float.valueOf(pz), Float.valueOf(pzero));
     74         assertTrue(!Float.valueOf(pz).equals(Float.valueOf(nzero)));
     75 
     76         assertTrue(!Float.valueOf(nz).equals(Float.valueOf(pz)));
     77         assertEquals(Float.valueOf(nz), Float.valueOf(nz));
     78         assertTrue(!Float.valueOf(nz).equals(Float.valueOf(pzero)));
     79         assertEquals(Float.valueOf(nz), Float.valueOf(nzero));
     80 
     81         assertEquals(Float.valueOf(pzero), Float.valueOf(pz));
     82         assertTrue(!Float.valueOf(pzero).equals(Float.valueOf(nz)));
     83         assertEquals(Float.valueOf(pzero), Float.valueOf(pzero));
     84         assertTrue(!Float.valueOf(pzero).equals(Float.valueOf(nzero)));
     85 
     86         assertTrue(!Float.valueOf(nzero).equals(Float.valueOf(pz)));
     87         assertEquals(Float.valueOf(nzero), Float.valueOf(nz));
     88         assertTrue(!Float.valueOf(nzero).equals(Float.valueOf(pzero)));
     89         assertEquals(Float.valueOf(nzero), Float.valueOf(nzero));
     90 
     91         // Nan's compare as equal
     92         Float sqrtm2 = Float.valueOf((float) Math.sqrt(-2.0f));
     93         Float sqrtm3 = Float.valueOf((float) Math.sqrt(-3.0f));
     94         assertEquals(sqrtm2, sqrtm3);
     95     }
     96 
     97     @SmallTest
     98     public void testDouble() throws Exception {
     99         double pz = 0.0;
    100         double nz = -0.0;
    101 
    102         double pzero = 1.0 / Double.POSITIVE_INFINITY;
    103         double nzero = 1.0 / Double.NEGATIVE_INFINITY;
    104 
    105         // Everything compares as '=='
    106         assertTrue(pz == pz);
    107         assertTrue(pz == nz);
    108         assertTrue(pz == pzero);
    109         assertTrue(pz == nzero);
    110 
    111         assertTrue(nz == pz);
    112         assertTrue(nz == nz);
    113         assertTrue(nz == pzero);
    114         assertTrue(nz == nzero);
    115 
    116         assertTrue(pzero == pz);
    117         assertTrue(pzero == nz);
    118         assertTrue(pzero == pzero);
    119         assertTrue(pzero == nzero);
    120 
    121         assertTrue(nzero == pz);
    122         assertTrue(nzero == nz);
    123         assertTrue(nzero == pzero);
    124         assertTrue(nzero == nzero);
    125 
    126         // +-0 are distinct as Doubles
    127         assertEquals(Double.valueOf(pz), Double.valueOf(pz));
    128         assertTrue(!Double.valueOf(pz).equals(Double.valueOf(nz)));
    129         assertEquals(Double.valueOf(pz), Double.valueOf(pzero));
    130         assertTrue(!Double.valueOf(pz).equals(Double.valueOf(nzero)));
    131 
    132         assertTrue(!Double.valueOf(nz).equals(Double.valueOf(pz)));
    133         assertEquals(Double.valueOf(nz), Double.valueOf(nz));
    134         assertTrue(!Double.valueOf(nz).equals(Double.valueOf(pzero)));
    135         assertEquals(Double.valueOf(nz), Double.valueOf(nzero));
    136 
    137         assertEquals(Double.valueOf(pzero), Double.valueOf(pz));
    138         assertTrue(!Double.valueOf(pzero).equals(Double.valueOf(nz)));
    139         assertEquals(Double.valueOf(pzero), Double.valueOf(pzero));
    140         assertTrue(!Double.valueOf(pzero).equals(Double.valueOf(nzero)));
    141 
    142         assertTrue(!Double.valueOf(nzero).equals(Double.valueOf(pz)));
    143         assertEquals(Double.valueOf(nzero), Double.valueOf(nz));
    144         assertTrue(!Double.valueOf(nzero).equals(Double.valueOf(pzero)));
    145         assertEquals(Double.valueOf(nzero), Double.valueOf(nzero));
    146 
    147         // Nan's compare as equal
    148         Double sqrtm2 = Double.valueOf(Math.sqrt(-2.0));
    149         Double sqrtm3 = Double.valueOf(Math.sqrt(-3.0));
    150         assertEquals(sqrtm2, sqrtm3);
    151     }
    152 }
    153