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