1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements. See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.apache.harmony.luni.tests.java.lang;
19 import dalvik.annotation.TestTargets;
20 import dalvik.annotation.TestLevel;
21 import dalvik.annotation.TestTargetNew;
22 import dalvik.annotation.TestTargetClass;
24 import junit.framework.TestCase;
26 @TestTargetClass(Float.class)
27 public class FloatTest extends TestCase {
29 private static final int rawBitsFor3_4eN38To38[] = { 0x1394470, 0x2e7958c, 0x490bd77, 0x634ecd5,
30 0x7e2280b, 0x98d5907, 0xb30af48, 0xcdcdb1a, 0xe8a08f0, 0x102c8b2d, 0x11d7adf8,
31 0x1386ccbb, 0x15287fe9, 0x16d29fe4, 0x1883a3ee, 0x1a248cea, 0x1bcdb025, 0x1d808e17,
32 0x1f20b19d, 0x20c8de04, 0x227b1585, 0x241ced73, 0x25c428d0, 0x27753303, 0x29193fe2,
33 0x2abf8fdb, 0x2c6f73d1, 0x2e15a863, 0x2fbb127c, 0x3169d71a, 0x33122671, 0x34b6b00d,
34 0x36645c10, 0x380eb98a, 0x39b267ec, 0x3b5f01e8, 0x3d0b6131, 0x3eae397d, 0x4059c7dc,
35 0x42081cea, 0x43aa2424, 0x4554ad2d, 0x4704ec3c, 0x48a6274b, 0x4a4fb11e, 0x4c01ceb3,
36 0x4da2425f, 0x4f4ad2f7, 0x50fd87b5, 0x529e74d1, 0x54461205, 0x55f79687, 0x579abe14,
37 0x59416d99, 0x5af1c900, 0x5c971da0, 0x5e3ce508, 0x5fec1e4a, 0x619392ee, 0x633877a9,
38 0x64e69594, 0x66901d7c, 0x683424dc, 0x69e12e12, 0x6b8cbccb, 0x6d2febfe, 0x6edbe6fe,
39 0x7089705f, 0x722bcc76, 0x73d6bf94, 0x758637bc, 0x7727c5ac, 0x78d1b717, 0x7a83126e,
40 0x7c23d70a, 0x7dcccccc, 0x7f7fffff };
42 private static final String expectedStringFor3_4eN38To38[] = { "3.4028235E-38", "3.4028235E-37",
43 "3.4028233E-36", "3.4028234E-35", "3.4028236E-34", "3.4028236E-33",
44 "3.4028234E-32", "3.4028234E-31", "3.4028233E-30", "3.4028236E-29",
45 "3.4028235E-28", "3.4028235E-27", "3.4028233E-26", "3.4028235E-25",
46 "3.4028233E-24", "3.4028235E-23", "3.4028236E-22", "3.4028235E-21",
47 "3.4028236E-20", "3.4028236E-19", "3.4028236E-18", "3.4028235E-17",
48 "3.4028236E-16", "3.4028234E-15", "3.4028234E-14", "3.4028235E-13",
49 "3.4028234E-12", "3.4028235E-11", "3.4028236E-10", "3.4028234E-9", "3.4028236E-8",
50 "3.4028236E-7", "3.4028235E-6", "3.4028235E-5", "3.4028233E-4", "0.0034028236",
51 "0.034028236", "0.34028235", "3.4028234", "34.028236", "340.28235", "3402.8235",
52 "34028.234", "340282.34", "3402823.5", "3.4028236E7", "3.40282336E8",
53 "3.40282342E9", "3.40282348E10", "3.40282343E11", "3.40282337E12", "3.40282353E13",
54 "3.4028234E14", "3.4028234E15", "3.40282356E16", "3.40282356E17", "3.40282356E18",
55 "3.4028236E19", "3.4028235E20", "3.4028233E21", "3.4028235E22", "3.4028233E23",
56 "3.4028236E24", "3.4028234E25", "3.4028233E26", "3.4028234E27", "3.4028235E28",
57 "3.4028236E29", "3.4028233E30", "3.4028235E31", "3.4028233E32", "3.4028236E33",
58 "3.4028236E34", "3.4028234E35", "3.4028236E36", "3.4028235E37", "3.4028235E38" };
60 private static final int rawBitsFor1_17eN38To38[] = { 0x80800000, 0x82200000, 0x83c80000,
61 0x857a0000, 0x871c4000, 0x88c35000, 0x8a742400, 0x8c189680, 0x8dbebc20, 0x8f6e6b28,
62 0x911502f9, 0x92ba43b7, 0x9468d4a5, 0x961184e7, 0x97b5e621, 0x99635fa9, 0x9b0e1bca,
63 0x9cb1a2bc, 0x9e5e0b6b, 0xa00ac723, 0xa1ad78ec, 0xa358d727, 0xa5078678, 0xa6a96816,
64 0xa853c21c, 0xaa045951, 0xaba56fa6, 0xad4ecb8f, 0xaf013f39, 0xb0a18f08, 0xb249f2ca,
65 0xb3fc6f7c, 0xb59dc5ae, 0xb7453719, 0xb8f684df, 0xba9a130c, 0xbc4097ce, 0xbdf0bdc2,
66 0xbf967699, 0xc13c1440, 0xc2eb1950, 0xc492efd2, 0xc637abc6, 0xc7e596b8, 0xc98f7e33,
67 0xcb335dc0, 0xcce0352f, 0xce8c213e, 0xd02f298d, 0xd1daf3f0, 0xd388d876, 0xd52b0e94,
68 0xd6d5d239, 0xd885a363, 0xda270c3c, 0xdbd0cf4b, 0xdd82818f, 0xdf2321f3, 0xe0cbea70,
69 0xe27ee50b, 0xe41f4f27, 0xe5c722f1, 0xe778ebad, 0xe91b934c, 0xeac2781f, 0xec731627,
70 0xee17edd8, 0xefbde94f, 0xf16d63a2, 0xf3145e45, 0xf4b975d7, 0xf667d34c, 0xf810e410,
71 0xf9b51d14, 0xfb626459, 0xfd0d7eb7, 0xfeb0de65 };
73 private static final String expectedStringFor1_17eN38To38[] = { "-1.17549435E-38",
74 "-1.1754944E-37", "-1.17549435E-36", "-1.17549435E-35", "-1.1754944E-34",
75 "-1.17549435E-33", "-1.17549435E-32", "-1.1754944E-31", "-1.17549435E-30",
76 "-1.17549435E-29", "-1.1754944E-28", "-1.1754943E-27", "-1.17549435E-26",
77 "-1.1754943E-25", "-1.1754944E-24", "-1.1754943E-23", "-1.1754944E-22",
78 "-1.1754943E-21", "-1.1754943E-20", "-1.1754943E-19", "-1.1754944E-18",
79 "-1.1754944E-17", "-1.1754943E-16", "-1.1754943E-15", "-1.1754944E-14",
80 "-1.1754943E-13", "-1.1754944E-12", "-1.1754943E-11", "-1.1754943E-10",
81 "-1.1754944E-9", "-1.1754944E-8", "-1.1754943E-7", "-1.1754944E-6",
82 "-1.1754943E-5", "-1.1754943E-4", "-0.0011754944", "-0.011754943", "-0.117549434",
83 "-1.1754943", "-11.754944", "-117.54944", "-1175.4944", "-11754.943", "-117549.44",
84 "-1175494.4", "-1.1754944E7", "-1.17549432E8", "-1.1754944E9", "-1.17549435E10",
85 "-1.17549433E11", "-1.17549433E12", "-1.17549438E13", "-1.17549438E14",
86 "-1.1754943E15", "-1.17549432E16", "-1.17549432E17", "-1.17549434E18",
87 "-1.1754944E19", "-1.1754944E20", "-1.1754943E21", "-1.1754943E22",
88 "-1.1754944E23", "-1.17549434E24", "-1.1754943E25", "-1.1754943E26",
89 "-1.17549434E27", "-1.1754943E28", "-1.1754944E29", "-1.1754943E30",
90 "-1.1754943E31", "-1.1754944E32", "-1.1754943E33", "-1.1754944E34",
91 "-1.1754944E35", "-1.1754944E36", "-1.1754943E37", "-1.1754943E38" };
93 private void doTestCompareRawBits(String originalFloatString, int expectedRawBits,
94 String expectedString) {
96 float result = Float.parseFloat(originalFloatString);
97 rawBits = Float.floatToIntBits(result);
98 assertEquals("Original float(" + originalFloatString + ") Converted float(" + result
99 + ") Expecting:" + Integer.toHexString(expectedRawBits) + " Got: "
100 + Integer.toHexString(rawBits), expectedRawBits, rawBits);
104 * @tests java.lang.Float#Float(float)
107 level = TestLevel.COMPLETE,
112 public void test_ConstructorF() {
113 // Test for method java.lang.Float(float)
115 Float f = new Float(900.89f);
116 assertTrue("Created incorrect float", f.floatValue() == 900.89f);
120 level = TestLevel.COMPLETE,
123 args = {double.class}
125 public void test_ConstructorD() {
127 Float f = new Float(Double.MAX_VALUE);
128 assertTrue("Created incorrect float", f.floatValue() == Float.POSITIVE_INFINITY);
132 * @tests java.lang.Float#Float(java.lang.String)
135 level = TestLevel.COMPLETE,
138 args = {java.lang.String.class}
140 public void test_ConstructorLjava_lang_String() {
141 // Test for method java.lang.Float(java.lang.String)
143 Float f = new Float("900.89");
144 assertTrue("Created incorrect Float", f.floatValue() == 900.89f);
146 new Float("900.89ff");
147 fail("NumberFormatException is not thrown.");
148 } catch(NumberFormatException nfe) {
154 * @tests java.lang.Float#byteValue()
157 level = TestLevel.COMPLETE,
159 method = "byteValue",
162 public void test_byteValue() {
163 // Test for method byte java.lang.Float.byteValue()
164 Float f = new Float(0.46874f);
165 Float f2 = new Float(90.8f);
166 assertTrue("Returned incorrect byte value", f.byteValue() == 0 && f2.byteValue() == 90);
170 * @tests java.lang.Float#compareTo(java.lang.Float)
171 * @tests java.lang.Float#compare(float, float)
174 level = TestLevel.COMPLETE,
177 args = {float.class, float.class}
179 public void test_compare() {
180 float[] values = new float[] { Float.NEGATIVE_INFINITY, -Float.MAX_VALUE, -2f,
181 -Float.MIN_VALUE, -0f, 0f, Float.MIN_VALUE, 2f, Float.MAX_VALUE,
182 Float.POSITIVE_INFINITY, Float.NaN };
183 for (int i = 0; i < values.length; i++) {
184 float f1 = values[i];
185 assertTrue("compare() should be equal: " + f1, Float.compare(f1, f1) == 0);
186 Float F1 = new Float(f1);
187 assertTrue("compareTo() should be equal: " + f1, F1.compareTo(F1) == 0);
188 for (int j = i + 1; j < values.length; j++) {
189 float f2 = values[j];
190 assertTrue("compare() " + f1 + " should be less " + f2,
191 Float.compare(f1, f2) == -1);
192 assertTrue("compare() " + f2 + " should be greater " + f1, Float
193 .compare(f2, f1) == 1);
194 Float F2 = new Float(f2);
195 assertTrue("compareTo() " + f1 + " should be less " + f2,
196 F1.compareTo(F2) == -1);
197 assertTrue("compareTo() " + f2 + " should be greater " + f1,
198 F2.compareTo(F1) == 1);
203 new Float(0.0F).compareTo(null);
205 } catch (NullPointerException e) {
210 * @tests java.lang.Float#doubleValue()
213 level = TestLevel.COMPLETE,
215 method = "doubleValue",
218 public void test_doubleValue() {
219 // Test for method double java.lang.Float.doubleValue()
220 assertTrue("Incorrect double value returned", Math.abs(new Float(999999.999f)
221 .doubleValue() - 999999.999d) < 1);
225 * @tests java.lang.Float#floatToIntBits(float)
228 level = TestLevel.COMPLETE,
230 method = "floatToIntBits",
233 public void test_floatToIntBitsF() {
234 float f = 9876.2345f;
235 int bits = Float.floatToIntBits(f);
236 float r = Float.intBitsToFloat(bits);
237 assertTrue("Incorrect intBits returned", f == r);
239 assertEquals(0x7f800000, Float.floatToIntBits(Float.POSITIVE_INFINITY));
240 assertEquals(0xff800000, Float.floatToIntBits(Float.NEGATIVE_INFINITY));
241 assertEquals(0x7fc00000, Float.floatToIntBits(Float.NaN));
245 * @tests java.lang.Float#floatToRawIntBits(float)
248 level = TestLevel.COMPLETE,
250 method = "floatToRawIntBits",
253 public void test_floatToRawIntBitsF() {
255 float f = Float.intBitsToFloat(i);
256 assertTrue("Wrong raw bits", Float.floatToRawIntBits(f) == i);
258 assertEquals(0x7f800000, Float.floatToRawIntBits(Float.POSITIVE_INFINITY));
259 assertEquals(0xff800000, Float.floatToRawIntBits(Float.NEGATIVE_INFINITY));
260 assertEquals(0x7fc00000, Float.floatToRawIntBits(Float.NaN));
264 * @tests java.lang.Float#floatValue()
267 level = TestLevel.COMPLETE,
269 method = "floatValue",
272 public void test_floatValue() {
273 // Test for method float java.lang.Float.floatValue()
274 Float f = new Float(87.657f);
275 Float f2 = new Float(-0.876f);
276 assertTrue("Returned incorrect floatValue", f.floatValue() == 87.657f
277 && (f2.floatValue() == -0.876f));
282 * @tests java.lang.Float#hashCode()
285 level = TestLevel.COMPLETE,
290 public void test_hashCode() {
291 // Test for method int java.lang.Float.hashCode()
292 Float f = new Float(1908.8786f);
293 assertTrue("Returned invalid hash code for 1908.8786f", f.hashCode() == Float
294 .floatToIntBits(1908.8786f));
296 f = new Float(-1.112f);
297 assertTrue("Returned invalid hash code for -1.112", f.hashCode() == Float
298 .floatToIntBits(-1.112f));
301 assertTrue("Returned invalid hash code for 0", f.hashCode() == Float.floatToIntBits(0f));
303 assertTrue(new Float(Float.MAX_VALUE).hashCode() != new Float(Float.MIN_VALUE).hashCode());
307 * @tests java.lang.Float#intBitsToFloat(int)
310 level = TestLevel.COMPLETE,
312 method = "intBitsToFloat",
315 public void test_intBitsToFloatI() {
316 float f = 9876.2345f;
317 int bits = Float.floatToIntBits(f);
318 float r = Float.intBitsToFloat(bits);
319 assertEquals("Incorrect intBits returned", f, r, 0F);
321 assertEquals(Float.POSITIVE_INFINITY, Float.intBitsToFloat(0x7f800000));
322 assertEquals(Float.NEGATIVE_INFINITY, Float.intBitsToFloat(0xff800000));
324 assertEquals(Float.NaN, Float.intBitsToFloat(0x7f800001));
325 assertEquals(Float.NaN, Float.intBitsToFloat(0x7fffffff));
326 assertEquals(Float.NaN, Float.intBitsToFloat(0xff800001));
327 assertEquals(Float.NaN, Float.intBitsToFloat(0xffffffff));
331 * @tests java.lang.Float#intValue()
334 level = TestLevel.COMPLETE,
339 public void test_intValue() {
340 // Test for method int java.lang.Float.intValue()
341 Float f = new Float(0.46874f);
342 Float f2 = new Float(90.8f);
343 assertTrue("Returned incorrect int value", f.intValue() == 0 && f2.intValue() == 90);
344 assertEquals(Integer.MAX_VALUE, new Float(Float.MAX_VALUE).intValue());
345 assertEquals(0, new Float(Float.MIN_VALUE).intValue());
349 * @tests java.lang.Float#isInfinite()
352 level = TestLevel.COMPLETE,
354 method = "isInfinite",
357 public void test_isInfinite() {
358 // Test for method boolean java.lang.Float.isInfinite()
359 assertTrue("Infinity check failed",
360 (new Float(Float.POSITIVE_INFINITY).isInfinite() && new Float(
361 Float.NEGATIVE_INFINITY).isInfinite())
362 && !(new Float(0.13131414f).isInfinite()));
366 * @tests java.lang.Float#isInfinite(float)
369 level = TestLevel.COMPLETE,
371 method = "isInfinite",
374 public void test_isInfiniteF() {
375 // Test for method boolean java.lang.Float.isInfinite(float)
377 assertTrue("Infinity check failed", Float.isInfinite(Float.POSITIVE_INFINITY)
378 && (Float.isInfinite(Float.NEGATIVE_INFINITY)) && !(Float.isInfinite(1.0f)));
382 * @tests java.lang.Float#isNaN()
385 level = TestLevel.COMPLETE,
390 public void test_isNaN() {
391 // Test for method boolean java.lang.Float.isNaN()
392 assertTrue("NAN check failed", new Float(Float.NaN).isNaN()
393 && !(new Float(1.0f).isNaN()));
397 * @tests java.lang.Float#isNaN(float)
400 level = TestLevel.COMPLETE,
405 public void test_isNaNF() {
406 // Test for method boolean java.lang.Float.isNaN(float)
407 assertTrue("NaN check failed", Float.isNaN(Float.NaN) && !(Float.isNaN(12.09f))
408 && !Float.isNaN(Float.MAX_VALUE) && !Float.isNaN(Float.MIN_VALUE));
412 * @tests java.lang.Float#longValue()
415 level = TestLevel.COMPLETE,
417 method = "longValue",
420 public void test_longValue() {
421 // Test for method long java.lang.Float.longValue()
422 Float f = new Float(0.46874f);
423 Float f2 = new Float(90.8f);
424 assertTrue("Returned incorrect long value", f.longValue() == 0 && f2.longValue() == 90);
425 assertEquals(Long.MAX_VALUE, new Float(Float.MAX_VALUE).longValue());
426 assertEquals(0, new Float(Float.MIN_VALUE).longValue());
430 level = TestLevel.PARTIAL_COMPLETE,
431 notes = "Verifies NumberFormatException.",
432 method = "parseFloat",
433 args = {java.lang.String.class}
435 public void test_parseFloatLExceptions() {
436 String [] incorrectStrings = {"", ";", "99999999EE999999", "99999l",
438 for(int i = 0; i < incorrectStrings.length; i++) {
440 Float.parseFloat(incorrectStrings[i]);
441 fail("NumberFormatException is not thrown for string: "
442 + incorrectStrings[i]);
443 } catch(NumberFormatException nfe) {
450 * @tests java.lang.Float#parseFloat(java.lang.String)
453 level = TestLevel.PARTIAL_COMPLETE,
454 notes = "Verifies boundary cases.",
455 method = "parseFloat",
456 args = {java.lang.String.class}
458 public void test_parseFloatLjava_lang_String() {
459 assertEquals("Incorrect float returned, expected zero.", 0.0, Float
460 .parseFloat("7.0064923216240853546186479164495e-46"), 0.0);
461 assertEquals("Incorrect float returned, expected minimum float.", Float.MIN_VALUE,
462 Float.parseFloat("7.0064923216240853546186479164496e-46"), 0.0);
464 doTestCompareRawBits(
465 "0.000000000000000000000000000000000000011754942807573642917278829910357665133228589927589904276829631184250030649651730385585324256680905818939208984375",
466 0x800000, "1.17549435E-38");
467 doTestCompareRawBits(
468 "0.00000000000000000000000000000000000001175494280757364291727882991035766513322858992758990427682963118425003064965173038558532425668090581893920898437499999f",
469 0x7fffff, "1.1754942E-38");
471 /* Test a set of regular floats with exponents from -38 to +38 */
472 for (int i = 38; i > 3; i--) {
474 testString = "3.4028234663852886e-" + i;
475 doTestCompareRawBits(testString, rawBitsFor3_4eN38To38[38 - i],
476 expectedStringFor3_4eN38To38[38 - i]);
478 doTestCompareRawBits("3.4028234663852886e-3", rawBitsFor3_4eN38To38[38 - 3],
479 expectedStringFor3_4eN38To38[38 - 3]);
480 doTestCompareRawBits("3.4028234663852886e-2", rawBitsFor3_4eN38To38[38 - 2],
481 expectedStringFor3_4eN38To38[38 - 2]);
482 doTestCompareRawBits("3.4028234663852886e-1", rawBitsFor3_4eN38To38[38 - 1],
483 expectedStringFor3_4eN38To38[38 - 1]);
484 doTestCompareRawBits("3.4028234663852886e-0", rawBitsFor3_4eN38To38[38 - 0],
485 expectedStringFor3_4eN38To38[38 - 0]);
486 doTestCompareRawBits("3.4028234663852886e+1", rawBitsFor3_4eN38To38[38 + 1],
487 expectedStringFor3_4eN38To38[38 + 1]);
488 doTestCompareRawBits("3.4028234663852886e+2", rawBitsFor3_4eN38To38[38 + 2],
489 expectedStringFor3_4eN38To38[38 + 2]);
490 doTestCompareRawBits("3.4028234663852886e+3", rawBitsFor3_4eN38To38[38 + 3],
491 expectedStringFor3_4eN38To38[38 + 3]);
492 doTestCompareRawBits("3.4028234663852886e+4", rawBitsFor3_4eN38To38[38 + 4],
493 expectedStringFor3_4eN38To38[38 + 4]);
494 doTestCompareRawBits("3.4028234663852886e+5", rawBitsFor3_4eN38To38[38 + 5],
495 expectedStringFor3_4eN38To38[38 + 5]);
496 doTestCompareRawBits("3.4028234663852886e+6", rawBitsFor3_4eN38To38[38 + 6],
497 expectedStringFor3_4eN38To38[38 + 6]);
499 for (int i = 7; i < 39; i++) {
501 testString = "3.4028234663852886e+" + i;
502 doTestCompareRawBits(testString, rawBitsFor3_4eN38To38[38 + i],
503 expectedStringFor3_4eN38To38[38 + i]);
506 /* Test another set of regular floats with exponents from -38 to +38 */
507 for (int i = 38; i > 3; i--) {
509 testString = "-1.1754943508222875e-" + i;
510 doTestCompareRawBits(testString, rawBitsFor1_17eN38To38[38 - i],
511 expectedStringFor1_17eN38To38[38 - i]);
513 doTestCompareRawBits("-1.1754943508222875e-3", rawBitsFor1_17eN38To38[38 - 3],
514 expectedStringFor1_17eN38To38[38 - 3]);
515 doTestCompareRawBits("-1.1754943508222875e-2", rawBitsFor1_17eN38To38[38 - 2],
516 expectedStringFor1_17eN38To38[38 - 2]);
517 doTestCompareRawBits("-1.1754943508222875e-1", rawBitsFor1_17eN38To38[38 - 1],
518 expectedStringFor1_17eN38To38[38 - 1]);
519 doTestCompareRawBits("-1.1754943508222875e-0", rawBitsFor1_17eN38To38[38 - 0],
520 expectedStringFor1_17eN38To38[38 - 0]);
521 doTestCompareRawBits("-1.1754943508222875e+1", rawBitsFor1_17eN38To38[38 + 1],
522 expectedStringFor1_17eN38To38[38 + 1]);
523 doTestCompareRawBits("-1.1754943508222875e+2", rawBitsFor1_17eN38To38[38 + 2],
524 expectedStringFor1_17eN38To38[38 + 2]);
525 doTestCompareRawBits("-1.1754943508222875e+3", rawBitsFor1_17eN38To38[38 + 3],
526 expectedStringFor1_17eN38To38[38 + 3]);
527 doTestCompareRawBits("-1.1754943508222875e+4", rawBitsFor1_17eN38To38[38 + 4],
528 expectedStringFor1_17eN38To38[38 + 4]);
529 doTestCompareRawBits("-1.1754943508222875e+5", rawBitsFor1_17eN38To38[38 + 5],
530 expectedStringFor1_17eN38To38[38 + 5]);
531 doTestCompareRawBits("-1.1754943508222875e+6", rawBitsFor1_17eN38To38[38 + 6],
532 expectedStringFor1_17eN38To38[38 + 6]);
534 for (int i = 7; i < 39; i++) {
536 testString = "-1.1754943508222875e+" + i;
537 doTestCompareRawBits(testString, rawBitsFor1_17eN38To38[38 + i],
538 expectedStringFor1_17eN38To38[38 + i]);
541 /* Test denormalized floats (floats with exponents <= -38 */
542 doTestCompareRawBits("1.1012984643248170E-45", 1, "1.4E-45");
543 doTestCompareRawBits("-1.1012984643248170E-45", 0x80000001, "-1.4E-45");
544 doTestCompareRawBits("1.0E-45", 1, "1.4E-45");
545 doTestCompareRawBits("-1.0E-45", 0x80000001, "-1.4E-45");
546 doTestCompareRawBits("0.9E-45", 1, "1.4E-45");
547 doTestCompareRawBits("-0.9E-45", 0x80000001, "-1.4E-45");
548 doTestCompareRawBits("4.203895392974451e-45", 3, "4.2E-45");
549 doTestCompareRawBits("-4.203895392974451e-45", 0x80000003, "-4.2E-45");
550 doTestCompareRawBits("0.004E-45", 0, "0.0");
551 doTestCompareRawBits("-0.004E-45", 0x80000000, "-0.0");
554 * Test for large floats close to and greater than 3.4028235E38 and
557 doTestCompareRawBits("1.2E+38", 0x7eb48e52, "1.2E38");
558 doTestCompareRawBits("-1.2E+38", 0xfeb48e52, "-1.2E38");
559 doTestCompareRawBits("3.2E+38", 0x7f70bdc2, "3.2E38");
560 doTestCompareRawBits("-3.2E+38", 0xff70bdc2, "-3.2E38");
561 doTestCompareRawBits("3.4E+38", 0x7f7fc99e, "3.4E38");
562 doTestCompareRawBits("-3.4E+38", 0xff7fc99e, "-3.4E38");
563 doTestCompareRawBits("3.4028234663852886E+38", 0x7f7fffff, "3.4028235E38");
564 doTestCompareRawBits("-3.4028234663852886E+38", 0xff7fffff, "-3.4028235E38");
565 doTestCompareRawBits("3.405E+38", 0x7f800000, "Infinity");
566 doTestCompareRawBits("-3.405E+38", 0xff800000, "-Infinity");
567 doTestCompareRawBits("3.41E+38", 0x7f800000, "Infinity");
568 doTestCompareRawBits("-3.41E+38", 0xff800000, "-Infinity");
569 doTestCompareRawBits("3.42E+38", 0x7f800000, "Infinity");
570 doTestCompareRawBits("-3.42E+38", 0xff800000, "-Infinity");
571 doTestCompareRawBits("1.0E+39", 0x7f800000, "Infinity");
572 doTestCompareRawBits("-1.0E+39", 0xff800000, "-Infinity");
576 * @tests java.lang.Float#parseFloat(java.lang.String)
579 level = TestLevel.PARTIAL_COMPLETE,
580 notes = "Verifies boundary values.",
581 method = "parseFloat",
582 args = {java.lang.String.class}
584 public void test_parseFloat_LString_Unusual() {
587 actual = Float.parseFloat("0x00000000000000000000000000000000000000000.0000000000000000000000000000000000000p0000000000000000000000000000000000");
588 assertEquals("Returned incorrect value", 0.0f, actual, 0.0F);
590 actual = Float.parseFloat("+0Xfffff.fffffffffffffffffffffffffffffffp+99F");
591 assertEquals("Returned incorrect value", 6.64614E35f, actual, 0.0F);
593 actual = Float.parseFloat("-0X.123456789abcdefp+99f");
594 assertEquals("Returned incorrect value", -4.5072022E28f, actual, 0.0F);
596 actual = Float.parseFloat("-0X123456789abcdef.p+1f");
597 assertEquals("Returned incorrect value", -1.63971062E17f, actual, 0.0F);
599 actual = Float.parseFloat("-0X000000000000000000000000000001abcdef.0000000000000000000000000001abefp00000000000000000000000000000000000000000004f");
600 assertEquals("Returned incorrect value", -4.48585472E8f, actual, 0.0F);
602 actual = Float.parseFloat("0X0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001234p600f");
603 assertEquals("Returned incorrect value", 5.907252E33f, actual, 0.0F);
605 actual = Float.parseFloat("0x1.p9223372036854775807");
606 assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F);
608 actual = Float.parseFloat("0x1.p9223372036854775808");
609 assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F);
611 actual = Float.parseFloat("0x10.p9223372036854775808");
612 assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F);
614 actual = Float.parseFloat("0xabcd.ffffffffp+2000");
615 assertEquals("Returned incorrect value", Float.POSITIVE_INFINITY, actual, 0.0F);
617 actual = Float.parseFloat("0x1.p-9223372036854775808");
618 assertEquals("Returned incorrect value", 0.0f, actual, 0.0F);
620 actual = Float.parseFloat("0x1.p-9223372036854775809");
621 assertEquals("Returned incorrect value", 0.0f, actual, 0.0F);
623 actual = Float.parseFloat("0x.1p-9223372036854775809");
624 assertEquals("Returned incorrect value", 0.0f, actual, 0.0F);
628 * @tests java.lang.Float#parseFloat(java.lang.String)
631 level = TestLevel.PARTIAL_COMPLETE,
632 notes = "Verifies positive exponent.",
633 method = "parseFloat",
634 args = {java.lang.String.class}
636 public void test_parseFloat_LString_NormalPositiveExponent() {
638 0x3991a2b4, 0x43cc0247, 0x47909009,
639 0x4ac0c009, 0x4e109005, 0x5140c005,
640 0x5458d805, 0x57848402, 0x5a909002,
641 0x5da8a802, 0x60c0c002, 0x63cccc02,
642 0x66e4e402, 0x69f0f002, 0x6d048401,
643 0x70109001, 0x73169601, 0x76810810,
644 0x79840840, 0x7c8a08a0, 0x7f800000,
645 0x7f800000, 0x7f800000, 0x7f800000,
649 for (int i = 0; i < expecteds.length; i++) {
651 String inputString = "0x" + part + "." + part + "0123456789abcdefp" + part;
653 float actual = Float.parseFloat(inputString);
654 float expected = Float.intBitsToFloat(expecteds[i]);
656 String expectedString = Integer.toHexString(Float.floatToIntBits(expected));
657 String actualString = Integer.toHexString(Float.floatToIntBits(actual));
658 String errorMsg = i + "th input string is:<" + inputString
659 + ">.The expected result should be:<" + expectedString
660 + ">, but was: <" + actualString + ">. ";
662 assertEquals(errorMsg, expected, actual, 0.0F);
667 * @tests java.lang.Float#parseFloat(java.lang.String)
670 level = TestLevel.PARTIAL_COMPLETE,
671 notes = "Verifies negative exponent.",
672 method = "parseFloat",
673 args = {java.lang.String.class}
675 public void test_parseFloat_LString_NormalNegativeExponent() {
704 for (int i = 0; i < expecteds.length; i++) {
706 String inputString = "0x" + part + "." + part + "0123456789abcdefp-" + part;
708 float actual = Float.parseFloat(inputString);
709 float expected = Float.intBitsToFloat(expecteds[i]);
711 String expectedString = Integer.toHexString(Float.floatToIntBits(expected));
712 String actualString = Integer.toHexString(Float.floatToIntBits(actual));
713 String errorMsg = i + "th input string is:<" + inputString
714 + ">.The expected result should be:<" + expectedString
715 + ">, but was: <" + actualString + ">. ";
717 assertEquals(errorMsg, expected, actual, 0.0F);
722 * @tests java.lang.Float#parseFloat(java.lang.String)
725 level = TestLevel.PARTIAL_COMPLETE,
726 notes = "Verifies max boundary value. Doesn't verify NumberFormatException.",
727 method = "parseFloat",
728 args = {java.lang.String.class}
730 public void test_parseFloat_LString_MaxNormalBoundary() {
749 "0x1.fffffe000000000000000000000000000000000000000000000001p127",
750 "0x1.fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127",
752 "0x1.ffffff000000000000000000000000000000000000000000000001p127",
753 "0x1.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127",
756 "-0x1.fffffe000000000000000000000000000000000000000000000001p127",
757 "-0x1.fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127",
759 "-0x1.ffffff000000000000000000000000000000000000000000000001p127",
760 "-0x1.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp127",
763 for (int i = 0; i < inputs.length; i++) {
764 float actual = Float.parseFloat(inputs[i]);
765 float expected = Float.intBitsToFloat(expecteds[i]);
767 String expectedString = Integer.toHexString(Float.floatToIntBits(expected));
768 String actualString = Integer.toHexString(Float.floatToIntBits(actual));
769 String errorMsg = i + "th input string is:<" + inputs[i]
770 + ">.The expected result should be:<" + expectedString
771 + ">, but was: <" + actualString + ">. ";
773 assertEquals(errorMsg, expected, actual, 0.0F);
778 * @tests java.lang.Float#parseFloat(java.lang.String)
781 level = TestLevel.PARTIAL_COMPLETE,
782 notes = "Verifies min boundary value.",
783 method = "parseFloat",
784 args = {java.lang.String.class}
786 public void test_parseFloat_LString_MinNormalBoundary() {
805 "0x1.00000000000000000000000000000000000000000000001p-126",
806 "0x1.000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
808 "0x1.000001000000000000000000000000000000000000000001p-126",
809 "0x1.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
812 "-0x1.00000000000000000000000000000000000000000000001p-126",
813 "-0x1.000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
815 "-0x1.000001000000000000000000000000000000000000000001p-126",
816 "-0x1.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
819 for (int i = 0; i < inputs.length; i++) {
820 float actual = Float.parseFloat(inputs[i]);
821 float expected = Float.intBitsToFloat(expecteds[i]);
823 String expectedString = Integer.toHexString(Float.floatToIntBits(expected));
824 String actualString = Integer.toHexString(Float.floatToIntBits(actual));
825 String errorMsg = i + "th input string is:<" + inputs[i]
826 + ">.The expected result should be:<" + expectedString
827 + ">, but was: <" + actualString + ">. ";
829 assertEquals(errorMsg, expected, actual, 0.0F);
834 * @tests java.lang.Float#parseFloat(java.lang.String)
837 level = TestLevel.PARTIAL_COMPLETE,
838 notes = "Verifies max boundary value.",
839 method = "parseFloat",
840 args = {java.lang.String.class}
842 public void test_parseFloat_LString_MaxSubNormalBoundary() {
861 "0x0.fffffe000000000000000000000000000000000000000000000000000001p-126",
862 "0x0.fffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
864 "0x0.ffffff0000000000000000000000000000000000000000000000000000001p-126",
865 "0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
868 "-0x0.fffffe000000000000000000000000000000000000000000000000000001p-126",
869 "-0x0.fffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
871 "-0x0.ffffff0000000000000000000000000000000000000000000000000000001p-126",
872 "-0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
875 for (int i = 0; i < inputs.length; i++) {
876 float actual = Float.parseFloat(inputs[i]);
877 float expected = Float.intBitsToFloat(expecteds[i]);
879 String expectedString = Integer.toHexString(Float.floatToIntBits(expected));
880 String actualString = Integer.toHexString(Float.floatToIntBits(actual));
881 String errorMsg = i + "th input string is:<" + inputs[i]
882 + ">.The expected result should be:<" + expectedString
883 + ">, but was: <" + actualString + ">. ";
885 assertEquals(errorMsg, expected, actual, 0.0F);
890 * @tests java.lang.Float#parseFloat(java.lang.String)
893 level = TestLevel.PARTIAL_COMPLETE,
894 notes = "Verifies min boundary value.",
895 method = "parseFloat",
896 args = {java.lang.String.class}
898 public void test_parseFloat_LString_MinSubNormalBoundary() {
917 "0x0.00000200000000000000000000000000000000000001p-126",
918 "0x0.000002ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
920 "0x0.000003000000000000000000000000000000000000001p-126",
921 "0x0.000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
924 "-0x0.00000200000000000000000000000000000000000001p-126",
925 "-0x0.000002ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
927 "-0x0.000003000000000000000000000000000000000000001p-126",
928 "-0x0.000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
931 for (int i = 0; i < inputs.length; i++) {
932 float actual = Float.parseFloat(inputs[i]);
933 float expected = Float.intBitsToFloat(expecteds[i]);
935 String expectedString = Integer.toHexString(Float.floatToIntBits(expected));
936 String actualString = Integer.toHexString(Float.floatToIntBits(actual));
937 String errorMsg = i + "th input string is:<" + inputs[i]
938 + ">.The expected result should be:<" + expectedString
939 + ">, but was: <" + actualString + ">. ";
941 assertEquals(errorMsg, expected, actual, 0.0F);
946 * @tests java.lang.Float#parseFloat(java.lang.String)
949 level = TestLevel.PARTIAL_COMPLETE,
950 notes = "Verifies zero boundary value.",
951 method = "parseFloat",
952 args = {java.lang.String.class}
954 public void test_parseFloat_LString_ZeroBoundary() {
972 "0x0.000000000000000p-126",
973 "0x0.000000000000000000000000000000000000000000000001p-126",
974 "0x0.000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
976 "0x0.000001000000000000000000000000000000000000000001p-126",
977 "0x0.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
979 "-0x0.000000000000000p-126",
980 "-0x0.000000000000000000000000000000000000000000000001p-126",
981 "-0x0.000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
983 "-0x0.000001000000000000000000000000000000000000000001p-126",
984 "-0x0.000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-126",
987 for (int i = 0; i < inputs.length; i++) {
988 float actual = Float.parseFloat(inputs[i]);
989 float expected = Float.intBitsToFloat(expecteds[i]);
991 String expectedString = Integer.toHexString(Float.floatToIntBits(expected));
992 String actualString = Integer.toHexString(Float.floatToIntBits(actual));
993 String errorMsg = i + "th input string is:<" + inputs[i]
994 + ">.The expected result should be:<" + expectedString
995 + ">, but was: <" + actualString + ">. ";
997 assertEquals(errorMsg, expected, actual, 0.0F);
1002 * @tests java.lang.Float#parseFloat(java.lang.String)
1004 public void test_parseFloat_LString_Harmony6261() {
1005 // Regression test for HARMONY-6261
1006 float f = new Float("2147483648");
1007 assertEquals("2.1474836E9", Float.toString(f));
1009 doTestCompareRawBits("123456790528.000000000000000f", 0x51e5f4c9, "1.2345679E11");
1010 doTestCompareRawBits("8589934592", 0x50000000, "8.5899346E9");
1011 doTestCompareRawBits("8606711808", 0x50004000, "8.606712E9");
1015 * @tests java.lang.Float#shortValue()
1018 level = TestLevel.COMPLETE,
1020 method = "shortValue",
1023 public void test_shortValue() {
1024 // Test for method short java.lang.Float.shortValue()
1025 Float f = new Float(0.46874f);
1026 Float f2 = new Float(90.8f);
1027 assertTrue("Returned incorrect short value", f.shortValue() == 0
1028 && f2.shortValue() == 90);
1032 * @tests java.lang.Float#toString()
1035 level = TestLevel.COMPLETE,
1037 method = "toString",
1040 public void test_toString() {
1041 // Test for method java.lang.String java.lang.Float.toString()
1043 test_toString(12.90898f, "12.90898");
1045 test_toString(1.7014118346046924e+38F, "1.7014118E38");
1049 * @tests java.lang.Float#toString(float)
1052 level = TestLevel.COMPLETE,
1054 method = "toString",
1055 args = {float.class}
1057 public void test_toStringF() {
1058 // Test for method java.lang.String java.lang.Float.toString(float)
1064 answer = "12.90898";
1065 assertTrue("Incorrect String representation want " + answer + ", got "
1066 + Float.toString(ff), Float.toString(ff).equals(answer));
1068 ff = Float.MAX_VALUE;
1069 answer = "3.4028235E38";
1070 assertTrue("Incorrect String representation want " + answer + ", got "
1071 + Float.toString(ff), Float.toString(ff).equals(answer));
1075 * @tests java.lang.Float#valueOf(java.lang.String)
1078 level = TestLevel.COMPLETE,
1081 args = {java.lang.String.class}
1083 public void test_valueOfLjava_lang_String() {
1084 // Test for method java.lang.Float
1085 // java.lang.Float.valueOf(java.lang.String)
1087 Float wanted = new Float(432.1235f);
1088 Float got = Float.valueOf("432.1235");
1089 assertTrue("Incorrect float returned--wanted: " + wanted + " but got: " + got, got
1092 wanted = new Float(0f);
1093 got = Float.valueOf("0");
1094 assertTrue("Incorrect float returned--wanted: " + wanted + " but got: " + got, got
1097 wanted = new Float(-1212.3232f);
1098 got = Float.valueOf("-1212.3232");
1099 assertTrue("Incorrect float returned--wanted: " + wanted + " but got: " + got, got
1103 Float.valueOf(null);
1104 fail("Expected Float.valueOf(null) to throw NPE.");
1105 } catch (NullPointerException ex) {
1111 fail("Expected Float.valueOf(\"\") to throw NFE");
1112 } catch (NumberFormatException e) {
1116 Float posZero = Float.valueOf("+0.0");
1117 Float negZero = Float.valueOf("-0.0");
1118 assertFalse("Floattest0", posZero.equals(negZero));
1119 assertTrue("Floattest1", 0.0f == -0.0f);
1121 // Tests for float values by name.
1122 Float expectedNaN = new Float(Float.NaN);
1124 Float posNaN = Float.valueOf("NaN");
1125 assertTrue("Floattest2", posNaN.equals(expectedNaN));
1127 Float posNaNSigned = Float.valueOf("+NaN");
1128 assertTrue("Floattest3", posNaNSigned.equals(expectedNaN));
1130 Float negNaNSigned = Float.valueOf("-NaN");
1131 assertTrue("Floattest4", negNaNSigned.equals(expectedNaN));
1133 Float posInfinite = Float.valueOf("Infinity");
1134 assertTrue("Floattest5", posInfinite.equals(new Float(Float.POSITIVE_INFINITY)));
1136 Float posInfiniteSigned = Float.valueOf("+Infinity");
1137 assertTrue("Floattest6", posInfiniteSigned.equals(new Float(Float.POSITIVE_INFINITY)));
1139 Float negInfiniteSigned = Float.valueOf("-Infinity");
1140 assertTrue("Floattest7", negInfiniteSigned.equals(new Float(Float.NEGATIVE_INFINITY)));
1143 private void test_toString(float ff, String answer) {
1144 // Test for method java.lang.String java.lang.Double.toString(double)
1145 assertTrue("Incorrect String representation want " + answer + ", got ("
1146 + Float.toString(ff) + ")", Float.toString(ff).equals(answer));
1147 Float f = new Float(ff);
1148 assertTrue("Incorrect String representation want " + answer + ", got ("
1149 + Float.toString(f.floatValue()) + ")", Float.toString(f.floatValue()).equals(
1151 assertTrue("Incorrect String representation want " + answer + ", got (" + f.toString()
1152 + ")", f.toString().equals(answer));
1156 * @tests java.lang.Float#compareTo(java.lang.Float)
1157 * @tests java.lang.Float#compare(float, float)
1160 level = TestLevel.COMPLETE,
1162 method = "compareTo",
1163 args = {java.lang.Float.class}
1165 public void test_compareToLjava_lang_Float() {
1166 // A selection of float values in ascending order.
1167 float[] values = new float[] { Float.NEGATIVE_INFINITY, -Float.MAX_VALUE, -2f,
1168 -Float.MIN_VALUE, -0f, 0f, Float.MIN_VALUE, 2f, Float.MAX_VALUE,
1169 Float.POSITIVE_INFINITY, Float.NaN };
1171 for (int i = 0; i < values.length; i++) {
1172 float f1 = values[i];
1174 // Test that each value compares equal to itself; and each object is
1175 // equal to another object
1177 assertTrue("Assert 0: compare() should be equal: " + f1, Float.compare(f1, f1) == 0);
1178 Float objFloat = new Float(f1);
1179 assertTrue("Assert 1: compareTo() should be equal: " + objFloat, objFloat
1180 .compareTo(objFloat) == 0);
1182 // Test that the Float-defined order is respected
1183 for (int j = i + 1; j < values.length; j++) {
1184 float f2 = values[j];
1185 assertTrue("Assert 2: compare() " + f1 + " should be less " + f2, Float
1186 .compare(f1, f2) == -1);
1187 assertTrue("Assert 3: compare() " + f2 + " should be greater " + f1, Float
1188 .compare(f2, f1) == 1);
1190 Float F2 = new Float(f2);
1191 assertTrue("Assert 4: compareTo() " + f1 + " should be less " + f2, objFloat
1192 .compareTo(F2) == -1);
1193 assertTrue("Assert 5: compareTo() " + f2 + " should be greater " + f1, F2
1194 .compareTo(objFloat) == 1);
1200 * @tests java.lang.Float#equals(java.lang.Object)
1203 level = TestLevel.COMPLETE,
1206 args = {java.lang.Object.class}
1208 public void test_equalsLjava_lang_Object() {
1209 Float f1 = new Float(8765.4321f);
1210 Float f2 = new Float(8765.4321f);
1211 Float f3 = new Float(-1.0f);
1212 assertTrue("Assert 0: Equality test failed", f1.equals(f2) && !(f1.equals(f3)));
1214 assertTrue("Assert 1: NaN should not be == Nan", Float.NaN != Float.NaN);
1215 assertTrue("Assert 2: NaN should not be == Nan", new Float(Float.NaN).equals(new Float(
1217 assertTrue("Assert 3: -0f should be == 0f", 0f == -0f);
1218 assertTrue("Assert 4: -0f should not be equals() 0f", !new Float(0f).equals(new Float(
1221 f1 = new Float(1098.576f);
1222 f2 = new Float(1098.576f);
1223 f3 = new Float(1.0f);
1224 assertTrue("Equality test failed", f1.equals(f2) && !(f1.equals(f3)));
1226 assertTrue("NaN should not be == Nan", Float.NaN != Float.NaN);
1227 assertTrue("NaN should not be == Nan", new Float(Float.NaN)
1228 .equals(new Float(Float.NaN)));
1229 assertTrue("-0f should be == 0f", 0f == -0f);
1230 assertTrue("-0f should not be equals() 0f", !new Float(0f).equals(new Float(-0f)));
1234 * @tests java.lang.Float#toHexString(float)
1237 level = TestLevel.COMPLETE,
1239 method = "toHexString",
1240 args = {float.class}
1242 public void test_toHexStringF() {
1243 // the follow values comes from the Float Javadoc/Spec
1244 assertEquals("0x0.0p0", Float.toHexString(0.0F));
1245 assertEquals("-0x0.0p0", Float.toHexString(-0.0F));
1246 assertEquals("0x1.0p0", Float.toHexString(1.0F));
1247 assertEquals("-0x1.0p0", Float.toHexString(-1.0F));
1248 assertEquals("0x1.0p1", Float.toHexString(2.0F));
1249 assertEquals("0x1.8p1", Float.toHexString(3.0F));
1250 assertEquals("0x1.0p-1", Float.toHexString(0.5F));
1251 assertEquals("0x1.0p-2", Float.toHexString(0.25F));
1252 assertEquals("0x1.fffffep127", Float.toHexString(Float.MAX_VALUE));
1253 assertEquals("0x0.000002p-126", Float.toHexString(Float.MIN_VALUE));
1256 assertEquals("NaN", Float.toHexString(Float.NaN));
1257 assertEquals("-Infinity", Float.toHexString(Float.NEGATIVE_INFINITY));
1258 assertEquals("Infinity", Float.toHexString(Float.POSITIVE_INFINITY));
1260 // test various numbers
1261 assertEquals("-0x1.da8p6", Float.toHexString(-118.625F));
1262 assertEquals("0x1.295788p23", Float.toHexString(9743299.65F));
1263 assertEquals("0x1.295788p23", Float.toHexString(9743299.65000F));
1264 assertEquals("0x1.295788p23", Float.toHexString(9743299.650001234F));
1265 assertEquals("0x1.700d1p33", Float.toHexString(12349743299.65000F));
1267 // test HARMONY-2132
1268 assertEquals("0x1.01p10", Float.toHexString(0x1.01p10f));
1272 * @tests java.lang.Float#valueOf(float)
1275 level = TestLevel.COMPLETE,
1278 args = {float.class}
1280 public void test_valueOfF() {
1281 assertEquals(new Float(Float.MIN_VALUE), Float.valueOf(Float.MIN_VALUE));
1282 assertEquals(new Float(Float.MAX_VALUE), Float.valueOf(Float.MAX_VALUE));
1283 assertEquals(new Float(0), Float.valueOf(0));
1287 assertEquals(new Float(s), Float.valueOf(s));
1288 assertEquals(new Float(s + 0.1F), Float.valueOf(s + 0.1F));
1289 assertEquals(Float.valueOf(s + 0.1F), Float.valueOf(s + 0.1F));