01: /***
02: * Retrotranslator: a Java bytecode transformer that translates Java classes
03: * compiled with JDK 5.0 into classes that can be run on JVM 1.4.
04: *
05: * Copyright (c) 2005 - 2008 Taras Puchko
06: * All rights reserved.
07: *
08: * Redistribution and use in source and binary forms, with or without
09: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. Neither the name of the copyright holders nor the names of its
17: * contributors may be used to endorse or promote products derived from
18: * this software without specific prior written permission.
19: *
20: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30: * THE POSSIBILITY OF SUCH DAMAGE.
31: */package net.sf.retrotranslator.runtime.format;
32:
33: import java.math.BigDecimal;
34: import java.util.*;
35: import net.sf.retrotranslator.tests.TestCaseBase;
36:
37: /**
38: * @author Taras Puchko
39: */
40: public class HexadecimalExponentialConversionTestCase extends
41: TestCaseBase {
42:
43: public void testFormat() throws Exception {
44: assertFormat("0x0.0p0", "%a", 0.0);
45: assertFormat("+0x0.0p0", "%+a", 0.0);
46: assertFormat("-0x0.0p0", "%a", -0.0);
47: assertFormat("0x1.8p0", "%a", 1.5);
48: assertFormat("+0x1.8p0", "%+a", 1.5);
49: assertFormat("-0x1.8p0", "%a", -1.5);
50: assertFormat("+0x1.8p0", "%+a", 1.5f);
51: assertFormat(" 0x0.00000p0", "%15.5a", 0.0);
52:
53: assertFormat(" NaN", "%10.2a", Double.NaN);
54: assertFormat("Infinity", "%a", Double.POSITIVE_INFINITY);
55: assertFormat("+Infinity", "%+a", Double.POSITIVE_INFINITY);
56: assertFormat(" -Infinity", "%10.2a", Double.NEGATIVE_INFINITY);
57: assertFormat("null", "%a", (Double) null);
58: assertFormat(" n", "%2.1a", (Double) null);
59: assertFormat("0X1.ABCDEFP1", "%A", 0x1.abcdef0p1);
60:
61: assertFormat("0x1.2345p1", "%a", 0x1.2345p1);
62: assertFormat("0x1.2345p-1", "%a", 0x1.2345p-1);
63: assertFormat("0x1.2p1", "%1.0a", 0x1.23456789p1);
64: assertFormat("0x1.2p1", "%1.0a", 0x1.23456789p1);
65: assertFormat("0x1.23456p1", "%1.5a", 0x1.23456789p1);
66: assertFormat("0x1.2345679p1", "%1.7a", 0x1.23456789p1);
67: assertFormat("-0x1.2345679p1", "%1.7a", -0x1.23456789p1);
68:
69: assertFormat("0x1.2345678p1", "%1.7a", 0x1.234567871p1);
70: assertFormat("0x1.2345678p1", "%1.7a", 0x1.23456788p1);
71: assertFormat("0x1.2345679p1", "%1.7a", 0x1.2345678801p1);
72: assertFormat("-0x1.2345678p1", "%1.7a", -0x1.23456788p1);
73: assertFormat("-0x1.2345678p1", "%1.7a", -0x1.23456788p1);
74: assertFormat("-0x1.2345679p1", "%1.7a", -0x1.234567881p1);
75: assertFormat("0x0.12345p-1022", "%a", 0x0.12345p-1022);
76: assertFormat("0x1.23p-1026", "%1.2a", 0x0.12345p-1022);
77: assertFormat("0x1.2p-1030", "%#1.0a", 0x0.012345p-1022);
78: assertFormat("0x0.123450000000000p-1022", "%1.15a",
79: 0x0.12345p-1022);
80: assertFormat(" 0x0.12345p-1022", "%20a", 0x0.12345p-1022);
81:
82: assertFormat("0x1.fffffffffffffp1023", "%a", Double.MAX_VALUE);
83: assertFormat("0x1.0p1024", "%1.0a", Double.MAX_VALUE);
84: assertFormat("-0x1.00000p1024", "%1.5a", -Double.MAX_VALUE);
85: assertFormatException(
86: FormatFlagsConversionMismatchException.class, "%(a");
87: assertFormatException(
88: FormatFlagsConversionMismatchException.class, "%,a");
89: assertFormatException(IllegalFormatConversionException.class,
90: "%a", BigDecimal.ONE);
91: assertFormatException(IllegalFormatFlagsException.class,
92: "%-012.3a");
93: assertFormatException(IllegalFormatFlagsException.class,
94: "%+ 12.3a");
95: }
96:
97: }
|