1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang.mutable;
18
19 import junit.framework.Test;
20 import junit.framework.TestCase;
21 import junit.framework.TestSuite;
22 import junit.textui.TestRunner;
23
24
25
26
27
28
29
30 public class MutableDoubleTest extends TestCase {
31
32 public MutableDoubleTest(String testName) {
33 super(testName);
34 }
35
36 public static void main(String[] args) {
37 TestRunner.run(suite());
38 }
39
40 public static Test suite() {
41 return new TestSuite(MutableDoubleTest.class);
42 }
43
44
45 public void testConstructors() {
46 assertEquals(0d, new MutableDouble().doubleValue(), 0.0001d);
47
48 assertEquals(1d, new MutableDouble(1d).doubleValue(), 0.0001d);
49
50 assertEquals(2d, new MutableDouble(new Double(2d)).doubleValue(), 0.0001d);
51 assertEquals(3d, new MutableDouble(new MutableDouble(3d)).doubleValue(), 0.0001d);
52 try {
53 new MutableDouble(null);
54 fail();
55 } catch (NullPointerException ex) {}
56 }
57
58 public void testGetSet() {
59 final MutableDouble mutNum = new MutableDouble(0d);
60 assertEquals(0d, new MutableDouble().doubleValue(), 0.0001d);
61 assertEquals(new Double(0), new MutableDouble().getValue());
62
63 mutNum.setValue(1);
64 assertEquals(1d, mutNum.doubleValue(), 0.0001d);
65 assertEquals(new Double(1d), mutNum.getValue());
66
67 mutNum.setValue(new Double(2d));
68 assertEquals(2d, mutNum.doubleValue(), 0.0001d);
69 assertEquals(new Double(2d), mutNum.getValue());
70
71 mutNum.setValue(new MutableDouble(3d));
72 assertEquals(3d, mutNum.doubleValue(), 0.0001d);
73 assertEquals(new Double(3d), mutNum.getValue());
74 try {
75 mutNum.setValue(null);
76 fail();
77 } catch (NullPointerException ex) {}
78 try {
79 mutNum.setValue("0");
80 fail();
81 } catch (ClassCastException ex) {}
82 }
83
84 public void testNanInfinite() {
85 MutableDouble mutNum = new MutableDouble(Double.NaN);
86 assertEquals(true, mutNum.isNaN());
87
88 mutNum = new MutableDouble(Double.POSITIVE_INFINITY);
89 assertEquals(true, mutNum.isInfinite());
90
91 mutNum = new MutableDouble(Double.NEGATIVE_INFINITY);
92 assertEquals(true, mutNum.isInfinite());
93 }
94
95 public void testEquals() {
96 final MutableDouble mutNumA = new MutableDouble(0d);
97 final MutableDouble mutNumB = new MutableDouble(0d);
98 final MutableDouble mutNumC = new MutableDouble(1d);
99
100 assertEquals(true, mutNumA.equals(mutNumA));
101 assertEquals(true, mutNumA.equals(mutNumB));
102 assertEquals(true, mutNumB.equals(mutNumA));
103 assertEquals(true, mutNumB.equals(mutNumB));
104 assertEquals(false, mutNumA.equals(mutNumC));
105 assertEquals(false, mutNumB.equals(mutNumC));
106 assertEquals(true, mutNumC.equals(mutNumC));
107 assertEquals(false, mutNumA.equals(null));
108 assertEquals(false, mutNumA.equals(new Double(0d)));
109 assertEquals(false, mutNumA.equals("0"));
110 }
111
112 public void testHashCode() {
113 final MutableDouble mutNumA = new MutableDouble(0d);
114 final MutableDouble mutNumB = new MutableDouble(0d);
115 final MutableDouble mutNumC = new MutableDouble(1d);
116
117 assertEquals(true, mutNumA.hashCode() == mutNumA.hashCode());
118 assertEquals(true, mutNumA.hashCode() == mutNumB.hashCode());
119 assertEquals(false, mutNumA.hashCode() == mutNumC.hashCode());
120 assertEquals(true, mutNumA.hashCode() == new Double(0d).hashCode());
121 }
122
123 public void testCompareTo() {
124 final MutableDouble mutNum = new MutableDouble(0d);
125
126 assertEquals(0, mutNum.compareTo(new MutableDouble(0d)));
127 assertEquals(+1, mutNum.compareTo(new MutableDouble(-1d)));
128 assertEquals(-1, mutNum.compareTo(new MutableDouble(1d)));
129 try {
130 mutNum.compareTo(null);
131 fail();
132 } catch (NullPointerException ex) {}
133 try {
134 mutNum.compareTo(new Double(0d));
135 fail();
136 } catch (ClassCastException ex) {}
137 try {
138 mutNum.compareTo("0");
139 fail();
140 } catch (ClassCastException ex) {}
141 }
142
143 public void testPrimitiveValues() {
144 MutableDouble mutNum = new MutableDouble(1.7);
145
146 assertEquals( 1.7F, mutNum.floatValue(), 0 );
147 assertEquals( 1.7, mutNum.doubleValue(), 0 );
148 assertEquals( (byte) 1, mutNum.byteValue() );
149 assertEquals( (short) 1, mutNum.shortValue() );
150 assertEquals( 1, mutNum.intValue() );
151 assertEquals( 1L, mutNum.longValue() );
152 }
153
154 public void testToDouble() {
155 assertEquals(new Double(0d), new MutableDouble(0d).toDouble());
156 assertEquals(new Double(12.3d), new MutableDouble(12.3d).toDouble());
157 }
158
159 public void testIncrement() {
160 MutableDouble mutNum = new MutableDouble(1);
161 mutNum.increment();
162
163 assertEquals(2, mutNum.intValue());
164 assertEquals(2L, mutNum.longValue());
165 }
166
167 public void testDecrement() {
168 MutableDouble mutNum = new MutableDouble(1);
169 mutNum.decrement();
170
171 assertEquals(0, mutNum.intValue());
172 assertEquals(0L, mutNum.longValue());
173 }
174
175 public void testAddValuePrimitive() {
176 MutableDouble mutNum = new MutableDouble(1);
177 mutNum.add(1.1d);
178
179 assertEquals(2.1d, mutNum.doubleValue(), 0.01d);
180 }
181
182 public void testAddValueObject() {
183 MutableDouble mutNum = new MutableDouble(1);
184 mutNum.add(new Double(1.1d));
185
186 assertEquals(2.1d, mutNum.doubleValue(), 0.01d);
187 }
188
189 public void testSubtractValuePrimitive() {
190 MutableDouble mutNum = new MutableDouble(1);
191 mutNum.subtract(0.9d);
192
193 assertEquals(0.1d, mutNum.doubleValue(), 0.01d);
194 }
195
196 public void testSubtractValueObject() {
197 MutableDouble mutNum = new MutableDouble(1);
198 mutNum.subtract(new Double(0.9d));
199
200 assertEquals(0.1d, mutNum.doubleValue(), 0.01d);
201 }
202
203 public void testToString() {
204 assertEquals("0.0", new MutableDouble(0d).toString());
205 assertEquals("10.0", new MutableDouble(10d).toString());
206 assertEquals("-123.0", new MutableDouble(-123d).toString());
207 }
208
209 }