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 java.util.Locale;
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class DoubleTest extends TestCase {
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final long rawBitsFor3_4en324ToN1[] = { 0x1L, 0x7L, 0x45L, 0x2b0L, 0x1ae2L,
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x10cd1L, 0xa8028L, 0x69018dL, 0x41a0f7eL, 0x29049aedL, 0x19a2e0d44L,
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1005cc84acL, 0xa039fd2ebdL, 0x64243e3d361L, 0x3e96a6e641c6L, 0x271e284fe91b8L,
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1872d931f1b131L, 0x4e8f8f7e6e1d7dL, 0x8319b9af04d26eL, 0xb7e0281ac6070aL,
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xedd832217788ccL, 0x122a71f54eab580L, 0x15750e72a2562e0L, 0x18d2520f4aebb98L,
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1c2373498ed353fL, 0x1f6c501bf28828eL, 0x22c76422ef2a332L, 0x261c9e95d57a5ffL,
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2963c63b4ad8f7fL, 0x2cbcb7ca1d8f35fL, 0x3015f2de527981bL, 0x335b6f95e717e22L,
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x36b24b7b60dddabL, 0x3a0f6f2d1c8aa8bL, 0x3d534af863ad52dL, 0x40a81db67c98a79L,
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x440912920ddf68bL, 0x474b5736915742eL, 0x4a9e2d0435ad13aL, 0x4e02dc22a18c2c4L,
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5143932b49ef375L, 0x549477f61c6b052L, 0x57f995f3a385c67L, 0x5b3bfdb846339c0L,
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5e8afd2657c0830L, 0x61edbc6fedb0a3dL, 0x653495c5f48e666L, 0x6881bb3771b1fffL,
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6be22a054e1e7ffL, 0x6f2d5a4350d30ffL, 0x7278b0d42507d3fL, 0x75d6dd092e49c8fL,
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x79264a25bcee1daL, 0x7c6fdcaf2c29a50L, 0x7fcbd3daf7340e4L, 0x831f6468da8088eL,
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x86673d831120ab2L, 0x89c10ce3d568d5fL, 0x8d18a80e656185bL, 0x905ed211feb9e72L,
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x93b686967e6860eL, 0x9712141e0f013c9L, 0x9a56992592c18bbL, 0x9dac3f6ef771eeaL,
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xa10ba7a55aa7352L, 0xa44e918eb151027L, 0xa7a235f25da5430L, 0xab0561b77a8749eL,
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xae46ba2559291c6L, 0xb19868aeaf73637L, 0xb4fe82da5b503c5L, 0xb83f11c8791225bL,
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xbb8ed63a9756af2L, 0xbef28bc93d2c5afL, 0xc237975dc63bb8dL, 0xc5857d3537caa70L,
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xc8e6dc8285bd50cL, 0xcc3049d19396528L, 0xcf7c5c45f87be72L, 0xd2db7357769ae0eL,
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xd6292816aa20cc9L, 0xd973721c54a8ffbL, 0xdcd04ea369d33faL, 0xe0223126222407cL,
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xe36abd6faaad09bL, 0xe6c56ccb95584c2L, 0xea1b63ff3d572f9L, 0xed623cff0cacfb8L,
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xf0bacc3ecfd83a5L, 0xf414bfa741e7247L, 0xf759ef911260ed9L, 0xfab06b7556f9290L,
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0xfe0e4329565bb9aL, 0x10151d3f3abf2a80L, 0x104a648f096ef520L, 0x10807ed965e55934L,
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x10b49e8fbf5eaf81L, 0x10e9c633af365b61L, 0x11201be04d81f91dL, 0x115422d860e27764L,
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x11892b8e791b153dL, 0x11bf76721761da8cL, 0x11f3aa074e9d2898L, 0x12289489224472beL,
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x125eb9ab6ad58f6dL, 0x1293340b22c579a4L, 0x12c8010deb76d80dL, 0x12fe015166548e11L,
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1332c0d2dff4d8caL, 0x1367710797f20efdL, 0x139d4d497dee92bcL, 0x13d2504deeb51bb6L,
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1406e4616a6262a3L, 0x143c9d79c4fafb4cL, 0x1471e26c1b1cdd0fL, 0x14a65b0721e41453L,
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x14dbf1c8ea5d1968L, 0x1511771d927a2fe1L, 0x1545d4e4f718bbd9L, 0x157b4a1e34deead0L,
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x15b10e52e10b52c2L, 0x15e551e7994e2772L, 0x161aa6617fa1b14fL, 0x1650a7fcefc50ed1L,
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1684d1fc2bb65286L, 0x16ba067b36a3e727L, 0x16f0440d02267078L, 0x1724551042b00c96L,
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x17596a54535c0fbcL, 0x178fc4e9683313abL, 0x17c3db11e11fec4bL, 0x17f8d1d65967e75eL,
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x182f064befc1e135L, 0x186363ef75d92cc1L, 0x18983ceb534f77f1L, 0x18ce4c26282355eeL,
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1902ef97d91615b5L, 0x1937ab7dcf5b9b22L, 0x196d965d433281eaL, 0x19a27dfa49ff9132L,
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x19d71d78dc7f757fL, 0x1a0ce4d7139f52dfL, 0x1a420f066c4393cbL, 0x1a7692c8075478beL,
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1aac377a092996edL, 0x1ae1a2ac45b9fe54L, 0x1b160b5757287de9L, 0x1b4b8e2d2cf29d64L,
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1b8138dc3c17a25eL, 0x1bb587134b1d8af6L, 0x1beae8d81de4edb4L, 0x1c20d18712af1490L,
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1c5505e8d75ad9b4L, 0x1c8a47630d319021L, 0x1cc06c9de83efa15L, 0x1cf487c5624eb89aL,
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1d29a9b6bae266c1L, 0x1d600a1234cd8038L, 0x1d940c96c200e046L, 0x1dc90fbc72811858L,
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1dff53ab8f215e6eL, 0x1e33944b3974db05L, 0x1e68795e07d211c6L, 0x1e9e97b589c69637L,
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1ed31ed1761c1de3L, 0x1f07e685d3a3255bL, 0x1f3de027488beeb2L, 0x1f72ac188d57752fL,
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x1fa7571eb0ad527bL, 0x1fdd2ce65cd8a71aL, 0x20123c0ffa076870L, 0x2046cb13f889428cL,
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x207c7dd8f6ab932fL, 0x20b1cea79a2b3bfeL, 0x20e6425180b60afdL, 0x211bd2e5e0e38dbcL,
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x215163cfac8e3896L, 0x2185bcc397b1c6bbL, 0x21bb2bf47d9e386aL, 0x21f0fb78ce82e342L,
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x22253a5702239c13L, 0x225a88ecc2ac8317L, 0x22909593f9abd1efL, 0x22c4baf8f816c66aL,
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x22f9e9b7361c7805L, 0x2330321281d1cb03L, 0x23643e9722463dc4L, 0x23994e3cead7cd35L,
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x23cfa1cc258dc082L, 0x2403c51f97789851L, 0x2438b6677d56be65L, 0x246ee4015cac6dffL,
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x24a34e80d9ebc4bfL, 0x24d822211066b5efL, 0x250e2aa95480636bL, 0x2542daa9d4d03e23L,
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x257791544a044dabL, 0x25ad75a95c856116L, 0x25e26989d9d35caeL, 0x261703ec504833d9L,
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x264cc4e7645a40d0L, 0x2681fb109eb86882L, 0x26b679d4c66682a2L, 0x26ec1849f800234bL,
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x27218f2e3b00160fL, 0x2755f2f9c9c01b93L, 0x278b6fb83c302277L, 0x27c125d3259e158bL,
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x27f56f47ef059aedL, 0x282acb19eac701a8L, 0x2860bef032bc6109L, 0x2894eeac3f6b794cL,
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x28ca2a574f46579eL, 0x29005a76918bf6c3L, 0x2934711435eef474L, 0x29698d59436ab191L,
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x299ff0af94455df5L, 0x29d3f66dbcab5ab9L, 0x2a08f4092bd63167L, 0x2a3f310b76cbbdc1L,
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2a737ea72a3f5699L, 0x2aa85e50f4cf2c3fL, 0x2ade75e53202f74fL, 0x2b1309af3f41da91L,
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2b47cc1b0f125135L, 0x2b7dbf21d2d6e583L, 0x2bb2977523c64f72L, 0x2be73d526cb7e34eL,
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2c1d0ca707e5dc22L, 0x2c5227e864efa995L, 0x2c86b1e27e2b93faL, 0x2cbc5e5b1db678f9L,
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2cf1baf8f2920b9cL, 0x2d2629b72f368e83L, 0x2d5bb424fb043223L, 0x2d9150971ce29f56L,
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2dc5a4bce41b472bL, 0x2dfb0dec1d2218f6L, 0x2e30e8b392354f9aL, 0x2e6522e076c2a380L,
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2e9a6b9894734c61L, 0x2ed0833f5cc80fbcL, 0x2f04a40f33fa13abL, 0x2f39cd1300f89896L,
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x2f70202be09b5f5eL, 0x2fa42836d8c23735L, 0x2fd932448ef2c503L, 0x300f7ed5b2af7643L,
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3043af458fada9eaL, 0x30789b16f3991465L, 0x30aec1dcb07f597eL, 0x30e33929ee4f97efL,
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3118077469e37deaL, 0x314e0951845c5d65L, 0x3182c5d2f2b9ba5fL, 0x31b77747af6828f7L,
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x31ed55199b423335L, 0x3222553001096001L, 0x3256ea7c014bb801L, 0x328ca51b019ea601L,
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x32c1e730e10327c1L, 0x32f660fd1943f1b1L, 0x332bf93c5f94ee1dL, 0x33617bc5bbbd14d2L,
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3395dab72aac5a07L, 0x33cb5164f5577089L, 0x340112df1956a655L, 0x34355796dfac4febL,
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x346aad7c979763e5L, 0x34a0ac6ddebe9e6fL, 0x34d4d789566e460bL, 0x350a0d6bac09d78eL,
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x354048634b8626b9L, 0x35745a7c1e67b067L, 0x35a9711b26019c81L, 0x35dfcd61ef8203a1L,
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3613e05d35b14245L, 0x3648d874831d92d6L, 0x367f0e91a3e4f78bL, 0x36b3691b066f1ab7L,
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x36e84361c80ae165L, 0x371e543a3a0d99beL, 0x3752f4a464488017L, 0x3787b1cd7d5aa01cL,
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x37bd9e40dcb14823L, 0x37f282e889eecd16L, 0x382723a2ac6a805cL, 0x385cec8b57852073L,
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x389213d716b33448L, 0x38c698ccdc60015aL, 0x38fc3f00137801b0L, 0x3931a7600c2b010eL,
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x396611380f35c151L, 0x399b9586130331a6L, 0x39d13d73cbe1ff08L, 0x3a058cd0beda7ec9L,
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3a3af004ee911e7cL, 0x3a70d603151ab30dL, 0x3aa50b83da615fd1L, 0x3ada4e64d0f9b7c5L,
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3b1070ff029c12dbL, 0x3b448d3ec3431792L, 0x3b79b08e7413dd76L, 0x3bb00e59088c6a6aL,
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3be411ef4aaf8504L, 0x3c19166b1d5b6646L, 0x3c4f5c05e4b23fd7L, 0x3c839983aeef67e6L,
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3cb87fe49aab41e0L, 0x3cee9fddc1561258L, 0x3d2323ea98d5cb77L, 0x3d57ece53f0b3e55L,
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3d8de81e8ece0deaL, 0x3dc2b1131940c8b2L, 0x3df75d57df90fadfL, 0x3e2d34add7753996L,
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3e6240eca6a943feL, 0x3e96d127d05394fdL, 0x3ecc8571c4687a3dL, 0x3f01d3671ac14c66L,
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x3f364840e1719f80L, 0x3f6bda5119ce075fL, 0x3fa16872b020c49cL, 0x3fd5c28f5c28f5c3L,
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x400B333333333333L };
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final long rawBitsFor1_2e0To309[] = { 0x3ff3333333333333L, 0x4028000000000000L,
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x405e000000000000L, 0x4092c00000000000L, 0x40c7700000000000L, 0x40fd4c0000000000L,
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x41324f8000000000L, 0x4166e36000000000L, 0x419c9c3800000000L, 0x41d1e1a300000000L,
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x42065a0bc0000000L, 0x423bf08eb0000000L, 0x427176592e000000L, 0x42a5d3ef79800000L,
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x42db48eb57e00000L, 0x43110d9316ec0000L, 0x434550f7dca70000L, 0x437aa535d3d0c000L,
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x43b0a741a4627800L, 0x43e4d1120d7b1600L, 0x441a055690d9db80L, 0x445043561a882930L,
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4484542ba12a337cL, 0x44b969368974c05bL, 0x44efc3842bd1f072L, 0x4523da329b633647L,
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4558d0bf423c03d9L, 0x458f04ef12cb04cfL, 0x45c363156bbee301L, 0x45f83bdac6ae9bc2L,
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x462e4ad1785a42b2L, 0x4662eec2eb3869afL, 0x4697aa73a606841bL, 0x46cd95108f882522L,
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x47027d2a59b51735L, 0x47371c74f0225d03L, 0x476ce3922c2af443L, 0x47a20e3b5b9ad8aaL,
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x47d691ca32818ed5L, 0x480c363cbf21f28aL, 0x4841a1e5f7753796L, 0x48760a5f7552857cL,
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x48ab8cf752a726daL, 0x48e1381a93a87849L, 0x491586213892965bL, 0x494ae7a986b73bf1L,
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4980d0c9f4328577L, 0x49b504fc713f26d5L, 0x49ea463b8d8ef08aL, 0x4a206be538795656L,
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4a5486de8697abecL, 0x4a89a896283d96e6L, 0x4ac0095dd9267e50L, 0x4af40bb54f701de4L,
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4b290ea2a34c255dL, 0x4b5f524b4c1f2eb4L, 0x4b93936f0f937d31L, 0x4bc8784ad3785c7dL,
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4bfe965d8856739cL, 0x4c331dfa75360842L, 0x4c67e57912838a52L, 0x4c9dded757246ce6L,
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4cd2ab469676c410L, 0x4d0756183c147514L, 0x4d3d2b9e4b199259L, 0x4d723b42eeeffb78L,
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4da6ca13aaabfa56L, 0x4ddc7c989556f8ebL, 0x4e11cddf5d565b93L, 0x4e46415734abf278L,
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4e7bd1ad01d6ef15L, 0x4eb1630c2126556dL, 0x4ee5bbcf296feac9L, 0x4f1b2ac2f3cbe57bL,
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x4f50fab9d85f6f6dL, 0x4f8539684e774b48L, 0x4fba87c262151e1aL, 0x4ff094d97d4d32d0L,
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5024ba0fdca07f84L, 0x5059e893d3c89f65L, 0x5090315c645d639fL, 0x50c43db37d74bc87L,
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x50f94d205cd1eba9L, 0x512fa06874066693L, 0x5163c4414884001cL, 0x5198b5519aa50023L,
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x51cee2a6014e402cL, 0x52034da7c0d0e81bL, 0x52382111b1052222L, 0x526e29561d466aabL,
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x52a2d9d5d24c02abL, 0x52d7904b46df0355L, 0x530d745e1896c42bL, 0x534268bacf5e3a9bL,
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x537702e98335c941L, 0x53acc3a3e4033b92L, 0x53e1fa466e82053bL, 0x541678d80a22868aL,
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x544c170e0cab282cL, 0x54818e68c7eaf91cL, 0x54b5f202f9e5b763L, 0x54eb6e83b85f253bL,
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x55212512533b7745L, 0x55556e56e80a5516L, 0x558ac9eca20cea5cL, 0x55c0be33e5481279L,
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x55f4edc0de9a1718L, 0x562a293116409cdeL, 0x566059beade8620bL, 0x5694702e59627a8dL,
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x56c98c39efbb1931L, 0x56ffef486ba9df7dL, 0x5733f58d434a2baeL, 0x5768f2f0941cb699L,
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x579f2facb923e440L, 0x57d37dcbf3b66ea8L, 0x58085d3ef0a40a52L, 0x583e748eaccd0ce6L,
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x587308d92c002810L, 0x58a7cb0f77003214L, 0x58ddbdd354c03e99L, 0x591296a414f82720L,
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x59473c4d1a3630e8L, 0x597d0b6060c3bd21L, 0x59b2271c3c7a5635L, 0x59e6b0e34b98ebc2L,
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5a1c5d1c1e7f26b3L, 0x5a51ba31930f7830L, 0x5a8628bdf7d3563cL, 0x5abbb2ed75c82bcaL,
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5af14fd4699d1b5fL, 0x5b25a3c984046236L, 0x5b5b0cbbe5057ac4L, 0x5b90e7f56f236cbaL,
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5bc521f2caec47e9L, 0x5bfa6a6f7da759e3L, 0x5c308285ae88982eL, 0x5c64a3271a2abe39L,
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5c99cbf0e0b56dc8L, 0x5cd01f768c71649dL, 0x5d0427542f8dbdc4L, 0x5d3931293b712d35L,
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5d6f7d738a4d7882L, 0x5da3ae6836706b51L, 0x5dd89a02440c8626L, 0x5e0ec082d50fa7afL,
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5e433851c529c8ceL, 0x5e78066636743b01L, 0x5eae07ffc41149c1L, 0x5ee2c4ffda8ace19L,
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5f17763fd12d819fL, 0x5f4d53cfc578e207L, 0x5f825461db6b8d44L, 0x5fb6e97a52467095L,
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x5feca3d8e6d80cbbL, 0x6021e667904707f5L, 0x605660017458c9f2L, 0x608bf801d16efc6eL,
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x60c17b0122e55dc5L, 0x60f5d9c16b9eb536L, 0x612b5031c6866284L, 0x6161121f1c13fd92L,
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x619556a6e318fcf7L, 0x61caac509bdf3c34L, 0x6200abb2616b85a1L, 0x6234d69ef9c66709L,
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x626a0c46b83800cbL, 0x62a047ac3323007fL, 0x62d459973febc09fL, 0x63096ffd0fe6b0c6L,
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x633fcbfc53e05cf8L, 0x6373df7db46c3a1bL, 0x63a8d75d218748a2L, 0x63df0d3469e91acaL,
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x64136840c231b0beL, 0x64484250f2be1ceeL, 0x647e52e52f6da42aL, 0x64b2f3cf3da4869aL,
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x64e7b0c30d0da840L, 0x651d9cf3d0511251L, 0x655282186232ab72L, 0x6587229e7abf564fL,
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x65bceb46196f2be3L, 0x65f2130bcfe57b6eL, 0x662697cec3deda49L, 0x665c3dc274d690dbL,
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6691a69989061a89L, 0x66c6103feb47a12bL, 0x66fb944fe6198976L, 0x67313cb1efcff5eaL,
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x67658bde6bc3f364L, 0x679aeed606b4f03dL, 0x67d0d545c4311626L, 0x68050a97353d5bb0L,
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x683a4d3d028cb29cL, 0x687070462197efa2L, 0x68a48c57a9fdeb8aL, 0x68d9af6d947d666cL,
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x69100da47cce6004L, 0x6944110d9c01f805L, 0x6979155103027606L, 0x69af5aa543c31387L,
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x69e398a74a59ec35L, 0x6a187ed11cf06742L, 0x6a4e9e85642c8112L, 0x6a8323135e9bd0abL,
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6ab7ebd83642c4d6L, 0x6aede6ce43d3760cL, 0x6b22b040ea6429c7L, 0x6b575c5124fd3439L,
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6b8d33656e3c8147L, 0x6bc2401f64e5d0cdL, 0x6bf6d0273e1f4500L, 0x6c2c84310da71640L,
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6c61d29ea8886de8L, 0x6c96474652aa8962L, 0x6ccbd917e7552bbaL, 0x6d0167aef0953b54L,
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6d35c19aacba8a29L, 0x6d6b320157e92cb4L, 0x6da0ff40d6f1bbf0L, 0x6dd53f110cae2aedL,
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6e0a8ed54fd9b5a8L, 0x6e40994551e81189L, 0x6e74bf96a66215ebL, 0x6ea9ef7c4ffa9b66L,
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6ee035adb1fca120L, 0x6f1443191e7bc967L, 0x6f4953df661abbc1L, 0x6f7fa8d73fa16ab2L,
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x6fb3c98687c4e2afL, 0x6fe8bbe829b61b5bL, 0x701eeae23423a232L, 0x705352cd6096455fL,
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x70882780b8bbd6b7L, 0x70be3160e6eacc64L, 0x70f2dedc9052bfbfL, 0x71279693b4676faeL,
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x715d7c38a1814b9aL, 0x71926da364f0cf40L, 0x71c7090c3e2d0310L, 0x71fccb4f4db843d4L,
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7231ff1190932a65L, 0x72667ed5f4b7f4feL, 0x729c1e8b71e5f23dL, 0x72d19317272fb766L,
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7305f7dcf0fba540L, 0x733b75d42d3a8e90L, 0x737129a49c44991aL, 0x73a5740dc355bf60L,
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x73dad111342b2f39L, 0x7410c2aac09afd83L, 0x7444f35570c1bce4L, 0x747a302accf22c1dL,
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x74b05e1ac0175b92L, 0x74e475a1701d3277L, 0x75199309cc247f15L, 0x754ff7cc3f2d9edaL,
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7583fadfa77c8348L, 0x75b8f997915ba41aL, 0x75ef37fd75b28d21L, 0x762382fe698f9834L,
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x765863be03f37e41L, 0x768e7cad84f05dd2L, 0x76c30dec73163aa3L, 0x76f7d1678fdbc94cL,
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x772dc5c173d2bb9fL, 0x77629b98e863b543L, 0x7797427f227ca294L, 0x77cd131eeb1bcb39L,
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x78022bf352f15f04L, 0x7836b6f027adb6c5L, 0x786c64ac31992476L, 0x78a1beeb9effb6caL,
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x78d62ea686bfa47cL, 0x790bba50286f8d9bL, 0x794154721945b881L, 0x7975a98e9f9726a1L,
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x79ab13f2477cf049L, 0x79e0ec776cae162eL, 0x7a15279547d99bb9L, 0x7a4a717a99d002a8L,
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7a8086eca02201a9L, 0x7ab4a8a7c82a8213L, 0x7ae9d2d1ba352298L, 0x7b2023c31461359fL,
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7b542cb3d9798307L, 0x7b8937e0cfd7e3c8L, 0x7bbf85d903cddcbaL, 0x7bf3b3a7a260a9f4L,
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7c28a0918af8d472L, 0x7c5ec8b5edb7098eL, 0x7c933d71b49265f9L, 0x7cc80cce21b6ff77L,
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7cfe1001aa24bf55L, 0x7d32ca010a56f795L, 0x7d677c814cecb57aL, 0x7d9d5ba1a027e2d9L,
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7dd259450418edc7L, 0x7e06ef96451f2939L, 0x7e3cab7bd666f388L, 0x7e71eb2d66005835L,
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7ea665f8bf806e42L, 0x7edbff76ef6089d2L, 0x7f117faa559c5623L, 0x7f45df94eb036bacL,
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            0x7f7b577a25c44697L, 0x7fb116ac579aac1fL, 0x7fe55c576d815726L, 0x7ff0000000000000L };
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private void doTestCompareRawBits(String originalDoubleString, long expectedRawBits,
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String expectedString) {
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double result;
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long rawBits;
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String convertedString;
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        result = Double.parseDouble(originalDoubleString);
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        rawBits = Double.doubleToLongBits(result);
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        convertedString = new Double(result).toString();
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(expectedRawBits, rawBits);
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(expectedString.toLowerCase(Locale.US), convertedString
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toLowerCase(Locale.US));
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private void test_toString(double dd, String answer) {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(answer, Double.toString(dd));
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(dd);
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(answer, Double.toString(d.doubleValue()));
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(answer, d.toString());
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#Double(double)
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorD() {
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(39089.88888888888888888888888888888888);
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Created incorrect double", 39089.88888888888888888888888888888888, d
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .doubleValue(), 0D);
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#Double(java.lang.String)
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_String() {
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double("39089.88888888888888888888888888888888");
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Created incorrect double", 39089.88888888888888888888888888888888, d
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .doubleValue(), 0D);
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-489
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            d = new Double("1E+-20");
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("new Double(\"1E+-20\") should throw exception");
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-329
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.parseDouble("-1.233999999999999965116738099630936817275852021384209929081813042837802886790127428328465579708849276001782791006814286802871737087810957327493372866733334925806221045495205250590286471187577636646208155890426896101636282423463443661040209738873506655844025580428394216030152374941053494694642722606658935546875E-112");
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Failed to parse long string", -1.234E-112D, d.doubleValue(), 0D);
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#byteValue()
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_byteValue() {
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(1923311.47712);
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect byte value", (byte) -17, d.byteValue());
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#compareTo(java.lang.Double)
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#compare(double, double)
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_compare() {
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double[] values = new double[] { Double.NEGATIVE_INFINITY, -Double.MAX_VALUE, -2d,
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                -Double.MIN_VALUE, -0d, 0d, Double.MIN_VALUE, 2d, Double.MAX_VALUE,
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Double.POSITIVE_INFINITY, Double.NaN };
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < values.length; i++) {
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            double d1 = values[i];
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("compare() should be equal: " + d1, Double.compare(d1, d1) == 0);
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double D1 = new Double(d1);
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("compareTo() should be equal: " + d1, D1.compareTo(D1) == 0);
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int j = i + 1; j < values.length; j++) {
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                double d2 = values[j];
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("compare() " + d1 + " should be less " + d2,
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        Double.compare(d1, d2) == -1);
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("compare() " + d2 + " should be greater " + d1, Double.compare(d2,
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        d1) == 1);
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Double D2 = new Double(d2);
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("compareTo() " + d1 + " should be less " + d2,
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        D1.compareTo(D2) == -1);
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("compareTo() " + d2 + " should be greater " + d1,
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        D2.compareTo(D1) == 1);
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new Double(0.0D).compareTo(null);
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No NPE");
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#doubleToLongBits(double)
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_doubleToLongBitsD() {
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method long java.lang.Double.doubleToLongBits(double)
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(Double.MAX_VALUE);
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long lbits = Double.doubleToLongBits(d.doubleValue());
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double r = Double.longBitsToDouble(lbits);
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Bit conversion failed", d.doubleValue() == r);
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#doubleToRawLongBits(double)
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_doubleToRawLongBitsD() {
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long l = 0x7ff80000000004d2L;
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double d = Double.longBitsToDouble(l);
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong raw bits", Double.doubleToRawLongBits(d) == l);
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#doubleValue()
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_doubleValue() {
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect double value returned", 999999999999999.9999999999999,
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new Double(999999999999999.9999999999999).doubleValue(), 0D);
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#floatValue()
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_floatValue() {
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method float java.lang.Double.floatValue()
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Incorrect float value returned ",
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Math
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .abs(new Double(999999999999999.9999999999999d).floatValue() - 999999999999999.9999999999999f) < 1);
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#hashCode()
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_hashCode() {
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method int java.lang.Double.hashCode()
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = -1000; i < 1000; i++) {
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double d = new Double(i);
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double dd = new Double(i);
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Should not be identical ", d != dd);
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Should be equals 1 ", d.equals(dd));
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Should be equals 2 ", dd.equals(d));
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Should have identical values ", dd.doubleValue() == d.doubleValue());
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Invalid hash for equal but not identical doubles ", d.hashCode() == dd
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .hashCode());
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Magic assumption hasCode (0.0) = 0 failed", 0, new Double(0.0).hashCode());
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#intValue()
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_intValue() {
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method int java.lang.Double.intValue()
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(1923311.47712);
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect int value", 1923311, d.intValue());
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#isInfinite()
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isInfinite() {
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method boolean java.lang.Double.isInfinite()
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("NEGATIVE_INFINITY returned false", new Double(Double.NEGATIVE_INFINITY)
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .isInfinite());
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("POSITIVE_INFINITY returned false", new Double(Double.POSITIVE_INFINITY)
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .isInfinite());
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Non infinite number returned true", !(new Double(1000).isInfinite()));
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#isInfinite(double)
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isInfiniteD() {
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method boolean java.lang.Double.isInfinite(double)
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Infinity check failed", Double.isInfinite(Double.NEGATIVE_INFINITY)
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                && (Double.isInfinite(Double.POSITIVE_INFINITY))
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                && !(Double.isInfinite(Double.MAX_VALUE)));
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#isNaN()
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isNaN() {
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method boolean java.lang.Double.isNaN()
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(0.0 / 0.0);
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("NAN returned false", d.isNaN());
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = new Double(0);
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Non NAN returned true", !d.isNaN());
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#isNaN(double)
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isNaND() {
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method boolean java.lang.Double.isNaN(double)
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(0.0 / 0.0);
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("NAN check failed", Double.isNaN(d.doubleValue()));
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#longBitsToDouble(long)
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_longBitsToDoubleJ() {
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method double java.lang.Double.longBitsToDouble(long)
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(Double.MAX_VALUE);
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long lbits = Double.doubleToLongBits(d.doubleValue());
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double r = Double.longBitsToDouble(lbits);
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Bit conversion failed", d.doubleValue() == r);
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#longValue()
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_longValue() {
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method long java.lang.Double.longValue()
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(1923311.47712);
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect long value", 1923311, d.longValue());
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDoubleLjava_lang_String() {
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect double returned, expected zero.", 0.0, Double
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .parseDouble("2.4703282292062327208828439643411e-324"), 0.0);
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect double returned, expected minimum double.", Double
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .parseDouble("2.4703282292062327208828439643412e-324") == Double.MIN_VALUE);
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 324; i > 0; i--) {
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("3.4e-" + i);
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i <= 309; i++) {
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("1.2e" + i);
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /*
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * The first two cases and the last four cases have to placed outside
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * the loop due to the difference in the expected output string.
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("3.4e-324", rawBitsFor3_4en324ToN1[0], "4.9e-324");
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("3.4e-323", rawBitsFor3_4en324ToN1[1], "3.5e-323");
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 322; i > 3; i--) {
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String testString, expectedString;
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testString = expectedString = "3.4e-" + i;
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            doTestCompareRawBits(testString, rawBitsFor3_4en324ToN1[324 - i], expectedString);
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("3.4e-3", rawBitsFor3_4en324ToN1[321], "0.0034");
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("3.4e-2", rawBitsFor3_4en324ToN1[322], "0.034");
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("3.4e-1", rawBitsFor3_4en324ToN1[323], "0.34");
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("3.4e-0", rawBitsFor3_4en324ToN1[324], "3.4");
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e0", rawBitsFor1_2e0To309[0], "1.2");
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e1", rawBitsFor1_2e0To309[1], "12.0");
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e2", rawBitsFor1_2e0To309[2], "120.0");
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e3", rawBitsFor1_2e0To309[3], "1200.0");
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e4", rawBitsFor1_2e0To309[4], "12000.0");
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e5", rawBitsFor1_2e0To309[5], "120000.0");
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e6", rawBitsFor1_2e0To309[6], "1200000.0");
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 7; i <= 308; i++) {
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String testString, expectedString;
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testString = expectedString = "1.2e" + i;
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            doTestCompareRawBits(testString, rawBitsFor1_2e0To309[i], expectedString);
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2e309", rawBitsFor1_2e0To309[309], "Infinity");
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000.92233720368547758079223372036854775807",
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7e054218c295e43fL, "1.1122233344455567E299");
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000111222333444555666777888999000.92233720368547758079223372036854775807",
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xfe054218c295e43fL, "-1.1122233344455567E299");
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.234123412431233E107", 0x562ae7a25fe706ebL,
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1.234123412431233E107");
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2341234124312331E107", 0x562ae7a25fe706ecL,
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1.2341234124312331E107");
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1.2341234124312332E107", 0x562ae7a25fe706ecL,
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1.2341234124312331E107");
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("-1.234123412431233E107", 0xd62ae7a25fe706ebL,
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-1.234123412431233E107");
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("-1.2341234124312331E107", 0xd62ae7a25fe706ecL,
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-1.2341234124312331E107");
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("-1.2341234124312332E107", 0xd62ae7a25fe706ecL,
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-1.2341234124312331E107");
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1e23", 0x44b52d02c7e14af6L, "1.0e23");
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /*
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * These particular tests verify that the extreme boundary conditions
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * are converted correctly.
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("0.0e-309", 0L, "0.0");
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("-0.0e-309", 0x8000000000000000L, "-0.0");
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("0.0e309", 0L, "0.0");
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("-0.0e309", 0x8000000000000000L, "-0.0");
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("0.1e309", 0x7fe1ccf385ebc8a0L, "1.0e308");
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("0.2e309", 0x7ff0000000000000L, "Infinity");
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("65e-325", 1L, "4.9e-324");
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("1000e-326", 2L, "1.0e-323");
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("4.0e-306", 0x86789e3750f791L, "4.0e-306");
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits("2.22507e-308", 0xffffe2e8159d0L, "2.22507e-308");
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "111222333444555666777888999000111228999000.92233720368547758079223372036854775807",
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x48746da623f1dd8bL, "1.1122233344455567E41");
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-111222333444555666777888999000111228999000.92233720368547758079223372036854775807",
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xc8746da623f1dd8bL, "-1.1122233344455567E41");
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210",
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x54820fe0ba17f469L, "1.2345678901234567E99");
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210",
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xd4820fe0ba17f469L, "-1.2345678901234567E99");
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7fefffffffffffffL, "1.7976931348623157E308");
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xffefffffffffffffL, "-1.7976931348623157E308");
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "1112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001234567890",
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L, "Infinity");
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-1112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001112223334445556667778889990001234567890",
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xfff0000000000000L, "-Infinity");
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "179769313486231590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L, "Infinity");
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-179769313486231590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.01",
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xfff0000000000000L, "-Infinity");
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2b392a32afcc661eL, "1.7976931348623157E-100");
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xab392a32afcc661eL, "-1.7976931348623157E-100");
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1b3432f0cb68e61L, "1.7976931348623157E-300");
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x81b3432f0cb68e61L, "-1.7976931348623157E-300");
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2117b590b942L, "1.79769313486234E-310");
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x80002117b590b942L, "-1.79769313486234E-310");
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xe37L, "1.798E-320");
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017976931348623157",
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000e37L, "-1.798E-320");
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2L, "1.0E-323");
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001",
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000002L, "-1.0E-323");
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055595409854908458349204328908234982349050934129878452378432452458968024357823490509341298784523784324524589680243578234905093412987845237843245245896802435782349050934129878452378432452458968024357868024357823490509341298784523784324524589680243578234905093412987845237843245245896802435786802435782349050934129878452378432452458968024357823490509341298784523784324524589680243578",
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1L, "4.9E-324");
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        doTestCompareRawBits(
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055595409854908458349204328908234982349050934129878452378432452458968024357823490509341298784523784324524589680243578234905093412987845237843245245896802435782349050934129878452378432452458968024357868024357823490509341298784523784324524589680243578234905093412987845237843245245896802435786802435782349050934129878452378432452458968024357823490509341298784523784324524589680243578",
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000001L, "-4.9E-324");
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_Illegal() {
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("0.0p0D");
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("+0x.p1d");
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("0Xg.gp1D");
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("-0x1.1p");
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("+0x 1.1 p2d");
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble("x1.1p2d");
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble(" 0x-2.1p2");
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble(" 0x2.1pad");
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.parseDouble(" 0x111.222p 22d");
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NumberFormatException.");
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_FromHexString() {
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double actual;
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double expected;
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x0.0p0D");
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0d, actual, 0.0D);
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0xa.ap+9d");
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 5440.0d, actual, 0.0D);
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("+0Xb.10ap8");
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 2832.625d, actual, 0.0D);
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("-0X.a0P2D");
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", -2.5d, actual, 0.0D);
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("\r 0x22.1p2d \t");
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 136.25d, actual, 0.0D);
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x1.0p-1");
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.5, actual, 0.0D);
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .parseDouble("0x00000000000000000000000000000000001.0p-1");
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.5, actual, 0.0D);
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         actual = Double.parseDouble("0x1.0p-00000000000000000000000000001");
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         assertEquals("Returned incorrect value", 0.5, actual, 0.0D);
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x.100000000000000000000000000000000p1");
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.125, actual, 0.0D);
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x0.0p999999999999999999999999999999999999999999999999999999999999999");
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0xf1.0p9999999999999999999999999999999999999999999999999999999999999999");
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0xffffffffffffffffffffffffffffffffffff.ffffffffffffffffffffffffffffffffffffffffffffffp1");
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        expected = Double.longBitsToDouble(0x4900000000000000L);
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", expected, actual, 0.0D);
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001p1600");
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        expected = Double.longBitsToDouble(0x7f30000000000000L);
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", expected, actual, 0.0D);
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x0.0p-999999999999999999999999999999999999999999999999999999");
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0xf1.0p-9999999999999999999999999999999999999999999999999999999999999999");
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000p-1600");
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        expected = Double.longBitsToDouble(0xf0000000000000L);
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", expected, actual, 0.0D);
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x1.p9223372036854775807");
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x1.p9223372036854775808");
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x10.p9223372036854775808");
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0xabcd.ffffffffp+2000");
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", Double.POSITIVE_INFINITY, actual, 0.0D);
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x1.p-9223372036854775808");
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x1.p-9223372036854775809");
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0x.1p-9223372036854775809");
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        actual = Double.parseDouble("0xabcd.ffffffffffffffp-2000");
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect value", 0.0, actual, 0.0D);
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_NormalPositiveExponent() {
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long[] expecteds = {
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3f323456789abcdfL,                0x40e111012345678aL,                0x41a1110091a2b3c5L,
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x4259998091a2b3c5L,                0x4311110048d159e2L,                0x43c5554048d159e2L,
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x4479998048d159e2L,                0x452dddc048d159e2L,                0x45e111002468acf1L,
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x469333202468acf1L,                0x4751011001234568L,                0x4802112101234568L,
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x48b3213201234568L,                0x4964314301234568L,                0x4a15415401234568L,
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x4ac6516501234568L,                0x4b77617601234568L,                0x4c28718701234568L,
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x4cd9819801234568L,                0x4d9049048091a2b4L,                0x4e4101100091a2b4L,
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x4ef189188091a2b4L,                0x4fa211210091a2b4L,                0x505299298091a2b4L,
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x510321320091a2b4L,                0x51b3a93a8091a2b4L,                0x526431430091a2b4L,
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x5314b94b8091a2b4L,                0x53c841840091a2b4L,                0x5478c98c8091a2b4L,
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x552981980091a2b4L,                0x55da09a08091a2b4L,                0x568a91a90091a2b4L,
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x573b19b18091a2b4L,                0x57eba1ba0091a2b4L,                0x589c29c28091a2b4L,
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x594cb1cb0091a2b4L,                0x5a001d01c048d15aL,                0x5ab061060048d15aL,
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x5b60a50a4048d15aL,                0x5c1101100048d15aL,                0x5cc145144048d15aL,
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x5d7189188048d15aL,                0x5e21cd1cc048d15aL,                0x5ed211210048d15aL,
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x5f8255254048d15aL,                0x603419418048d15aL,                0x60e45d45c048d15aL,
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x6194a14a0048d15aL,                0x6244e54e4048d15aL,                0x62f541540048d15aL,
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x63a585584048d15aL,                0x6455c95c8048d15aL,                0x65060d60c048d15aL,
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x65b651650048d15aL,                0x666815814048d15aL,                0x671859858048d15aL,
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x67c89d89c048d15aL,                0x6878e18e0048d15aL,                0x692925924048d15aL,
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x69d981980048d15aL,                0x6a89c59c4048d15aL,                0x6b3a09a08048d15aL,
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x6bea4da4c048d15aL,                0x6c9c11c10048d15aL,                0x6d4c55c54048d15aL,
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x6dfc99c98048d15aL,                0x6eacddcdc048d15aL,                0x6f5d21d20048d15aL,
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x700d65d64048d15aL,                0x70bdc1dc0048d15aL,                0x716e05e04048d15aL,
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x721e49e48048d15aL,                0x72d00700602468adL,                0x73802902802468adL,
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x74304b04a02468adL,                0x74e06d06c02468adL,                0x75908f08e02468adL,
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7640b10b002468adL,                0x76f0d30d202468adL,                0x77a10110002468adL,
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x78512312202468adL,                0x79020520402468adL,                0x79b22722602468adL,
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7a624924802468adL,                0x7b126b26a02468adL,                0x7bc28d28c02468adL,
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7c72af2ae02468adL,                0x7d22d12d002468adL,                0x7dd2f32f202468adL,
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7e832132002468adL,                0x7f40011001012345L,                0x7ff0000000000000L,
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L,                0x7ff0000000000000L,                0x7ff0000000000000L,
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L,                0x7ff0000000000000L,                0x7ff0000000000000L,
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L,                0x7ff0000000000000L,                0x7ff0000000000000L,
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L,                0x7ff0000000000000L,                0x7ff0000000000000L,
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L,                0x7ff0000000000000L,                0x7ff0000000000000L,
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L,                0x7ff0000000000000L,                0x7ff0000000000000L,
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x7ff0000000000000L,                0x7ff0000000000000L  };
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < expecteds.length; i++) {
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int part = i*11;
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String inputString = "0x" + part + "." + part + "0123456789abcdefp" + part;
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            double actual = Double.parseDouble(inputString);
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            double expected = Double.longBitsToDouble(expecteds[i]);
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String errorMsg = i + "th input string is:<" + inputString
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + ">.The expected result should be:<" + expectedString
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + ">, but was: <" + actualString + ">. ";
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(errorMsg, expected, actual, 0.0D);
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_NormalNegativeExponent() {
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long[] expecteds = {
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3f323456789abcdfL,                0x3f8111012345678aL,                0x3ee1110091a2b3c5L,
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3e39998091a2b3c5L,                0x3d91110048d159e2L,                0x3ce5554048d159e2L,
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3c39998048d159e2L,                0x3b8dddc048d159e2L,                0x3ae111002468acf1L,
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3a3333202468acf1L,                0x3991011001234568L,                0x38e2112101234568L,
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3833213201234568L,                0x3784314301234568L,                0x36d5415401234568L,
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3626516501234568L,                0x3577617601234568L,                0x34c8718701234568L,
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x3419819801234568L,                0x337049048091a2b4L,                0x32c101100091a2b4L,
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x321189188091a2b4L,                0x316211210091a2b4L,                0x30b299298091a2b4L,
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x300321320091a2b4L,                0x2f53a93a8091a2b4L,                0x2ea431430091a2b4L,
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2df4b94b8091a2b4L,                0x2d4841840091a2b4L,                0x2c98c98c8091a2b4L,
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2be981980091a2b4L,                0x2b3a09a08091a2b4L,                0x2a8a91a90091a2b4L,
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x29db19b18091a2b4L,                0x292ba1ba0091a2b4L,                0x287c29c28091a2b4L,
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x27ccb1cb0091a2b4L,                0x27201d01c048d15aL,                0x267061060048d15aL,
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x25c0a50a4048d15aL,                0x251101100048d15aL,                0x246145144048d15aL,
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x23b189188048d15aL,                0x2301cd1cc048d15aL,                0x225211210048d15aL,
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x21a255254048d15aL,                0x20f419418048d15aL,                0x20445d45c048d15aL,
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1f94a14a0048d15aL,                0x1ee4e54e4048d15aL,                0x1e3541540048d15aL,
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1d8585584048d15aL,                0x1cd5c95c8048d15aL,                0x1c260d60c048d15aL,
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1b7651650048d15aL,                0x1ac815814048d15aL,                0x1a1859858048d15aL,
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x19689d89c048d15aL,                0x18b8e18e0048d15aL,                0x180925924048d15aL,
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x175981980048d15aL,                0x16a9c59c4048d15aL,                0x15fa09a08048d15aL,
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x154a4da4c048d15aL,                0x149c11c10048d15aL,                0x13ec55c54048d15aL,
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x133c99c98048d15aL,                0x128cddcdc048d15aL,                0x11dd21d20048d15aL,
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x112d65d64048d15aL,                0x107dc1dc0048d15aL,                0xfce05e04048d15aL,
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xf1e49e48048d15aL,                0xe700700602468adL,                0xdc02902802468adL,
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xd104b04a02468adL,                0xc606d06c02468adL,                0xbb08f08e02468adL,
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xb00b10b002468adL,                0xa50d30d202468adL,                0x9a10110002468adL,
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8f12312202468adL,                0x8420520402468adL,                0x7922722602468adL,
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x6e24924802468adL,                0x6326b26a02468adL,                0x5828d28c02468adL,
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x4d2af2ae02468adL,                0x422d12d002468adL,                0x372f32f202468adL,
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2c32132002468adL,                0x220011001012345L,                0x170121012012345L,
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xc0231023012345L,                0x10341034012345L,                0x208a208a024L,
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x41584158L,                            0x83388L,                                0x108L,
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x0L,                                        0x0L,                                       0x0L,
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x0L,                                        0x0L,                                       0x0L,
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x0L,                                        0x0L,                                       0x0L,
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x0L,                                        0x0L,                                       0x0L,
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x0L,                                        0x0L };
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < expecteds.length; i++) {
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int part = i*11;
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String inputString = "0x" + part + "." + part + "0123456789abcdefp-" + part;
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            double actual = Double.parseDouble(inputString);
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            double expected = Double.longBitsToDouble(expecteds[i]);
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String errorMsg = i + "th input string is:<" + inputString
828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + ">.The expected result should be:<" + expectedString
829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + ">, but was: <" + actualString + ">. ";
830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(errorMsg, expected, actual, 0.0D);
832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_MaxNormalBoundary() {
839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       long[] expecteds = {
840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0x7fefffffffffffffL,               0x7fefffffffffffffL,               0x7fefffffffffffffL,
841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0x7fefffffffffffffL,               0x7fefffffffffffffL,               0x7fefffffffffffffL,
842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0x7fefffffffffffffL,               0x7ff0000000000000L,               0x7ff0000000000000L,
843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0x7ff0000000000000L,               0x7ff0000000000000L,               0x7ff0000000000000L,
844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0x7ff0000000000000L,               0x7ff0000000000000L,               0x7ff0000000000000L,
845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0xffefffffffffffffL,               0xffefffffffffffffL,               0xffefffffffffffffL,
847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0xffefffffffffffffL,               0xffefffffffffffffL,               0xffefffffffffffffL,
848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0xffefffffffffffffL,               0xfff0000000000000L,               0xfff0000000000000L,
849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0xfff0000000000000L,               0xfff0000000000000L,               0xfff0000000000000L,
850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               0xfff0000000000000L,               0xfff0000000000000L,               0xfff0000000000000L };
851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       String[] inputs = {
853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffffp1023",
854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff000000000000000000000000001p1023",
855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff1p1023",
856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff100000000000000000000000001p1023",
857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffp1023",
858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff7p1023",
859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff700000000000000000000000001p1023",
860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff8p1023",
861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff800000000000000000000000001p1023",
862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffp1023",
863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff9p1023",
864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffff900000000000000000000000001p1023",
865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.ffffffffffffffp1023",
866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.ffffffffffffff00000000000000000000000001p1023",
867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp1023",
868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffffp1023",
870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff000000000000000000000000001p1023",
871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff1p1023",
872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff100000000000000000000000001p1023",
873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff1fffffffffffffffffffffffffffffffffffffffffffffp1023",
874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff7p1023",
875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff700000000000000000000000001p1023",
876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff8p1023",
877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff800000000000000000000000001p1023",
878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff8fffffffffffffffffffffffffffffffffffffffffffffp1023",
879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff9p1023",
880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffff900000000000000000000000001p1023",
881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.ffffffffffffffp1023",
882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.ffffffffffffff00000000000000000000000001p1023",
883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp1023" };
884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       for (int i = 0; i < inputs.length; i++) {
886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double actual = Double.parseDouble(inputs[i]);
887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double expected = Double.longBitsToDouble(expecteds[i]);
888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String errorMsg = i + "th input string is:<" + inputs[i]
892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">.The expected result should be:<" + expectedString
893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">, but was: <" + actualString + ">. ";
894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           assertEquals(errorMsg, expected, actual, 0.0D);
896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       }
897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_MinNormalBoundary() {
903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long[] expecteds = {
904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x10000000000000L,                0x10000000000000L,                0x10000000000000L,
905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x10000000000000L,                0x10000000000000L,                0x10000000000000L,
906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x10000000000000L,                0x10000000000000L,                0x10000000000001L,
907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x10000000000001L,                0x10000000000001L,                0x10000000000001L,
908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x10000000000001L,                0x10000000000001L,                0x10000000000001L,
909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8010000000000000L,                0x8010000000000000L,                0x8010000000000000L,
911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8010000000000000L,                0x8010000000000000L,                0x8010000000000000L,
912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8010000000000000L,                0x8010000000000000L,                0x8010000000000001L,
913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8010000000000001L,                0x8010000000000001L,                0x8010000000000001L,
914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8010000000000001L,                0x8010000000000001L,                0x8010000000000001L };
915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       String[] inputs = {
917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.0p-1022",
918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000001p-1022",
919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.000000000000010000000000000000001p-1022",
920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000001fffffffffffffffffffffffffffffffffp-1022",
921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000007p-1022",
922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.000000000000070000000000000000001p-1022",
923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000007fffffffffffffffffffffffffffffffffp-1022",
924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000008p-1022",
925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.000000000000080000000000000000001p-1022",
926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000008fffffffffffffffffffffffffffffffffp-1022",
927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000009p-1022",
928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.000000000000090000000000000000001p-1022",
929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.00000000000009fffffffffffffffffffffffffffffffffp-1022",
930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.0000000000000fp-1022",
931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x1.0000000000000ffffffffffffffffffffffffffffffffffp-1022",
932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.0p-1022",
934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000001p-1022",
935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.000000000000010000000000000000001p-1022",
936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000001fffffffffffffffffffffffffffffffffp-1022",
937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000007p-1022",
938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.000000000000070000000000000000001p-1022",
939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000007fffffffffffffffffffffffffffffffffp-1022",
940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000008p-1022",
941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.000000000000080000000000000000001p-1022",
942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000008fffffffffffffffffffffffffffffffffp-1022",
943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000009p-1022",
944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.000000000000090000000000000000001p-1022",
945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.00000000000009fffffffffffffffffffffffffffffffffp-1022",
946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.0000000000000fp-1022",
947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x1.0000000000000ffffffffffffffffffffffffffffffffffp-1022" };
948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       for (int i = 0; i < inputs.length; i++) {
950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double actual = Double.parseDouble(inputs[i]);
951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double expected = Double.longBitsToDouble(expecteds[i]);
952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String errorMsg = i + "th input string is:<" + inputs[i]
956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">.The expected result should be:<" + expectedString
957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">, but was: <" + actualString + ">. ";
958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           assertEquals(errorMsg, expected, actual, 0.0D);
960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       }
961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_MaxSubNormalBoundary() {
967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long[] expecteds = {
968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xfffffffffffffL,                0xfffffffffffffL,                0xfffffffffffffL,
969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xfffffffffffffL,                0xfffffffffffffL,                0xfffffffffffffL,
970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0xfffffffffffffL,                0x10000000000000L,                0x10000000000000L,
971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x10000000000000L,                0x10000000000000L,                0x10000000000000L,
972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x10000000000000L,                0x10000000000000L,                0x10000000000000L,
973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x800fffffffffffffL,                0x800fffffffffffffL,                0x800fffffffffffffL,
975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x800fffffffffffffL,                0x800fffffffffffffL,                0x800fffffffffffffL,
976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x800fffffffffffffL,                0x8010000000000000L,                0x8010000000000000L,
977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8010000000000000L,                0x8010000000000000L,                0x8010000000000000L,
978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8010000000000000L,                0x8010000000000000L,                0x8010000000000000L };
979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       String[] inputs = {
981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffffp-1022",
982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff00000000000000000000000000000000001p-1022",
983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff1p-1022",
984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff10000000000000000000000000000000001p-1022",
985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff7p-1022",
987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff8p-1022",
989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff80000000000000000000000000000000001p-1022",
990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff9p-1022",
992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.fffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.ffffffffffffffp-1022",
994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.ffffffffffffff0000000000000000000000000000000001p-1022",
995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffffp-1022",
998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff00000000000000000000000000000000001p-1022",
999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff1p-1022",
1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff10000000000000000000000000000000001p-1022",
1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff7p-1022",
1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff8p-1022",
1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff80000000000000000000000000000000001p-1022",
1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff9p-1022",
1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.fffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022",
1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.ffffffffffffffp-1022",
1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.ffffffffffffff0000000000000000000000000000000001p-1022",
1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffp-1022" };
1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       for (int i = 0; i < inputs.length; i++) {
1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double actual = Double.parseDouble(inputs[i]);
1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double expected = Double.longBitsToDouble(expecteds[i]);
1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String errorMsg = i + "th input string is:<" + inputs[i]
1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">.The expected result should be:<" + expectedString
1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">, but was: <" + actualString + ">. ";
1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           assertEquals(errorMsg, expected, actual, 0.0D);
1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       }
1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_MinSubNormalBoundary() {
1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long[] expecteds = {
1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1L,                0x1L,                0x2L,
1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1L,                0x1L,                0x1L,
1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2L,                0x2L,                0x2L,
1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2L,                0x2L,                0x2L,
1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x2L,                0x2L,                0x2L,
1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000001L,                0x8000000000000001L,                0x8000000000000002L,
1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000001L,                0x8000000000000001L,                0x8000000000000001L,
1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000002L,                0x8000000000000002L,                0x8000000000000002L,
1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000002L,                0x8000000000000002L,                0x8000000000000002L,
1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000002L,                0x8000000000000002L,                0x8000000000000002L };
1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       String[] inputs = {
1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.0000000000001p-1022",
1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000010000000000000000001p-1022",
1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.0000000000001fffffffffffffffffffffffffffffffffp-1022",
1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000017p-1022",
1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.000000000000170000000000000000001p-1022",
1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000017fffffffffffffffffffffffffffffffffp-1022",
1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000018p-1022",
1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.000000000000180000000000000000001p-1022",
1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000018fffffffffffffffffffffffffffffffffp-1022",
1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000019p-1022",
1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.000000000000190000000000000000001p-1022",
1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000019fffffffffffffffffffffffffffffffffp-1022",
1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.0000000000001fp-1022",
1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.0000000000001f0000000000000000001p-1022",
1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.0000000000001ffffffffffffffffffffffffffffffffffp-1022",
1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.0000000000001p-1022",
1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000010000000000000000001p-1022",
1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.0000000000001fffffffffffffffffffffffffffffffffp-1022",
1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000017p-1022",
1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.000000000000170000000000000000001p-1022",
1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000017fffffffffffffffffffffffffffffffffp-1022",
1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000018p-1022",
1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.000000000000180000000000000000001p-1022",
1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000018fffffffffffffffffffffffffffffffffp-1022",
1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000019p-1022",
1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.000000000000190000000000000000001p-1022",
1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000019fffffffffffffffffffffffffffffffffp-1022",
1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.0000000000001fp-1022",
1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.0000000000001f0000000000000000001p-1022",
1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.0000000000001ffffffffffffffffffffffffffffffffffp-1022" };
1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       for (int i = 0; i < inputs.length; i++) {
1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double actual = Double.parseDouble(inputs[i]);
1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double expected = Double.longBitsToDouble(expecteds[i]);
1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String errorMsg = i + "th input string is:<" + inputs[i]
1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">.The expected result should be:<" + expectedString
1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">, but was: <" + actualString + ">. ";
1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           assertEquals(errorMsg, expected, actual, 0.0D);
1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       }
1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#parseDouble(java.lang.String)
1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_parseDouble_LString_ZeroBoundary() {
1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long[] expecteds = {
1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x0L,                0x0L,                0x0L,
1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1L,                0x1L,                0x1L,
1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x1L,                0x1L,                0x1L,
1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000000L,                0x8000000000000000L,                0x8000000000000000L,
1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000001L,                0x8000000000000001L,                0x8000000000000001L,
1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                0x8000000000000001L,                0x8000000000000001L,                0x8000000000000001L };
1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       String[] inputs = {
1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000004p-1022",
1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000007ffffffffffffffffffffffp-1022",
1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000008p-1022",
1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.000000000000080000000000000000001p-1022",
1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000008fffffffffffffffffffffffffffffffp-1022",
1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000009p-1022",
1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.000000000000090000000000000000001p-1022",
1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.00000000000009fffffffffffffffffffffffffffffffffp-1022",
1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "0x0.0000000000000fffffffffffffffffffffffffffffffffffp-1022",
1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000004p-1022",
1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000007ffffffffffffffffffffffp-1022",
1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000008p-1022",
1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.000000000000080000000000000000001p-1022",
1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000008fffffffffffffffffffffffffffffffp-1022",
1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000009p-1022",
1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.000000000000090000000000000000001p-1022",
1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.00000000000009fffffffffffffffffffffffffffffffffp-1022",
1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes               "-0x0.0000000000000fffffffffffffffffffffffffffffffffffp-1022" };
1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       for (int i = 0; i < inputs.length; i++) {
1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double actual = Double.parseDouble(inputs[i]);
1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           double expected = Double.longBitsToDouble(expecteds[i]);
1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String expectedString = "0x" + Long.toHexString(Double.doubleToLongBits(expected));
1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String actualString = "0x" + Long.toHexString(Double.doubleToLongBits(actual));
1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           String errorMsg = i + "th input string is:<" + inputs[i]
1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">.The expected result should be:<" + expectedString
1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                   + ">, but was: <" + actualString + ">. ";
1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes           assertEquals(errorMsg, expected, actual, 0.0D);
1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes       }
1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#shortValue()
1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_shortValue() {
1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method short java.lang.Double.shortValue()
1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d = new Double(1923311.47712);
1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned incorrect short value", 22767, d.shortValue());
1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#toString()
1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toString() {
1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.lang.String java.lang.Double.toString()
1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(1.7976931348623157E308, "1.7976931348623157E308");
1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(5.0E-4, "5.0E-4");
1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#toString(double)
1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toStringD() {
1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.lang.String java.lang.Double.toString(double)
1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(1.7976931348623157E308, "1.7976931348623157E308");
1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(1.0 / 0.0, "Infinity");
1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(0.0 / 0.0, "NaN");
1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(-1.0 / 0.0, "-Infinity");
1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double d;
1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x470fffffffffffffL);
1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "2.0769187434139308E34");
1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x4710000000000000L);
1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "2.076918743413931E34");
1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x470000000000000aL);
1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.0384593717069678E34");
1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x470000000000000bL);
1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.038459371706968E34");
1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x4700000000000017L);
1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.0384593717069708E34");
1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x4700000000000018L);
1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.038459371706971E34");
1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x4700000000000024L);
1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.0384593717069738E34");
1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x4700000000000025L);
1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.038459371706974E34");
1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x4700000000000031L);
1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.0384593717069768E34");
1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x4700000000000032L);
1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.038459371706977E34");
1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x470000000000003eL);
1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.0384593717069798E34");
1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x470000000000003fL);
1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "1.03845937170698E34");
1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000003L);
1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.371160993642719E298");
1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000004L);
1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.37116099364272E298");
1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000008L);
1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.371160993642728E298");
1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000009L);
1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.37116099364273E298");
1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000013L);
1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.371160993642749E298");
1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000014L);
1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.37116099364275E298");
1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000023L);
1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.371160993642779E298");
1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e00000000000024L);
1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.37116099364278E298");
1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e0000000000002eL);
1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.371160993642799E298");
1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0x7e0000000000002fL);
1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "8.3711609936428E298");
1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda00000000000001L);
1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.3846065602060736E125");
1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda00000000000002L);
1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.384606560206074E125");
1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda00000000000005L);
1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.3846065602060766E125");
1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda00000000000006L);
1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.384606560206077E125");
1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda00000000000009L);
1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.3846065602060796E125");
1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda0000000000000aL);
1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.38460656020608E125");
1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda0000000000000dL);
1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.3846065602060826E125");
1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        d = Double.longBitsToDouble(0xda0000000000000eL);
1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        test_toString(d, "-3.384606560206083E125");
1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#valueOf(java.lang.String)
1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_valueOfLjava_lang_String() {
1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for method java.lang.Double
1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // java.lang.Double.valueOf(java.lang.String)
1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect double returned", Math.abs(Double.valueOf("999999999999.999")
1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .doubleValue() - 999999999999.999d) < 1);
1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.valueOf(null);
1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected Double.valueOf(null) to throw NPE.");
1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException ex) {
1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double.valueOf("");
1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected Double.valueOf(\"\") to throw NFE");
1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NumberFormatException e) {
1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double pi = Double.valueOf("3.141592654");
1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(3.141592654, pi.doubleValue(), 0D);
1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double posZero = Double.valueOf("+0.0");
1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double negZero = Double.valueOf("-0.0");
1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("Doubletest0", posZero.equals(negZero));
1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Tests for double values by name.
1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double expectedNaN = new Double(Double.NaN);
1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double posNaN = Double.valueOf("NaN");
1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Doubletest1", posNaN.equals(expectedNaN));
1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double posNaNSigned = Double.valueOf("+NaN");
1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Doubletest2", posNaNSigned.equals(expectedNaN));
1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double negNaNSigned = Double.valueOf("-NaN");
1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Doubletest3", negNaNSigned.equals(expectedNaN));
1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double posInfinite = Double.valueOf("Infinity");
1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Doubletest4", posInfinite.equals(new Double(Double.POSITIVE_INFINITY)));
1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double posInfiniteSigned = Double.valueOf("+Infinity");
1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Doubletest5", posInfiniteSigned
1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(new Double(Double.POSITIVE_INFINITY)));
1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double negInfiniteSigned = Double.valueOf("-Infinity");
1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Doubletest6", negInfiniteSigned
1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(new Double(Double.NEGATIVE_INFINITY)));
1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#compareTo(java.lang.Double)
1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#compare(double, double)
1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_compareToLjava_lang_Double() {
1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // A selection of double values in ascending order.
1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        double[] values = new double[] { Double.NEGATIVE_INFINITY, -Double.MAX_VALUE, -2d,
1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                -Double.MIN_VALUE, -0d, 0d, Double.MIN_VALUE, 2d, Double.MAX_VALUE,
1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Double.POSITIVE_INFINITY, Double.NaN };
1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < values.length; i++) {
1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            double d1 = values[i];
1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test that each value compares equal to itself; and each object is
1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // equal to another object like itself.
1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Assert 0: compare() should be equal: " + d1,
1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    Double.compare(d1, d1) == 0);
1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Double objDouble = new Double(d1);
1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Assert 1: compareTo() should be equal: " + d1, objDouble
1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .compareTo(objDouble) == 0);
1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test that the Double-defined order is respected
1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int j = i + 1; j < values.length; j++) {
1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                double d2 = values[j];
1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Assert 2: compare() " + d1 + " should be less " + d2, Double
1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .compare(d1, d2) == -1);
1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Assert 3: compare() " + d2 + " should be greater " + d1, Double
1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .compare(d2, d1) == 1);
1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Double D2 = new Double(d2);
1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Assert 4: compareTo() " + d1 + " should be less " + d2, objDouble
1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .compareTo(D2) == -1);
1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("Assert 5: compareTo() " + d2 + " should be greater " + d1, D2
1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .compareTo(objDouble) == 1);
1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new Double(0.0D).compareTo(null);
1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No NPE");
1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#equals(java.lang.Object)
1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_equalsLjava_lang_Object() {
1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d1 = new Double(87654321.12345d);
1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d2 = new Double(87654321.12345d);
1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double d3 = new Double(0.0002f);
1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Assert 0: Equality test failed", d1.equals(d2) && !(d1.equals(d3)));
1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Assert 2: NaN should not be == Nan", Double.NaN != Double.NaN);
1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Assert 3: NaN should not be == Nan", new Double(Double.NaN)
1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(new Double(Double.NaN)));
1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Assert 4: -0d should be == 0d", 0d == -0d);
1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Assert 5: -0d should not be equals() 0d", !new Double(0d)
1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .equals(new Double(-0d)));
1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double dmax = new Double(Double.MAX_VALUE);
1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Double dmax1 = new Double(Double.MAX_VALUE);
1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Equality test failed", dmax.equals(dmax1) && !(dmax.equals(new Object())));
1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#toHexString(double)
1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toHexStringF() {
1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // the follow values come from the Double Javadoc/Spec
1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x0.0p0", Double.toHexString(0.0D));
1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("-0x0.0p0", Double.toHexString(-0.0D));
1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.0p0", Double.toHexString(1.0D));
1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("-0x1.0p0", Double.toHexString(-1.0D));
1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.0p1", Double.toHexString(2.0D));
1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.8p1", Double.toHexString(3.0D));
1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.0p-1", Double.toHexString(0.5D));
1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.0p-2", Double.toHexString(0.25D));
1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.fffffffffffffp1023", Double.toHexString(Double.MAX_VALUE));
1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x0.0000000000001p-1022", Double.toHexString(Double.MIN_VALUE));
1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test edge cases
1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("NaN", Double.toHexString(Double.NaN));
1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("-Infinity", Double.toHexString(Double.NEGATIVE_INFINITY));
1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Infinity", Double.toHexString(Double.POSITIVE_INFINITY));
1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test various numbers
1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("-0x1.da8p6", Double.toHexString(-118.625D));
1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.2957874cccccdp23", Double.toHexString(9743299.65D));
1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.2957874cccccdp23", Double.toHexString(9743299.65000D));
1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.2957874cccf63p23", Double.toHexString(9743299.650001234D));
1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.700d1061d3333p33", Double.toHexString(12349743299.65000D));
1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test HARMONY-2132
1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("0x1.01p10", Double.toHexString(0x1.01p10));
1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.lang.Double#valueOf(double)
1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_valueOfD() {
1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Double(Double.MIN_VALUE), Double.valueOf(Double.MIN_VALUE));
1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Double(Double.MAX_VALUE), Double.valueOf(Double.MAX_VALUE));
1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(new Double(0), Double.valueOf(0));
1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int s = -128;
1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (s < 128) {
1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Double(s), Double.valueOf(s));
1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(new Double(s + 0.1D), Double.valueOf(s + 0.1D));
1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            s++;
1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests {@link java.lang.Double#MAX_EXPONENT}
1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @since 1.6
1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_MAX_EXPONENT() {
1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong value of java.lang.Double.MAX_EXPONENT",
1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Double.MAX_EXPONENT == 1023);
1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong value of java.lang.Double.MAX_EXPONENT",
1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Double.MAX_EXPONENT == Math.getExponent(Double.MAX_VALUE));
1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests {@link java.lang.Double#MIN_EXPONENT}
1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @since 1.6
1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_MIN_EXPONENT() {
1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong value of java.lang.Double.MIN_EXPONENT",
1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Double.MIN_EXPONENT == -1022);
1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong value of java.lang.Double.MIN_EXPONENT",
1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Double.MIN_EXPONENT == Math.getExponent(Double.MIN_NORMAL));
1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests {@link java.lang.Double#MIN_NORMAL}
1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @since 1.6
1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_MIN_NORMAL() {
1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong value of java.lang.Double.MIN_NORMAL",
1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Double.MIN_NORMAL == 0x1.0p-1022);
1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong value of java.lang.Double.MIN_NORMAL",
1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Double.MIN_NORMAL == Double
1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes						.longBitsToDouble(0x0010000000000000L));
1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Wrong value of java.lang.Double.MIN_NORMAL",
1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				Double.MIN_NORMAL == 2.2250738585072014E-308);
1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
1445