77import org .junit .Test ;
88
99import javax .money .*;
10+ import java .math .BigDecimal ;
1011import java .util .Currency ;
1112
1213import static org .junit .Assert .*;
@@ -75,9 +76,48 @@ public void testGetMonetaryContext(){
7576 @ SpecAssertion (section = "4.2.2" , id = "422-A4" )
7677 @ Test
7778 public void testIsNegative (){
78- fail ();
79+ for (Class type : MonetaryAmounts .getAmountTypes ()){
80+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
81+ f .setCurrency ("CHF" );
82+ MonetaryAmount [] moneys = new MonetaryAmount []{f .setNumber (0 ).create (), f .setNumber (0.0 ).create (),
83+ f .setNumber (BigDecimal .ZERO ).create (), f .setNumber (new BigDecimal ("0.00000000000000000" )).create (),
84+ f .setNumber (100 ).create (), f .setNumber (34242344 ).create (), f .setNumber (23123213.435 ).create ()};
85+ for (MonetaryAmount m : moneys ){
86+ assertFalse ("Invalid isNegative (expected false): " + m , m .isNegative ());
87+ }
88+ moneys = new MonetaryAmount []{f .setNumber (-100 ).create (), f .setNumber (-34242344 ).create (),
89+ f .setNumber (-23123213.435 ).create ()};
90+ for (MonetaryAmount m : moneys ){
91+ assertTrue ("Invalid isNegative (expected true): " + m , m .isNegative ());
92+ }
93+ }
94+ }
95+
96+ /**
97+ * For each MonetaryAmount implementation: Ensure isNegative()
98+ * returns correct results.
99+ */
100+ @ SpecAssertion (section = "4.2.2" , id = "422-A4" )
101+ @ Test
102+ public void testIsNegativeOrZero (){
103+ for (Class type : MonetaryAmounts .getAmountTypes ()){
104+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
105+ f .setCurrency ("CHF" );
106+ MonetaryAmount [] moneys = new MonetaryAmount []{f .setNumber (100 ).create (), f .setNumber (34242344 ).create (),
107+ f .setNumber (23123213.435 ).create ()};
108+ for (MonetaryAmount m : moneys ){
109+ assertFalse ("Invalid negativeOrZero (expected false): " + m , m .isNegativeOrZero ());
110+ }
111+ 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 (),
113+ f .setNumber (-100 ).create (), f .setNumber (-34242344 ).create (), f .setNumber (-23123213.435 ).create ()};
114+ for (MonetaryAmount m : moneys ){
115+ assertTrue ("Invalid negativeOrZero (expected true): " + m , m .isNegativeOrZero ());
116+ }
117+ }
79118 }
80119
120+
81121 /**
82122 * For each MonetaryAmount implementation: Ensure isPositive()
83123 * returns correct results.
@@ -105,7 +145,22 @@ public void testIsZeroAdvanced(){
105145 @ SpecAssertion (section = "4.2.2" , id = "422-A7" )
106146 @ Test
107147 public void testSignum (){
108- fail ();
148+ for (Class type : MonetaryAmounts .getAmountTypes ()){
149+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
150+ f .setCurrency ("CHF" );
151+ MonetaryAmount m = f .setNumber (100 ).create ();
152+ assertEquals ("signum of " + m , 1 , m .signum ());
153+ m = f .setNumber (-100 ).create ();
154+ assertEquals ("signum of " + m , -1 , m .signum ());
155+ m = f .setNumber (100.3435 ).create ();
156+ assertEquals ("signum of " + m , 1 , m .signum ());
157+ m = f .setNumber (-100.3435 ).create ();
158+ assertEquals ("signum of " + m , -1 , m .signum ());
159+ m = f .setNumber (0 ).create ();
160+ assertEquals ("signum of " + m , 0 , m .signum ());
161+ m = f .setNumber (-0 ).create ();
162+ assertEquals ("signum of " + m , 0 , m .signum ());
163+ }
109164 }
110165
111166
@@ -118,7 +173,22 @@ public void testSignum(){
118173 @ SpecAssertion (section = "4.2.2" , id = "422-B1" )
119174 @ Test
120175 public void testMonetaryAmountFactories (){
121- fail ("Not implemented" );
176+ for (Class type : MonetaryAmounts .getAmountTypes ()){
177+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
178+ assertNotNull (f );
179+ MonetaryAmount m = f .setCurrency ("CHF" ).setNumber (10 ).create ();
180+ assertEquals (m .getClass (), type );
181+ m = f .setCurrency ("CHF" ).setNumber (-10 ).create ();
182+ assertEquals (m .getClass (), type );
183+ m = f .setCurrency ("CHF" ).setNumber (10.3 ).create ();
184+ assertEquals (m .getClass (), type );
185+ m = f .setCurrency ("CHF" ).setNumber (-10.3 ).create ();
186+ assertEquals (m .getClass (), type );
187+ m = f .setCurrency ("CHF" ).setNumber (0.0 ).create ();
188+ assertEquals (m .getClass (), type );
189+ m = f .setCurrency ("CHF" ).setNumber (-0.0 ).create ();
190+ assertEquals (m .getClass (), type );
191+ }
122192 }
123193
124194 /**
@@ -207,7 +277,18 @@ public void testMonetaryAmount_isGreaterThanOrEquals(){
207277 @ SpecAssertion (section = "4.2.2" , id = "422-C3" )
208278 @ Test
209279 public void testMonetaryAmount_isLessThan (){
210- fail ("Not implemented" );
280+ for (Class type : MonetaryAmounts .getAmountTypes ()){
281+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
282+ f .setCurrency ("CHF" );
283+ assertFalse (f .setNumber (BigDecimal .valueOf (0d )).create ()
284+ .isLessThan (f .setNumber (BigDecimal .valueOf (0 )).create ()));
285+ assertFalse (f .setNumber (BigDecimal .valueOf (0.00000000001d )).create ()
286+ .isLessThan (f .setNumber (BigDecimal .valueOf (0d )).create ()));
287+ assertFalse (f .setNumber (15 ).create ().isLessThan (f .setNumber (10 ).create ()));
288+ assertFalse (f .setNumber (15.546 ).create ().isLessThan (f .setNumber (10.34 ).create ()));
289+ assertTrue (f .setNumber (5 ).create ().isLessThan (f .setNumber (10 ).create ()));
290+ assertTrue (f .setNumber (5.546 ).create ().isLessThan (f .setNumber (10.34 ).create ()));
291+ }
211292 }
212293
213294 /**
@@ -217,7 +298,18 @@ public void testMonetaryAmount_isLessThan(){
217298 @ SpecAssertion (section = "4.2.2" , id = "422-C4" )
218299 @ Test
219300 public void testMonetaryAmount_isLessThanOrEquals (){
220- fail ("Not implemented" );
301+ for (Class type : MonetaryAmounts .getAmountTypes ()){
302+ MonetaryAmountFactory <MonetaryAmount > f = MonetaryAmounts .getAmountFactory (type );
303+ f .setCurrency ("CHF" );
304+ assertTrue (f .setNumber (BigDecimal .valueOf (0d )).create ()
305+ .isLessThanOrEqualTo (f .setNumber (BigDecimal .valueOf (0 )).create ()));
306+ assertFalse (f .setNumber (BigDecimal .valueOf (0.00000000001d )).create ()
307+ .isLessThanOrEqualTo (f .setNumber (BigDecimal .valueOf (0d )).create ()));
308+ assertFalse (f .setNumber (15 ).create ().isLessThanOrEqualTo (f .setNumber (10 ).create ()));
309+ assertFalse (f .setNumber (15.546 ).create ().isLessThan (f .setNumber (10.34 ).create ()));
310+ assertTrue (f .setNumber (5 ).create ().isLessThanOrEqualTo (f .setNumber (10 ).create ()));
311+ assertTrue (f .setNumber (5.546 ).create ().isLessThanOrEqualTo (f .setNumber (10.34 ).create ()));
312+ }
221313 }
222314
223315 /**
0 commit comments