@@ -56,7 +56,30 @@ public void testCurrencyCode(){
5656 @ SpecAssertion (section = "4.2.2" , id = "422-A2" )
5757 @ Test
5858 public void testGetNumber (){
59- fail ();
59+ for (Class type : MonetaryAmounts .getAmountTypes ()){
60+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
61+ f .setCurrency ("CHF" );
62+ MonetaryAmount [] moneys = new MonetaryAmount []{f .setNumber (100 ).create (), f .setNumber (34242344 ).create (),
63+ f .setNumber (new BigDecimal ("23123213.435" )).create (),
64+ f .setNumber (new BigDecimal ("-23123213.435" )).create (), f .setNumber (-23123213 ).create (),
65+ f .setNumber (0 ).create ()};
66+ BigDecimal [] numbers = new BigDecimal []{new BigDecimal ("100,34242344" ), new BigDecimal ("23123213.435" ),
67+ new BigDecimal ("-23123213.435" ), new BigDecimal ("-23123213" ), BigDecimal .ZERO };
68+ int [] intNums = new int []{100 , 23123213 , -23123213 , -23123213 , 0 };
69+ long [] longNums = new long []{100 , 23123213 , -23123213 , -23123213 , 0 };
70+ double [] doubleNums = new double []{100 , 34242344 , 23123213.435 , -23123213.435 , -23123213 , 0 };
71+ float [] floatNums = new float []{100f , 34242344f , 23123213.435f , -23123213.435f , -23123213 , 0f };
72+
73+ for (int i = 0 ; i < moneys .length ; i ++){
74+ NumberValue nv = moneys [i ].getNumber ();
75+ assertNotNull (nv );
76+ assertEquals ("getNumber() incorrect." , numbers [i ], nv .numberValue (BigDecimal .class ));
77+ assertEquals ("getNumber().intValue() incorrect." , intNums [i ], nv .intValue ());
78+ assertEquals ("getNumber().longValue() incorrect." , longNums [i ], nv .longValue ());
79+ assertEquals ("getNumber().doubleValue() incorrect." , doubleNums [i ], nv .doubleValue (), 0.0d );
80+ assertEquals ("getNumber().floatValue() incorrect." , floatNums [i ], nv .floatValue (), 0.0d );
81+ }
82+ }
6083 }
6184
6285 /**
@@ -94,38 +117,52 @@ public void testIsNegative(){
94117 }
95118
96119 /**
97- * For each MonetaryAmount implementation: Ensure isNegative ()
120+ * For each MonetaryAmount implementation: Ensure isPositive ()
98121 * returns correct results.
99122 */
100- @ SpecAssertion (section = "4.2.2" , id = "422-A4 " )
123+ @ SpecAssertion (section = "4.2.2" , id = "422-A5 " )
101124 @ Test
102- public void testIsNegativeOrZero (){
125+ public void testIsPositive (){
103126 for (Class type : MonetaryAmounts .getAmountTypes ()){
104127 MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
105128 f .setCurrency ("CHF" );
106129 MonetaryAmount [] moneys = new MonetaryAmount []{f .setNumber (100 ).create (), f .setNumber (34242344 ).create (),
107130 f .setNumber (23123213.435 ).create ()};
108131 for (MonetaryAmount m : moneys ){
109- assertFalse ( "Invalid negativeOrZero (expected false): " + m , m . isNegativeOrZero ());
132+ assertTrue ( m . isPositive ());
110133 }
111134 moneys = new MonetaryAmount []{f .setNumber (0 ).create (), f .setNumber (0.0 ).create (),
112- f .setNumber (BigDecimal .ZERO ).create (), f .setNumber (new BigDecimal ("0.0000 " )).create (),
135+ f .setNumber (BigDecimal .ZERO ).create (), f .setNumber (new BigDecimal ("0.00000000000000000 " )).create (),
113136 f .setNumber (-100 ).create (), f .setNumber (-34242344 ).create (), f .setNumber (-23123213.435 ).create ()};
114137 for (MonetaryAmount m : moneys ){
115- assertTrue ( "Invalid negativeOrZero (expected true): " + m , m . isNegativeOrZero ());
138+ assertFalse ( m . isPositive ());
116139 }
117140 }
118141 }
119142
120143
121144 /**
122- * For each MonetaryAmount implementation: Ensure isPositive ()
145+ * For each MonetaryAmount implementation: Ensure isZero ()
123146 * returns correct results.
124147 */
125- @ SpecAssertion (section = "4.2.2" , id = "422-A5 " )
148+ @ SpecAssertion (section = "4.2.2" , id = "422-A6 " )
126149 @ Test
127150 public void testIsZero (){
128- fail ();
151+ for (Class type : MonetaryAmounts .getAmountTypes ()){
152+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
153+ f .setCurrency ("CHF" );
154+ MonetaryAmount [] moneys = new MonetaryAmount []{f .setNumber (100 ).create (), f .setNumber (34242344 ).create (),
155+ f .setNumber (23123213.435 ).create (), f .setNumber (-100 ).create (),
156+ f .setNumber (-723527.36532 ).create ()};
157+ for (MonetaryAmount m : moneys ){
158+ assertFalse (m .isZero ());
159+ }
160+ moneys = new MonetaryAmount []{f .setNumber (0 ).create (), f .setNumber (0.0 ).create (),
161+ f .setNumber (BigDecimal .ZERO ).create (), f .setNumber (new BigDecimal ("0.00000000000000000" )).create ()};
162+ for (MonetaryAmount m : moneys ){
163+ assertTrue (m .isZero ());
164+ }
165+ }
129166 }
130167
131168 /**
@@ -135,7 +172,16 @@ public void testIsZero(){
135172 @ SpecAssertion (section = "4.2.2" , id = "422-A6" )
136173 @ Test
137174 public void testIsZeroAdvanced (){
138- fail ();
175+ for (Class type : MonetaryAmounts .getAmountTypes ()){
176+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
177+ f .setCurrency ("CHF" );
178+ MonetaryAmount [] moneys =
179+ new MonetaryAmount []{f .setNumber (-0 ).create (), f .setNumber (0 ).create (), f .setNumber (-0.0f ).create (),
180+ f .setNumber (0.0f ).create (), f .setNumber (-0.0d ).create (), f .setNumber (0.0d ).create ()};
181+ for (MonetaryAmount m : moneys ){
182+ assertTrue (m .isZero ());
183+ }
184+ }
139185 }
140186
141187 /**
@@ -163,6 +209,54 @@ public void testSignum(){
163209 }
164210 }
165211
212+ /**
213+ * For each MonetaryAmount implementation: Ensure isNegativeOrZero()
214+ * returns correct results.
215+ */
216+ @ SpecAssertion (section = "4.2.2" , id = "422-A8" )
217+ @ Test
218+ public void testIsNegativeOrZero (){
219+ for (Class type : MonetaryAmounts .getAmountTypes ()){
220+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
221+ f .setCurrency ("CHF" );
222+ MonetaryAmount [] moneys = new MonetaryAmount []{f .setNumber (100 ).create (), f .setNumber (34242344 ).create (),
223+ f .setNumber (23123213.435 ).create ()};
224+ for (MonetaryAmount m : moneys ){
225+ assertFalse ("Invalid negativeOrZero (expected false): " + m , m .isNegativeOrZero ());
226+ }
227+ moneys = new MonetaryAmount []{f .setNumber (0 ).create (), f .setNumber (0.0 ).create (),
228+ f .setNumber (BigDecimal .ZERO ).create (), f .setNumber (new BigDecimal ("0.0000" )).create (),
229+ f .setNumber (-100 ).create (), f .setNumber (-34242344 ).create (), f .setNumber (-23123213.435 ).create ()};
230+ for (MonetaryAmount m : moneys ){
231+ assertTrue ("Invalid negativeOrZero (expected true): " + m , m .isNegativeOrZero ());
232+ }
233+ }
234+ }
235+
236+ /**
237+ * For each MonetaryAmount implementation: Ensure isPositiveOrZero()
238+ * returns correct results.
239+ */
240+ @ SpecAssertion (section = "4.2.2" , id = "422-A9" )
241+ @ Test
242+ public void testIsPositiveOrZero (){
243+ for (Class type : MonetaryAmounts .getAmountTypes ()){
244+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
245+ f .setCurrency ("CHF" );
246+ MonetaryAmount [] moneys = new MonetaryAmount []{f .setNumber (0 ).create (), f .setNumber (0.0 ).create (),
247+ f .setNumber (BigDecimal .ZERO ).create (), f .setNumber (new BigDecimal ("0.00000000000000000" )).create (),
248+ f .setNumber (100 ).create (), f .setNumber (34242344 ).create (), f .setNumber (23123213.435 ).create ()};
249+ for (MonetaryAmount m : moneys ){
250+ assertTrue ("Invalid positiveOrZero (expected true): " + m , m .isPositiveOrZero ());
251+ }
252+ moneys = new MonetaryAmount []{f .setNumber (-100 ).create (), f .setNumber (-34242344 ).create (),
253+ f .setNumber (-23123213.435 ).create ()};
254+ for (MonetaryAmount m : moneys ){
255+ assertFalse ("Invalid positiveOrZero (expected false): " + m , m .isPositiveOrZero ());
256+ }
257+ }
258+ }
259+
166260
167261 // ********************* B. Prototyping Support *****************************
168262
@@ -257,7 +351,18 @@ public void testMonetaryAmountFactories_CreateWithMonetaryContextNumberAndCurren
257351 @ SpecAssertion (section = "4.2.2" , id = "422-C1" )
258352 @ Test
259353 public void testMonetaryAmount_isGreaterThan (){
260- fail ("Not implemented" );
354+ for (Class type : MonetaryAmounts .getAmountTypes ()){
355+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
356+ f .setCurrency ("CHF" );
357+ assertFalse (f .setNumber (BigDecimal .valueOf (0d )).create ()
358+ .isGreaterThan (f .setNumber (BigDecimal .valueOf (0 )).create ()));
359+ assertTrue (f .setNumber (BigDecimal .valueOf (0.00000000001d )).create ()
360+ .isGreaterThan (f .setNumber (BigDecimal .valueOf (0d )).create ()));
361+ assertTrue (f .setNumber (15 ).create ().isGreaterThan (f .setNumber (10 ).create ()));
362+ assertTrue (f .setNumber (15.546 ).create ().isGreaterThan (f .setNumber (10.34 ).create ()));
363+ assertFalse (f .setNumber (5 ).create ().isGreaterThan (f .setNumber (10 ).create ()));
364+ assertFalse (f .setNumber (5.546 ).create ().isGreaterThan (f .setNumber (10.34 ).create ()));
365+ }
261366 }
262367
263368 /**
@@ -267,7 +372,18 @@ public void testMonetaryAmount_isGreaterThan(){
267372 @ SpecAssertion (section = "4.2.2" , id = "422-C2" )
268373 @ Test
269374 public void testMonetaryAmount_isGreaterThanOrEquals (){
270- fail ("Not implemented" );
375+ for (Class type : MonetaryAmounts .getAmountTypes ()){
376+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
377+ f .setCurrency ("CHF" );
378+ assertTrue (f .setNumber (BigDecimal .valueOf (0d )).create ()
379+ .isGreaterThanOrEqualTo (f .setNumber (BigDecimal .valueOf (0 )).create ()));
380+ assertTrue (f .setNumber (BigDecimal .valueOf (0.00000000001d )).create ()
381+ .isGreaterThanOrEqualTo (f .setNumber (BigDecimal .valueOf (0d )).create ()));
382+ assertTrue (f .setNumber (15 ).create ().isGreaterThanOrEqualTo (f .setNumber (10 ).create ()));
383+ assertTrue (f .setNumber (15.546 ).create ().isGreaterThanOrEqualTo (f .setNumber (10.34 ).create ()));
384+ assertFalse (f .setNumber (5 ).create ().isGreaterThanOrEqualTo (f .setNumber (10 ).create ()));
385+ assertFalse (f .setNumber (5.546 ).create ().isGreaterThanOrEqualTo (f .setNumber (10.34 ).create ()));
386+ }
271387 }
272388
273389 /**
@@ -319,7 +435,42 @@ public void testMonetaryAmount_isLessThanOrEquals(){
319435 @ SpecAssertion (section = "4.2.2" , id = "422-C5" )
320436 @ Test
321437 public void testMonetaryAmount_isEqualTo (){
322- fail ("Not implemented" );
438+ for (Class type : MonetaryAmounts .getAmountTypes ()){
439+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
440+ f .setCurrency ("CHF" );
441+ assertTrue (f .setNumber (BigDecimal .valueOf (0d )).create ()
442+ .isEqualTo (f .setNumber (BigDecimal .valueOf (0 )).create ()));
443+ assertFalse (f .setNumber (BigDecimal .valueOf (0.00000000001d )).create ()
444+ .isEqualTo (f .setNumber (BigDecimal .valueOf (0d )).create ()));
445+ assertTrue (f .setNumber (BigDecimal .valueOf (5d )).create ()
446+ .isEqualTo (f .setNumber (BigDecimal .valueOf (5 )).create ()));
447+ assertTrue (f .setNumber (BigDecimal .valueOf (1d )).create ()
448+ .isEqualTo (f .setNumber (BigDecimal .valueOf (1.00 )).create ()));
449+ assertTrue (f .setNumber (BigDecimal .valueOf (1d )).create ().isEqualTo (f .setNumber (BigDecimal .ONE ).create ()));
450+ assertTrue (f .setNumber (BigDecimal .valueOf (1 )).create ().isEqualTo (f .setNumber (BigDecimal .ONE ).create ()));
451+ assertTrue (f .setNumber (new BigDecimal ("1.0000" )).create ()
452+ .isEqualTo (f .setNumber (new BigDecimal ("1.00" )).create ()));
453+ // Test with different scales, but numeric equal values
454+ assertTrue (f .setNumber (BigDecimal .valueOf (0d )).create ()
455+ .isEqualTo (f .setNumber (BigDecimal .valueOf (0 )).create ()));
456+ assertTrue (f .setNumber (BigDecimal .ZERO ).create ().isEqualTo (f .setNumber (BigDecimal .valueOf (0 )).create ()));
457+ assertTrue (
458+ f .setNumber (BigDecimal .valueOf (5 )).create ().isEqualTo (f .setNumber (new BigDecimal ("5.0" )).create ()));
459+ assertTrue (f .setNumber (BigDecimal .valueOf (5 )).create ()
460+ .isEqualTo (f .setNumber (new BigDecimal ("5.00" )).create ()));
461+ assertTrue (f .setNumber (BigDecimal .valueOf (5 )).create ()
462+ .isEqualTo (f .setNumber (new BigDecimal ("5.000" )).create ()));
463+ assertTrue (f .setNumber (BigDecimal .valueOf (5 )).create ()
464+ .isEqualTo (f .setNumber (new BigDecimal ("5.0000" )).create ()));
465+ assertTrue (f .setNumber (new BigDecimal ("-1.23" )).create ()
466+ .isEqualTo (f .setNumber (new BigDecimal ("-1.230" )).create ()));
467+ assertTrue (f .setNumber (new BigDecimal ("-1.23" )).create ()
468+ .isEqualTo (f .setNumber (new BigDecimal ("-1.2300" )).create ()));
469+ assertTrue (f .setNumber (new BigDecimal ("-1.23" )).create ()
470+ .isEqualTo (f .setNumber (new BigDecimal ("-1.23000" )).create ()));
471+ assertTrue (f .setNumber (new BigDecimal ("-1.23" )).create ()
472+ .isEqualTo (f .setNumber (new BigDecimal ("-1.230000000000000000000" )).create ()));
473+ }
323474 }
324475
325476 /**
0 commit comments