1 package net.sf.openrocket.util;
3 import static java.lang.Math.PI;
4 import static org.junit.Assert.assertEquals;
8 public class TextUtilTest {
11 public void specialCaseTest() {
12 assertEquals("NaN",TextUtil.doubleToString(Double.NaN));
13 assertEquals("Inf",TextUtil.doubleToString(Double.POSITIVE_INFINITY));
14 assertEquals("-Inf",TextUtil.doubleToString(Double.NEGATIVE_INFINITY));
15 assertEquals("0",TextUtil.doubleToString(0.0));
16 assertEquals("0",TextUtil.doubleToString(MathUtil.EPSILON/3));
17 assertEquals("0",TextUtil.doubleToString(-MathUtil.EPSILON/3));
21 public void longTest() {
23 assertEquals("3.1416e-5", TextUtil.doubleToString(PI*1e-5));
24 assertEquals("3.1416e-4", TextUtil.doubleToString(PI*1e-4));
25 assertEquals("0.0031416", TextUtil.doubleToString(PI*1e-3));
26 assertEquals("0.031416", TextUtil.doubleToString(PI*1e-2));
27 assertEquals("0.31416", TextUtil.doubleToString(PI*1e-1));
28 assertEquals("3.1416", TextUtil.doubleToString(PI));
29 assertEquals("31.416", TextUtil.doubleToString(PI*1e1));
30 assertEquals("314.16", TextUtil.doubleToString(PI*1e2));
31 assertEquals("3141.6", TextUtil.doubleToString(PI*1e3));
32 assertEquals("31416", TextUtil.doubleToString(PI*1e4));
33 assertEquals("314159", TextUtil.doubleToString(PI*1e5));
34 assertEquals("3141593", TextUtil.doubleToString(PI*1e6));
35 assertEquals("31415927", TextUtil.doubleToString(PI*1e7));
36 assertEquals("3.1416e8", TextUtil.doubleToString(PI*1e8));
37 assertEquals("3.1416e9", TextUtil.doubleToString(PI*1e9));
38 assertEquals("3.1416e10", TextUtil.doubleToString(PI*1e10));
40 assertEquals("-3.1416e-5", TextUtil.doubleToString(-PI*1e-5));
41 assertEquals("-3.1416e-4", TextUtil.doubleToString(-PI*1e-4));
42 assertEquals("-0.0031416", TextUtil.doubleToString(-PI*1e-3));
43 assertEquals("-0.031416", TextUtil.doubleToString(-PI*1e-2));
44 assertEquals("-0.31416", TextUtil.doubleToString(-PI*1e-1));
45 assertEquals("-3.1416", TextUtil.doubleToString(-PI));
46 assertEquals("-31.416", TextUtil.doubleToString(-PI*1e1));
47 assertEquals("-314.16", TextUtil.doubleToString(-PI*1e2));
48 assertEquals("-3141.6", TextUtil.doubleToString(-PI*1e3));
49 assertEquals("-31416", TextUtil.doubleToString(-PI*1e4));
50 assertEquals("-314159", TextUtil.doubleToString(-PI*1e5));
51 assertEquals("-3141593", TextUtil.doubleToString(-PI*1e6));
52 assertEquals("-31415927", TextUtil.doubleToString(-PI*1e7));
53 assertEquals("-3.1416e8", TextUtil.doubleToString(-PI*1e8));
54 assertEquals("-3.1416e9", TextUtil.doubleToString(-PI*1e9));
55 assertEquals("-3.1416e10", TextUtil.doubleToString(-PI*1e10));
60 public void shortTest() {
62 assertEquals("3.1e-5", TextUtil.doubleToString(p*1e-5));
63 assertEquals("3.1e-4", TextUtil.doubleToString(p*1e-4));
64 assertEquals("0.0031", TextUtil.doubleToString(p*1e-3));
65 assertEquals("0.031", TextUtil.doubleToString(p*1e-2));
66 assertEquals("0.31", TextUtil.doubleToString(p*1e-1));
67 assertEquals("3.1", TextUtil.doubleToString(p));
68 assertEquals("31", TextUtil.doubleToString(p*1e1));
69 assertEquals("310", TextUtil.doubleToString(p*1e2));
70 assertEquals("3100", TextUtil.doubleToString(p*1e3));
71 assertEquals("31000", TextUtil.doubleToString(p*1e4));
72 assertEquals("3.1e5", TextUtil.doubleToString(p*1e5));
73 assertEquals("3.1e6", TextUtil.doubleToString(p*1e6));
74 assertEquals("3.1e7", TextUtil.doubleToString(p*1e7));
75 assertEquals("3.1e8", TextUtil.doubleToString(p*1e8));
76 assertEquals("3.1e9", TextUtil.doubleToString(p*1e9));
77 assertEquals("3.1e10", TextUtil.doubleToString(p*1e10));
79 assertEquals("-3.1e-5", TextUtil.doubleToString(-p*1e-5));
80 assertEquals("-3.1e-4", TextUtil.doubleToString(-p*1e-4));
81 assertEquals("-0.0031", TextUtil.doubleToString(-p*1e-3));
82 assertEquals("-0.031", TextUtil.doubleToString(-p*1e-2));
83 assertEquals("-0.31", TextUtil.doubleToString(-p*1e-1));
84 assertEquals("-3.1", TextUtil.doubleToString(-p));
85 assertEquals("-31", TextUtil.doubleToString(-p*1e1));
86 assertEquals("-310", TextUtil.doubleToString(-p*1e2));
87 assertEquals("-3100", TextUtil.doubleToString(-p*1e3));
88 assertEquals("-31000", TextUtil.doubleToString(-p*1e4));
89 assertEquals("-3.1e5", TextUtil.doubleToString(-p*1e5));
90 assertEquals("-3.1e6", TextUtil.doubleToString(-p*1e6));
91 assertEquals("-3.1e7", TextUtil.doubleToString(-p*1e7));
92 assertEquals("-3.1e8", TextUtil.doubleToString(-p*1e8));
93 assertEquals("-3.1e9", TextUtil.doubleToString(-p*1e9));
94 assertEquals("-3.1e10", TextUtil.doubleToString(-p*1e10));
97 assertEquals("3e-5", TextUtil.doubleToString(p*1e-5));
98 assertEquals("3e-4", TextUtil.doubleToString(p*1e-4));
99 assertEquals("3e-3", TextUtil.doubleToString(p*1e-3));
100 assertEquals("0.03", TextUtil.doubleToString(p*1e-2));
101 assertEquals("0.3", TextUtil.doubleToString(p*1e-1));
102 assertEquals("3", TextUtil.doubleToString(p));
103 assertEquals("30", TextUtil.doubleToString(p*1e1));
104 assertEquals("300", TextUtil.doubleToString(p*1e2));
105 assertEquals("3e3", TextUtil.doubleToString(p*1e3));
106 assertEquals("3e4", TextUtil.doubleToString(p*1e4));
107 assertEquals("3e5", TextUtil.doubleToString(p*1e5));
108 assertEquals("3e6", TextUtil.doubleToString(p*1e6));
109 assertEquals("3e7", TextUtil.doubleToString(p*1e7));
110 assertEquals("3e8", TextUtil.doubleToString(p*1e8));
111 assertEquals("3e9", TextUtil.doubleToString(p*1e9));
112 assertEquals("3e10", TextUtil.doubleToString(p*1e10));
114 assertEquals("-3e-5", TextUtil.doubleToString(-p*1e-5));
115 assertEquals("-3e-4", TextUtil.doubleToString(-p*1e-4));
116 assertEquals("-3e-3", TextUtil.doubleToString(-p*1e-3));
117 assertEquals("-0.03", TextUtil.doubleToString(-p*1e-2));
118 assertEquals("-0.3", TextUtil.doubleToString(-p*1e-1));
119 assertEquals("-3", TextUtil.doubleToString(-p));
120 assertEquals("-30", TextUtil.doubleToString(-p*1e1));
121 assertEquals("-300", TextUtil.doubleToString(-p*1e2));
122 assertEquals("-3e3", TextUtil.doubleToString(-p*1e3));
123 assertEquals("-3e4", TextUtil.doubleToString(-p*1e4));
124 assertEquals("-3e5", TextUtil.doubleToString(-p*1e5));
125 assertEquals("-3e6", TextUtil.doubleToString(-p*1e6));
126 assertEquals("-3e7", TextUtil.doubleToString(-p*1e7));
127 assertEquals("-3e8", TextUtil.doubleToString(-p*1e8));
128 assertEquals("-3e9", TextUtil.doubleToString(-p*1e9));
129 assertEquals("-3e10", TextUtil.doubleToString(-p*1e10));
134 public void roundingTest() {
137 * Not testing with 1.00015 because it might be changed during number formatting
138 * calculations. Its rounding is basically arbitrary anyway.
141 assertEquals("1.0002e-5", TextUtil.doubleToString(1.0001500001e-5));
142 assertEquals("1.0001e-5", TextUtil.doubleToString(1.0001499999e-5));
143 assertEquals("1.0002e-4", TextUtil.doubleToString(1.0001500001e-4));
144 assertEquals("1.0001e-4", TextUtil.doubleToString(1.0001499999e-4));
145 assertEquals("0.0010002", TextUtil.doubleToString(1.0001500001e-3));
146 assertEquals("0.0010001", TextUtil.doubleToString(1.0001499999e-3));
147 assertEquals("0.010002", TextUtil.doubleToString(1.0001500001e-2));
148 assertEquals("0.010001", TextUtil.doubleToString(1.0001499999e-2));
149 assertEquals("0.10002", TextUtil.doubleToString(1.0001500001e-1));
150 assertEquals("0.10001", TextUtil.doubleToString(1.0001499999e-1));
151 assertEquals("1.0002", TextUtil.doubleToString(1.0001500001));
152 assertEquals("1.0001", TextUtil.doubleToString(1.0001499999));
153 assertEquals("10.002", TextUtil.doubleToString(1.0001500001e1));
154 assertEquals("10.001", TextUtil.doubleToString(1.0001499999e1));
155 assertEquals("100.02", TextUtil.doubleToString(1.0001500001e2));
156 assertEquals("100.01", TextUtil.doubleToString(1.0001499999e2));
157 assertEquals("1000.2", TextUtil.doubleToString(1.0001500001e3));
158 assertEquals("1000.1", TextUtil.doubleToString(1.0001499999e3));
159 assertEquals("10002", TextUtil.doubleToString(1.0001500001e4));
160 assertEquals("10001", TextUtil.doubleToString(1.0001499999e4));
161 assertEquals("100012", TextUtil.doubleToString(1.00011500001e5));
162 assertEquals("100011", TextUtil.doubleToString(1.00011499999e5));
163 assertEquals("1000112", TextUtil.doubleToString(1.000111500001e6));
164 assertEquals("1000111", TextUtil.doubleToString(1.000111499999e6));
165 assertEquals("10001112", TextUtil.doubleToString(1.0001111500001e7));
166 assertEquals("10001111", TextUtil.doubleToString(1.0001111499999e7));
167 assertEquals("1.0002e8", TextUtil.doubleToString(1.0001500001e8));
168 assertEquals("1.0001e8", TextUtil.doubleToString(1.0001499999e8));
169 assertEquals("1.0002e9", TextUtil.doubleToString(1.0001500001e9));
170 assertEquals("1.0001e9", TextUtil.doubleToString(1.0001499999e9));
171 assertEquals("1.0002e10", TextUtil.doubleToString(1.0001500001e10));
172 assertEquals("1.0001e10", TextUtil.doubleToString(1.0001499999e10));
175 assertEquals("-1.0002e-5", TextUtil.doubleToString(-1.0001500001e-5));
176 assertEquals("-1.0001e-5", TextUtil.doubleToString(-1.0001499999e-5));
177 assertEquals("-1.0002e-4", TextUtil.doubleToString(-1.0001500001e-4));
178 assertEquals("-1.0001e-4", TextUtil.doubleToString(-1.0001499999e-4));
179 assertEquals("-0.0010002", TextUtil.doubleToString(-1.0001500001e-3));
180 assertEquals("-0.0010001", TextUtil.doubleToString(-1.0001499999e-3));
181 assertEquals("-0.010002", TextUtil.doubleToString(-1.0001500001e-2));
182 assertEquals("-0.010001", TextUtil.doubleToString(-1.0001499999e-2));
183 assertEquals("-0.10002", TextUtil.doubleToString(-1.0001500001e-1));
184 assertEquals("-0.10001", TextUtil.doubleToString(-1.0001499999e-1));
185 assertEquals("-1.0002", TextUtil.doubleToString(-1.0001500001));
186 assertEquals("-1.0001", TextUtil.doubleToString(-1.0001499999));
187 assertEquals("-10.002", TextUtil.doubleToString(-1.0001500001e1));
188 assertEquals("-10.001", TextUtil.doubleToString(-1.0001499999e1));
189 assertEquals("-100.02", TextUtil.doubleToString(-1.0001500001e2));
190 assertEquals("-100.01", TextUtil.doubleToString(-1.0001499999e2));
191 assertEquals("-1000.2", TextUtil.doubleToString(-1.0001500001e3));
192 assertEquals("-1000.1", TextUtil.doubleToString(-1.0001499999e3));
193 assertEquals("-10002", TextUtil.doubleToString(-1.0001500001e4));
194 assertEquals("-10001", TextUtil.doubleToString(-1.0001499999e4));
195 assertEquals("-100012", TextUtil.doubleToString(-1.00011500001e5));
196 assertEquals("-100011", TextUtil.doubleToString(-1.00011499999e5));
197 assertEquals("-1000112", TextUtil.doubleToString(-1.000111500001e6));
198 assertEquals("-1000111", TextUtil.doubleToString(-1.000111499999e6));
199 assertEquals("-10001112", TextUtil.doubleToString(-1.0001111500001e7));
200 assertEquals("-10001111", TextUtil.doubleToString(-1.0001111499999e7));
201 assertEquals("-1.0002e8", TextUtil.doubleToString(-1.0001500001e8));
202 assertEquals("-1.0001e8", TextUtil.doubleToString(-1.0001499999e8));
203 assertEquals("-1.0002e9", TextUtil.doubleToString(-1.0001500001e9));
204 assertEquals("-1.0001e9", TextUtil.doubleToString(-1.0001499999e9));
205 assertEquals("-1.0002e10", TextUtil.doubleToString(-1.0001500001e10));
206 assertEquals("-1.0001e10", TextUtil.doubleToString(-1.0001499999e10));