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