1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.lang; 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class FloatTest extends TestCase { 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int rawBitsFor3_4eN38To38[] = { 0x1394470, 0x2e7958c, 0x490bd77, 0x634ecd5, 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7e2280b, 0x98d5907, 0xb30af48, 0xcdcdb1a, 0xe8a08f0, 0x102c8b2d, 0x11d7adf8, 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1386ccbb, 0x15287fe9, 0x16d29fe4, 0x1883a3ee, 0x1a248cea, 0x1bcdb025, 0x1d808e17, 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1f20b19d, 0x20c8de04, 0x227b1585, 0x241ced73, 0x25c428d0, 0x27753303, 0x29193fe2, 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x2abf8fdb, 0x2c6f73d1, 0x2e15a863, 0x2fbb127c, 0x3169d71a, 0x33122671, 0x34b6b00d, 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x36645c10, 0x380eb98a, 0x39b267ec, 0x3b5f01e8, 0x3d0b6131, 0x3eae397d, 0x4059c7dc, 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x42081cea, 0x43aa2424, 0x4554ad2d, 0x4704ec3c, 0x48a6274b, 0x4a4fb11e, 0x4c01ceb3, 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x4da2425f, 0x4f4ad2f7, 0x50fd87b5, 0x529e74d1, 0x54461205, 0x55f79687, 0x579abe14, 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x59416d99, 0x5af1c900, 0x5c971da0, 0x5e3ce508, 0x5fec1e4a, 0x619392ee, 0x633877a9, 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x64e69594, 0x66901d7c, 0x683424dc, 0x69e12e12, 0x6b8cbccb, 0x6d2febfe, 0x6edbe6fe, 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7089705f, 0x722bcc76, 0x73d6bf94, 0x758637bc, 0x7727c5ac, 0x78d1b717, 0x7a83126e, 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7c23d70a, 0x7dcccccc, 0x7f7fffff }; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String expectedStringFor3_4eN38To38[] = { "3.4028235E-38", "3.4028235E-37", 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028233E-36", "3.4028234E-35", "3.4028236E-34", "3.4028236E-33", 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028234E-32", "3.4028234E-31", "3.4028233E-30", "3.4028236E-29", 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028235E-28", "3.4028235E-27", "3.4028233E-26", "3.4028235E-25", 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028233E-24", "3.4028235E-23", "3.4028236E-22", "3.4028235E-21", 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028236E-20", "3.4028236E-19", "3.4028236E-18", "3.4028235E-17", 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028236E-16", "3.4028234E-15", "3.4028234E-14", "3.4028235E-13", 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028234E-12", "3.4028235E-11", "3.4028236E-10", "3.4028234E-9", "3.4028236E-8", 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028236E-7", "3.4028235E-6", "3.4028235E-5", "3.4028233E-4", "0.0034028236", 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0.034028236", "0.34028235", "3.4028234", "34.028236", "340.28235", "3402.8235", 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "34028.234", "340282.34", "3402823.5", "3.4028236E7", "3.40282336E8", 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.40282342E9", "3.40282348E10", "3.40282343E11", "3.40282337E12", "3.40282353E13", 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028234E14", "3.4028234E15", "3.40282356E16", "3.40282356E17", "3.40282356E18", 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028236E19", "3.4028235E20", "3.4028233E21", "3.4028235E22", "3.4028233E23", 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028236E24", "3.4028234E25", "3.4028233E26", "3.4028234E27", "3.4028235E28", 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028236E29", "3.4028233E30", "3.4028235E31", "3.4028233E32", "3.4028236E33", 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "3.4028236E34", "3.4028234E35", "3.4028236E36", "3.4028235E37", "3.4028235E38" }; 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final int rawBitsFor1_17eN38To38[] = { 0x80800000, 0x82200000, 0x83c80000, 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x857a0000, 0x871c4000, 0x88c35000, 0x8a742400, 0x8c189680, 0x8dbebc20, 0x8f6e6b28, 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x911502f9, 0x92ba43b7, 0x9468d4a5, 0x961184e7, 0x97b5e621, 0x99635fa9, 0x9b0e1bca, 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x9cb1a2bc, 0x9e5e0b6b, 0xa00ac723, 0xa1ad78ec, 0xa358d727, 0xa5078678, 0xa6a96816, 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xa853c21c, 0xaa045951, 0xaba56fa6, 0xad4ecb8f, 0xaf013f39, 0xb0a18f08, 0xb249f2ca, 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xb3fc6f7c, 0xb59dc5ae, 0xb7453719, 0xb8f684df, 0xba9a130c, 0xbc4097ce, 0xbdf0bdc2, 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xbf967699, 0xc13c1440, 0xc2eb1950, 0xc492efd2, 0xc637abc6, 0xc7e596b8, 0xc98f7e33, 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xcb335dc0, 0xcce0352f, 0xce8c213e, 0xd02f298d, 0xd1daf3f0, 0xd388d876, 0xd52b0e94, 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xd6d5d239, 0xd885a363, 0xda270c3c, 0xdbd0cf4b, 0xdd82818f, 0xdf2321f3, 0xe0cbea70, 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xe27ee50b, 0xe41f4f27, 0xe5c722f1, 0xe778ebad, 0xe91b934c, 0xeac2781f, 0xec731627, 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xee17edd8, 0xefbde94f, 0xf16d63a2, 0xf3145e45, 0xf4b975d7, 0xf667d34c, 0xf810e410, 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xf9b51d14, 0xfb626459, 0xfd0d7eb7, 0xfeb0de65 }; 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String expectedStringFor1_17eN38To38[] = { "-1.17549435E-38", 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754944E-37", "-1.17549435E-36", "-1.17549435E-35", "-1.1754944E-34", 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.17549435E-33", "-1.17549435E-32", "-1.1754944E-31", "-1.17549435E-30", 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.17549435E-29", "-1.1754944E-28", "-1.1754943E-27", "-1.17549435E-26", 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754943E-25", "-1.1754944E-24", "-1.1754943E-23", "-1.1754944E-22", 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754943E-21", "-1.1754943E-20", "-1.1754943E-19", "-1.1754944E-18", 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754944E-17", "-1.1754943E-16", "-1.1754943E-15", "-1.1754944E-14", 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754943E-13", "-1.1754944E-12", "-1.1754943E-11", "-1.1754943E-10", 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754944E-9", "-1.1754944E-8", "-1.1754943E-7", "-1.1754944E-6", 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754943E-5", "-1.1754943E-4", "-0.0011754944", "-0.011754943", "-0.117549434", 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754943", "-11.754944", "-117.54944", "-1175.4944", "-11754.943", "-117549.44", 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1175494.4", "-1.1754944E7", "-1.17549432E8", "-1.1754944E9", "-1.17549435E10", 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.17549433E11", "-1.17549433E12", "-1.17549438E13", "-1.17549438E14", 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754943E15", "-1.17549432E16", "-1.17549432E17", "-1.17549434E18", 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754944E19", "-1.1754944E20", "-1.1754943E21", "-1.1754943E22", 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754944E23", "-1.17549434E24", "-1.1754943E25", "-1.1754943E26", 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.17549434E27", "-1.1754943E28", "-1.1754944E29", "-1.1754943E30", 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754943E31", "-1.1754944E32", "-1.1754943E33", "-1.1754944E34", 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-1.1754944E35", "-1.1754944E36", "-1.1754943E37", "-1.1754943E38" }; 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void doTestCompareRawBits(String originalFloatString, int expectedRawBits, 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString) { 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int rawBits; 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float result = Float.parseFloat(originalFloatString); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes rawBits = Float.floatToIntBits(result); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Original float(" + originalFloatString + ") Converted float(" + result 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ") Expecting:" + Integer.toHexString(expectedRawBits) + " Got: " 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + Integer.toHexString(rawBits), expectedRawBits, rawBits); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#Float(float) 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorF() { 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.Float(float) 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(900.89f); 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Created incorrect float", f.floatValue() == 900.89f); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#Float(java.lang.String) 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_String() { 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.Float(java.lang.String) 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float("900.89"); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Created incorrect Float", f.floatValue() == 900.89f); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#byteValue() 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_byteValue() { 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method byte java.lang.Float.byteValue() 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(0.46874f); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f2 = new Float(90.8f); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect byte value", f.byteValue() == 0 && f2.byteValue() == 90); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#compareTo(java.lang.Float) 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#compare(float, float) 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_compare() { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float[] values = new float[] { Float.NEGATIVE_INFINITY, -Float.MAX_VALUE, -2f, 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes -Float.MIN_VALUE, -0f, 0f, Float.MIN_VALUE, 2f, Float.MAX_VALUE, 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.POSITIVE_INFINITY, Float.NaN }; 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < values.length; i++) { 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f1 = values[i]; 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("compare() should be equal: " + f1, Float.compare(f1, f1) == 0); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float F1 = new Float(f1); 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("compareTo() should be equal: " + f1, F1.compareTo(F1) == 0); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j = i + 1; j < values.length; j++) { 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f2 = values[j]; 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("compare() " + f1 + " should be less " + f2, 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.compare(f1, f2) == -1); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("compare() " + f2 + " should be greater " + f1, Float 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compare(f2, f1) == 1); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float F2 = new Float(f2); 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("compareTo() " + f1 + " should be less " + f2, 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes F1.compareTo(F2) == -1); 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("compareTo() " + f2 + " should be greater " + f1, 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes F2.compareTo(F1) == 1); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Float(0.0F).compareTo(null); 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No NPE"); 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#doubleValue() 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_doubleValue() { 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method double java.lang.Float.doubleValue() 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect double value returned", Math.abs(new Float(999999.999f) 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .doubleValue() - 999999.999d) < 1); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#floatToIntBits(float) 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_floatToIntBitsF() { 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f = 9876.2345f; 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int bits = Float.floatToIntBits(f); 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float r = Float.intBitsToFloat(bits); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect intBits returned", f == r); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#floatToRawIntBits(float) 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_floatToRawIntBitsF() { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int i = 0x7fc004d2; 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f = Float.intBitsToFloat(i); 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong raw bits", Float.floatToRawIntBits(f) == i); 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#floatValue() 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_floatValue() { 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method float java.lang.Float.floatValue() 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(87.657f); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f2 = new Float(-0.876f); 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect floatValue", f.floatValue() == 87.657f 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && (f2.floatValue() == -0.876f)); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#hashCode() 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hashCode() { 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method int java.lang.Float.hashCode() 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(1908.8786f); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned invalid hash code for 1908.8786f", f.hashCode() == Float 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .floatToIntBits(1908.8786f)); 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f = new Float(-1.112f); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned invalid hash code for -1.112", f.hashCode() == Float 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .floatToIntBits(-1.112f)); 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f = new Float(0f); 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned invalid hash code for 0", f.hashCode() == Float.floatToIntBits(0f)); 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#intBitsToFloat(int) 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_intBitsToFloatI() { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f = 9876.2345f; 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int bits = Float.floatToIntBits(f); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float r = Float.intBitsToFloat(bits); 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect intBits returned", f, r, 0F); 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#intValue() 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_intValue() { 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method int java.lang.Float.intValue() 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(0.46874f); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f2 = new Float(90.8f); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect int value", f.intValue() == 0 && f2.intValue() == 90); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#isInfinite() 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isInfinite() { 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean java.lang.Float.isInfinite() 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Infinity check failed", 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (new Float(Float.POSITIVE_INFINITY).isInfinite() && new Float( 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.NEGATIVE_INFINITY).isInfinite()) 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !(new Float(0.13131414f).isInfinite())); 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#isInfinite(float) 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isInfiniteF() { 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean java.lang.Float.isInfinite(float) 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Infinity check failed", Float.isInfinite(Float.POSITIVE_INFINITY) 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && (Float.isInfinite(Float.NEGATIVE_INFINITY)) && !(Float.isInfinite(1.0f))); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#isNaN() 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isNaN() { 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean java.lang.Float.isNaN() 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("NAN check failed", new Float(Float.NaN).isNaN() 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !(new Float(1.0f).isNaN())); 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#isNaN(float) 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isNaNF() { 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean java.lang.Float.isNaN(float) 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("NaN check failed", Float.isNaN(Float.NaN) && !(Float.isNaN(12.09f))); 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#longValue() 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_longValue() { 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method long java.lang.Float.longValue() 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(0.46874f); 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f2 = new Float(90.8f); 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect long value", f.longValue() == 0 && f2.longValue() == 90); 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloatLjava_lang_String() { 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect float returned, expected zero.", 0.0, Float 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .parseFloat("7.0064923216240853546186479164495e-46"), 0.0); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect float returned, expected minimum float.", Float.MIN_VALUE, 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.parseFloat("7.0064923216240853546186479164496e-46"), 0.0); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits( 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0.000000000000000000000000000000000000011754942807573642917278829910357665133228589927589904276829631184250030649651730385585324256680905818939208984375", 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, "1.17549435E-38"); 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits( 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0.00000000000000000000000000000000000001175494280757364291727882991035766513322858992758990427682963118425003064965173038558532425668090581893920898437499999f", 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7fffff, "1.1754942E-38"); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* Test a set of regular floats with exponents from -38 to +38 */ 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 38; i > 3; i--) { 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String testString; 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testString = "3.4028234663852886e-" + i; 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits(testString, rawBitsFor3_4eN38To38[38 - i], 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 - i]); 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e-3", rawBitsFor3_4eN38To38[38 - 3], 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 - 3]); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e-2", rawBitsFor3_4eN38To38[38 - 2], 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 - 2]); 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e-1", rawBitsFor3_4eN38To38[38 - 1], 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 - 1]); 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e-0", rawBitsFor3_4eN38To38[38 - 0], 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 - 0]); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e+1", rawBitsFor3_4eN38To38[38 + 1], 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 + 1]); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e+2", rawBitsFor3_4eN38To38[38 + 2], 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 + 2]); 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e+3", rawBitsFor3_4eN38To38[38 + 3], 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 + 3]); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e+4", rawBitsFor3_4eN38To38[38 + 4], 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 + 4]); 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e+5", rawBitsFor3_4eN38To38[38 + 5], 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 + 5]); 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886e+6", rawBitsFor3_4eN38To38[38 + 6], 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 + 6]); 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 7; i < 39; i++) { 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String testString; 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testString = "3.4028234663852886e+" + i; 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits(testString, rawBitsFor3_4eN38To38[38 + i], 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor3_4eN38To38[38 + i]); 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* Test another set of regular floats with exponents from -38 to +38 */ 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 38; i > 3; i--) { 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String testString; 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testString = "-1.1754943508222875e-" + i; 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits(testString, rawBitsFor1_17eN38To38[38 - i], 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 - i]); 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e-3", rawBitsFor1_17eN38To38[38 - 3], 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 - 3]); 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e-2", rawBitsFor1_17eN38To38[38 - 2], 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 - 2]); 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e-1", rawBitsFor1_17eN38To38[38 - 1], 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 - 1]); 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e-0", rawBitsFor1_17eN38To38[38 - 0], 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 - 0]); 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e+1", rawBitsFor1_17eN38To38[38 + 1], 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 + 1]); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e+2", rawBitsFor1_17eN38To38[38 + 2], 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 + 2]); 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e+3", rawBitsFor1_17eN38To38[38 + 3], 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 + 3]); 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e+4", rawBitsFor1_17eN38To38[38 + 4], 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 + 4]); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e+5", rawBitsFor1_17eN38To38[38 + 5], 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 + 5]); 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1754943508222875e+6", rawBitsFor1_17eN38To38[38 + 6], 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 + 6]); 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 7; i < 39; i++) { 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String testString; 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testString = "-1.1754943508222875e+" + i; 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits(testString, rawBitsFor1_17eN38To38[38 + i], 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes expectedStringFor1_17eN38To38[38 + i]); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* Test denormalized floats (floats with exponents <= -38 */ 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("1.1012984643248170E-45", 1, "1.4E-45"); 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.1012984643248170E-45", 0x80000001, "-1.4E-45"); 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("1.0E-45", 1, "1.4E-45"); 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.0E-45", 0x80000001, "-1.4E-45"); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("0.9E-45", 1, "1.4E-45"); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-0.9E-45", 0x80000001, "-1.4E-45"); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("4.203895392974451e-45", 3, "4.2E-45"); 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-4.203895392974451e-45", 0x80000003, "-4.2E-45"); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("0.004E-45", 0, "0.0"); 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-0.004E-45", 0x80000000, "-0.0"); 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for large floats close to and greater than 3.4028235E38 and 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * -3.4028235E38 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("1.2E+38", 0x7eb48e52, "1.2E38"); 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.2E+38", 0xfeb48e52, "-1.2E38"); 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.2E+38", 0x7f70bdc2, "3.2E38"); 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-3.2E+38", 0xff70bdc2, "-3.2E38"); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4E+38", 0x7f7fc99e, "3.4E38"); 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-3.4E+38", 0xff7fc99e, "-3.4E38"); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.4028234663852886E+38", 0x7f7fffff, "3.4028235E38"); 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-3.4028234663852886E+38", 0xff7fffff, "-3.4028235E38"); 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.405E+38", 0x7f800000, "Infinity"); 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-3.405E+38", 0xff800000, "-Infinity"); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.41E+38", 0x7f800000, "Infinity"); 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-3.41E+38", 0xff800000, "-Infinity"); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("3.42E+38", 0x7f800000, "Infinity"); 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-3.42E+38", 0xff800000, "-Infinity"); 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("1.0E+39", 0x7f800000, "Infinity"); 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("-1.0E+39", 0xff800000, "-Infinity"); 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_Unusual() { 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual; 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0x00000000000000000000000000000000000000000.0000000000000000000000000000000000000p0000000000000000000000000000000000"); 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", 0.0f, actual, 0.0F); 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("+0Xfffff.fffffffffffffffffffffffffffffffp+99F"); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", 6.64614E35f, actual, 0.0F); 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("-0X.123456789abcdefp+99f"); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", -4.5072022E28f, actual, 0.0F); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("-0X123456789abcdef.p+1f"); 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", -1.63971062E17f, actual, 0.0F); 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("-0X000000000000000000000000000001abcdef.0000000000000000000000000001abefp00000000000000000000000000000000000000000004f"); 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", -4.48585472E8f, actual, 0.0F); 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0X0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001234p600f"); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", 5.907252E33f, actual, 0.0F); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0x1.p9223372036854775807"); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F); 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0x1.p9223372036854775808"); 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0x10.p9223372036854775808"); 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0xabcd.ffffffffp+2000"); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F); 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0x1.p-9223372036854775808"); 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", 0.0f, actual, 0.0F); 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0x1.p-9223372036854775809"); 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", 0.0f, actual, 0.0F); 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes actual = Float.parseFloat("0x.1p-9223372036854775809"); 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Returned incorrect value", 0.0f, actual, 0.0F); 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_NormalPositiveExponent() { 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] expecteds = { 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x3991a2b4, 0x43cc0247, 0x47909009, 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x4ac0c009, 0x4e109005, 0x5140c005, 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x5458d805, 0x57848402, 0x5a909002, 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x5da8a802, 0x60c0c002, 0x63cccc02, 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x66e4e402, 0x69f0f002, 0x6d048401, 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x70109001, 0x73169601, 0x76810810, 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x79840840, 0x7c8a08a0, 0x7f800000, 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f800000, 0x7f800000, 0x7f800000, 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f800000, 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < expecteds.length; i++) { 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int part = i * 6; 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String inputString = "0x" + part + "." + part + "0123456789abcdefp" + part; 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual = Float.parseFloat(inputString); 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float expected = Float.intBitsToFloat(expecteds[i]); 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString = Integer.toHexString(Float.floatToIntBits(expected)); 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String actualString = Integer.toHexString(Float.floatToIntBits(actual)); 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String errorMsg = i + "th input string is:<" + inputString 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">.The expected result should be:<" + expectedString 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">, but was: <" + actualString + ">. "; 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(errorMsg, expected, actual, 0.0F); 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_NormalNegativeExponent() { 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] expecteds = { 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x3991a2b4, 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x3d6e0247, 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x3aa0a009, 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x37848405, 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x3420a005, 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x30d4d405, 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x2d848402, 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x2a129202, 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x26acac02, 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x2346c602, 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1fe0e002, 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1c6eee02, 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x19048401, 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x15919101, 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x12189801, 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xf028828, 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xb890890, 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80c88c8, 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x4930930, 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1198998, 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x28028, 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x51c, 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xb, 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x0, 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x0, 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < expecteds.length; i++) { 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int part = i * 7; 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String inputString = "0x" + part + "." + part + "0123456789abcdefp-" + part; 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual = Float.parseFloat(inputString); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float expected = Float.intBitsToFloat(expecteds[i]); 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString = Integer.toHexString(Float.floatToIntBits(expected)); 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String actualString = Integer.toHexString(Float.floatToIntBits(actual)); 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String errorMsg = i + "th input string is:<" + inputString 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">.The expected result should be:<" + expectedString 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">, but was: <" + actualString + ">. "; 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(errorMsg, expected, actual, 0.0F); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_MaxNormalBoundary() { 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] expecteds ={ 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f7fffff, 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f7fffff, 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f7fffff, 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f800000, 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f800000, 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7f800000, 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xff7fffff, 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xff7fffff, 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xff7fffff, 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xff800000, 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xff800000, 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0xff800000, 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] inputs = { 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.fffffep127", 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.fffffe000000000000000000000000000000000000000000000001p127", 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127", 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.ffffffp127", 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.ffffff000000000000000000000000000000000000000000000001p127", 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127", 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.fffffep127", 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.fffffe000000000000000000000000000000000000000000000001p127", 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127", 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.ffffffp127", 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.ffffff000000000000000000000000000000000000000000000001p127", 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127", 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < inputs.length; i++) { 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual = Float.parseFloat(inputs[i]); 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float expected = Float.intBitsToFloat(expecteds[i]); 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString = Integer.toHexString(Float.floatToIntBits(expected)); 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String actualString = Integer.toHexString(Float.floatToIntBits(actual)); 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String errorMsg = i + "th input string is:<" + inputs[i] 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">.The expected result should be:<" + expectedString 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">, but was: <" + actualString + ">. "; 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(errorMsg, expected, actual, 0.0F); 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_MinNormalBoundary() { 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int expecteds[] = { 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800001, 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800001, 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800000, 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800000, 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800000, 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800000, 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800001, 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800001, 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String inputs[] = { 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.0p-126", 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.00000000000000000000000000000000000000000000001p-126", 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.000001p-126", 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.000001000000000000000000000000000000000000000001p-126", 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x1.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.0p-126", 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.00000000000000000000000000000000000000000000001p-126", 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.000001p-126", 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.000001000000000000000000000000000000000000000001p-126", 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x1.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < inputs.length; i++) { 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual = Float.parseFloat(inputs[i]); 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float expected = Float.intBitsToFloat(expecteds[i]); 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString = Integer.toHexString(Float.floatToIntBits(expected)); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String actualString = Integer.toHexString(Float.floatToIntBits(actual)); 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String errorMsg = i + "th input string is:<" + inputs[i] 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">.The expected result should be:<" + expectedString 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">, but was: <" + actualString + ">. "; 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(errorMsg, expected, actual, 0.0F); 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_MaxSubNormalBoundary() { 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int expecteds[] = { 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7fffff, 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7fffff, 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x7fffff, 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x800000, 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x807fffff, 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x807fffff, 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x807fffff, 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800000, 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800000, 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80800000, 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String inputs[] = { 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.fffffep-126", 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.fffffe000000000000000000000000000000000000000000000000000001p-126", 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.fffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.ffffffp-126", 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.ffffff0000000000000000000000000000000000000000000000000000001p-126", 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.fffffep-126", 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.fffffe000000000000000000000000000000000000000000000000000001p-126", 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.fffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.ffffffp-126", 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.ffffff0000000000000000000000000000000000000000000000000000001p-126", 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < inputs.length; i++) { 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual = Float.parseFloat(inputs[i]); 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float expected = Float.intBitsToFloat(expecteds[i]); 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString = Integer.toHexString(Float.floatToIntBits(expected)); 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String actualString = Integer.toHexString(Float.floatToIntBits(actual)); 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String errorMsg = i + "th input string is:<" + inputs[i] 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">.The expected result should be:<" + expectedString 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">, but was: <" + actualString + ">. "; 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(errorMsg, expected, actual, 0.0F); 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_MinSubNormalBoundary() { 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int expecteds[] = { 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1, 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1, 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1, 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x2, 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x2, 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x2, 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000001, 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000001, 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000001, 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000002, 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000002, 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000002, 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String inputs[] = { 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000002p-126", 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.00000200000000000000000000000000000000000001p-126", 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000002ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000003p-126", 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000003000000000000000000000000000000000000001p-126", 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000002p-126", 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.00000200000000000000000000000000000000000001p-126", 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000002ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000003p-126", 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000003000000000000000000000000000000000000001p-126", 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < inputs.length; i++) { 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual = Float.parseFloat(inputs[i]); 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float expected = Float.intBitsToFloat(expecteds[i]); 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString = Integer.toHexString(Float.floatToIntBits(expected)); 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String actualString = Integer.toHexString(Float.floatToIntBits(actual)); 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String errorMsg = i + "th input string is:<" + inputs[i] 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">.The expected result should be:<" + expectedString 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">, but was: <" + actualString + ">. "; 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(errorMsg, expected, actual, 0.0F); 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_ZeroBoundary() { 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int expecteds[] = { 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x0, 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x0, 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x0, 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x0, 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1, 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x1, 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000000, 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000000, 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000000, 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000000, 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000001, 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 0x80000001, 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String inputs[] = { 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000000000000000p-126", 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000000000000000000000000000000000000000000000001p-126", 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000001p-126", 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000001000000000000000000000000000000000000000001p-126", 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "0x0.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000000000000000p-126", 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000000000000000000000000000000000000000000000001p-126", 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000001p-126", 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000001000000000000000000000000000000000000000001p-126", 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-0x0.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126", 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < inputs.length; i++) { 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float actual = Float.parseFloat(inputs[i]); 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float expected = Float.intBitsToFloat(expecteds[i]); 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String expectedString = Integer.toHexString(Float.floatToIntBits(expected)); 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String actualString = Integer.toHexString(Float.floatToIntBits(actual)); 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String errorMsg = i + "th input string is:<" + inputs[i] 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">.The expected result should be:<" + expectedString 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ">, but was: <" + actualString + ">. "; 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(errorMsg, expected, actual, 0.0F); 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#parseFloat(java.lang.String) 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_parseFloat_LString_Harmony6261() { 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for HARMONY-6261 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f = new Float("2147483648"); 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2.1474836E9", Float.toString(f)); 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("123456790528.000000000000000f", 0x51e5f4c9, "1.2345679E11"); 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("8589934592", 0x50000000, "8.5899346E9"); 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes doTestCompareRawBits("8606711808", 0x50004000, "8.606712E9"); 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#shortValue() 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_shortValue() { 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method short java.lang.Float.shortValue() 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(0.46874f); 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f2 = new Float(90.8f); 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect short value", f.shortValue() == 0 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && f2.shortValue() == 90); 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#toString() 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() { 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.String java.lang.Float.toString() 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes test_toString(12.90898f, "12.90898"); 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes test_toString(1.7014118346046924e+38F, "1.7014118E38"); 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes test_toString(1E19F, "1.0E19"); 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes test_toString(1E-36F, "1.0E-36"); 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes test_toString(1.0E-38F, "1.0E-38"); 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#toString(float) 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toStringF() { 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.String java.lang.Float.toString(float) 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float ff; 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String answer; 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ff = 12.90898f; 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes answer = "12.90898"; 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect String representation want " + answer + ", got " 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + Float.toString(ff), Float.toString(ff).equals(answer)); 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ff = Float.MAX_VALUE; 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes answer = "3.4028235E38"; 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect String representation want " + answer + ", got " 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + Float.toString(ff), Float.toString(ff).equals(answer)); 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#valueOf(java.lang.String) 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_valueOfLjava_lang_String() { 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.Float 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.Float.valueOf(java.lang.String) 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float wanted = new Float(432.1235f); 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float got = Float.valueOf("432.1235"); 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect float returned--wanted: " + wanted + " but got: " + got, got 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(wanted)); 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes wanted = new Float(0f); 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes got = Float.valueOf("0"); 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect float returned--wanted: " + wanted + " but got: " + got, got 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(wanted)); 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes wanted = new Float(-1212.3232f); 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes got = Float.valueOf("-1212.3232"); 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect float returned--wanted: " + wanted + " but got: " + got, got 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(wanted)); 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.valueOf(null); 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected Float.valueOf(null) to throw NPE."); 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ex) { 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.valueOf(""); 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Expected Float.valueOf(\"\") to throw NFE"); 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NumberFormatException e) { 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float posZero = Float.valueOf("+0.0"); 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float negZero = Float.valueOf("-0.0"); 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("Floattest0", posZero.equals(negZero)); 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Floattest1", 0.0f == -0.0f); 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Tests for float values by name. 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float expectedNaN = new Float(Float.NaN); 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float posNaN = Float.valueOf("NaN"); 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Floattest2", posNaN.equals(expectedNaN)); 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float posNaNSigned = Float.valueOf("+NaN"); 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Floattest3", posNaNSigned.equals(expectedNaN)); 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float negNaNSigned = Float.valueOf("-NaN"); 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Floattest4", negNaNSigned.equals(expectedNaN)); 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float posInfinite = Float.valueOf("Infinity"); 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Floattest5", posInfinite.equals(new Float(Float.POSITIVE_INFINITY))); 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float posInfiniteSigned = Float.valueOf("+Infinity"); 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Floattest6", posInfiniteSigned.equals(new Float(Float.POSITIVE_INFINITY))); 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float negInfiniteSigned = Float.valueOf("-Infinity"); 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Floattest7", negInfiniteSigned.equals(new Float(Float.NEGATIVE_INFINITY))); 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test HARMONY-6641 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes posInfinite = Float.valueOf("320.0E+2147483647"); 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Floattest8", Float.POSITIVE_INFINITY, posInfinite); 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes negZero = Float.valueOf("-1.4E-2147483314"); 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Floattest9", -0.0f, negZero); 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void test_toString(float ff, String answer) { 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.String java.lang.Double.toString(double) 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect String representation want " + answer + ", got (" 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + Float.toString(ff) + ")", Float.toString(ff).equals(answer)); 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f = new Float(ff); 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect String representation want " + answer + ", got (" 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + Float.toString(f.floatValue()) + ")", Float.toString(f.floatValue()).equals( 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes answer)); 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect String representation want " + answer + ", got (" + f.toString() 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + ")", f.toString().equals(answer)); 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#compareTo(java.lang.Float) 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#compare(float, float) 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_compareToLjava_lang_Float() { 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // A selection of float values in ascending order. 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float[] values = new float[] { Float.NEGATIVE_INFINITY, -Float.MAX_VALUE, -2f, 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes -Float.MIN_VALUE, -0f, 0f, Float.MIN_VALUE, 2f, Float.MAX_VALUE, 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.POSITIVE_INFINITY, Float.NaN }; 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < values.length; i++) { 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f1 = values[i]; 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test that each value compares equal to itself; and each object is 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // equal to another object 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // like itself 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 0: compare() should be equal: " + f1, Float.compare(f1, f1) == 0); 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float objFloat = new Float(f1); 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 1: compareTo() should be equal: " + objFloat, objFloat 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compareTo(objFloat) == 0); 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test that the Float-defined order is respected 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int j = i + 1; j < values.length; j++) { 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float f2 = values[j]; 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 2: compare() " + f1 + " should be less " + f2, Float 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compare(f1, f2) == -1); 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 3: compare() " + f2 + " should be greater " + f1, Float 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compare(f2, f1) == 1); 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float F2 = new Float(f2); 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 4: compareTo() " + f1 + " should be less " + f2, objFloat 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compareTo(F2) == -1); 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 5: compareTo() " + f2 + " should be greater " + f1, F2 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compareTo(objFloat) == 1); 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#equals(java.lang.Object) 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_equalsLjava_lang_Object() { 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f1 = new Float(8765.4321f); 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f2 = new Float(8765.4321f); 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float f3 = new Float(-1.0f); 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 0: Equality test failed", f1.equals(f2) && !(f1.equals(f3))); 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 1: NaN should not be == Nan", Float.NaN != Float.NaN); 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 2: NaN should not be == Nan", new Float(Float.NaN).equals(new Float( 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.NaN))); 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 3: -0f should be == 0f", 0f == -0f); 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Assert 4: -0f should not be equals() 0f", !new Float(0f).equals(new Float( 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes -0f))); 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f1 = new Float(1098.576f); 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f2 = new Float(1098.576f); 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes f3 = new Float(1.0f); 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Equality test failed", f1.equals(f2) && !(f1.equals(f3))); 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("NaN should not be == Nan", Float.NaN != Float.NaN); 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("NaN should not be == Nan", new Float(Float.NaN) 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(new Float(Float.NaN))); 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("-0f should be == 0f", 0f == -0f); 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("-0f should not be equals() 0f", !new Float(0f).equals(new Float(-0f))); 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#toHexString(float) 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toHexStringF() { 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the follow values comes from the Float Javadoc/Spec 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x0.0p0", Float.toHexString(0.0F)); 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("-0x0.0p0", Float.toHexString(-0.0F)); 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.0p0", Float.toHexString(1.0F)); 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("-0x1.0p0", Float.toHexString(-1.0F)); 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.0p1", Float.toHexString(2.0F)); 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.8p1", Float.toHexString(3.0F)); 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.0p-1", Float.toHexString(0.5F)); 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.0p-2", Float.toHexString(0.25F)); 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.fffffep127", Float.toHexString(Float.MAX_VALUE)); 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x0.000002p-126", Float.toHexString(Float.MIN_VALUE)); 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test edge cases 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("NaN", Float.toHexString(Float.NaN)); 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("-Infinity", Float.toHexString(Float.NEGATIVE_INFINITY)); 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Infinity", Float.toHexString(Float.POSITIVE_INFINITY)); 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test various numbers 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("-0x1.da8p6", Float.toHexString(-118.625F)); 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.295788p23", Float.toHexString(9743299.65F)); 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.295788p23", Float.toHexString(9743299.65000F)); 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.295788p23", Float.toHexString(9743299.650001234F)); 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.700d1p33", Float.toHexString(12349743299.65000F)); 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test HARMONY-2132 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("0x1.01p10", Float.toHexString(0x1.01p10f)); 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.lang.Float#valueOf(float) 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_valueOfF() { 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new Float(Float.MIN_VALUE), Float.valueOf(Float.MIN_VALUE)); 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new Float(Float.MAX_VALUE), Float.valueOf(Float.MAX_VALUE)); 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new Float(0), Float.valueOf(0)); 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int s = -128; 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (s < 128) { 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new Float(s), Float.valueOf(s)); 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new Float(s + 0.1F), Float.valueOf(s + 0.1F)); 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.valueOf(s + 0.1F), Float.valueOf(s + 0.1F)); 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s++; 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.lang.Float#MAX_EXPONENT} 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_MAX_EXPONENT() { 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value of java.lang.Float.MAX_EXPONENT", 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.MAX_EXPONENT == 127); 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value of java.lang.Float.MAX_EXPONENT", 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.MAX_EXPONENT == Math.getExponent(Float.MAX_VALUE)); 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.lang.Float#MIN_EXPONENT} 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_MIN_EXPONENT() { 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value of java.lang.Float.MIN_EXPONENT", 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.MIN_EXPONENT == -126); 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value of java.lang.Float.MIN_EXPONENT", 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.MIN_EXPONENT == Math.getExponent(Float.MIN_NORMAL)); 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests {@link java.lang.Float#MIN_NORMAL} 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_MIN_NORMAL() { 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value of java.lang.Float.MIN_NORMAL", 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.MIN_NORMAL == 0x1.0p-126f); 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value of java.lang.Float.MIN_NORMAL", 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.MIN_NORMAL == Float.intBitsToFloat(0x00800000)); 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong value of java.lang.Float.MIN_NORMAL", 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Float.MIN_NORMAL == 1.1754943508222875E-38f); 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 1078