33import org .javamoney .tck .ClassTester ;
44import org .jboss .test .audit .annotations .SpecAssertion ;
55import org .jboss .test .audit .annotations .SpecVersion ;
6- import org .junit .Ignore ;
6+ import org .junit .Assert ;
77import org .junit .Test ;
88
9- import javax .money .MonetaryAmount ;
10- import javax .money .MonetaryAmounts ;
11- import javax .money .MonetaryOperator ;
12- import javax .money .MonetaryQuery ;
9+ import javax .money .*;
1310import java .util .Currency ;
1411
1512import static org .junit .Assert .*;
1613
1714@ SpecVersion (spec = "JSR 354" , version = "1.0.0" )
1815public class MonetaryAmountTest {
1916
17+ private final static String DEFAULT_CURRENCY = "CHF" ;
18+
2019 @ SpecAssertion (section = "4.2.2" , id = "422-0" )
2120 @ Test
2221 public void testEnsureMonetaryAmount (){
@@ -89,9 +88,9 @@ public Integer queryFrom(MonetaryAmount amount){
8988 @ Test
9089 public void testImplementsEquals (){
9190 for (Class type : MonetaryAmounts .getAmountTypes ()){
92- MonetaryAmount amount = MonetaryAmounts .getAmountFactory ().setCurrency ("XXX" ).setNumber (0 ).create ();
93- ClassTester .testHasPublicStaticMethodOpt (type , type , "equals" , MonetaryOperator .class );
94- MonetaryAmount amount2 = MonetaryAmounts .getAmountFactory ().setCurrency ("XXX" ).setNumber (0 ).create ();
91+ MonetaryAmount amount = MonetaryAmounts .getAmountFactory (type ).setCurrency ("XXX" ).setNumber (0 ).create ();
92+ ClassTester .testHasPublicMethod (type , type , "equals" , Object .class );
93+ MonetaryAmount amount2 = MonetaryAmounts .getAmountFactory (type ).setCurrency ("XXX" ).setNumber (0 ).create ();
9594 assertEquals (amount , amount2 );
9695 }
9796 }
@@ -100,9 +99,9 @@ public void testImplementsEquals(){
10099 @ Test
101100 public void testImplementsHashCode (){
102101 for (Class type : MonetaryAmounts .getAmountTypes ()){
103- MonetaryAmount amount = MonetaryAmounts .getAmountFactory ().setCurrency ("USD" ).setNumber (0 ).create ();
104- ClassTester .testHasPublicStaticMethodOpt (type , type , "hashCode" , MonetaryOperator . class );
105- MonetaryAmount amount2 = MonetaryAmounts .getAmountFactory ().setCurrency ("USD" ).setNumber (0 ).create ();
102+ MonetaryAmount amount = MonetaryAmounts .getAmountFactory (type ).setCurrency ("USD" ).setNumber (0 ).create ();
103+ ClassTester .testHasPublicMethod (type , type , "hashCode" );
104+ MonetaryAmount amount2 = MonetaryAmounts .getAmountFactory (type ).setCurrency ("USD" ).setNumber (0 ).create ();
106105 assertEquals (amount .hashCode (), amount2 .hashCode ());
107106 }
108107 }
@@ -112,17 +111,66 @@ public void testImplementsHashCode(){
112111 public void testImplementComparable (){
113112 for (Class type : MonetaryAmounts .getAmountTypes ()){
114113 ClassTester .testComparable (type );
115- MonetaryAmount amount = MonetaryAmounts .getAmountFactory ().setCurrency ("XXX" ).setNumber (0 ).create ();
116- ClassTester .testHasPublicStaticMethodOpt (type , type , "hashCode" , MonetaryOperator .class );
117- MonetaryAmount amount2 = MonetaryAmounts .getAmountFactory ().setCurrency ("XXX" ).setNumber (0 ).create ();
118- assertTrue ("Comparable failed for: " + type .getName (), ((Comparable ) amount ).compareTo (amount2 ) == 0 );
119- MonetaryAmount amount3 = MonetaryAmounts .getAmountFactory ().setCurrency ("CHF" ).setNumber (1 ).create ();
114+ MonetaryAmountFactory factory = MonetaryAmounts .getAmountFactory (type );
115+ MonetaryAmount amount = factory .setCurrency ("XXX" ).setNumber (0 ).create ();
116+ MonetaryAmount amount2 = factory .setCurrency ("XXX" ).setNumber (0 ).create ();
117+ MonetaryAmount amount3 = factory .setCurrency ("CHF" ).setNumber (1 ).create ();
118+ MonetaryAmount amount4 = factory .setCurrency ("XXX" ).setNumber (1 ).create ();
119+
120120 assertTrue ("Comparable failed for: " + type .getName (), ((Comparable ) amount ).compareTo (amount3 ) > 0 );
121+
121122 assertTrue ("Comparable failed for: " + type .getName (), ((Comparable ) amount3 ).compareTo (amount ) < 0 );
122- MonetaryAmount amount4 = MonetaryAmounts .getAmountFactory ().setCurrency ("XXX" ).setNumber (1 ).create ();
123- assertTrue ("Comparable failed for: " + type .getName (), ((Comparable ) amount3 ).compareTo (amount4 ) < 0 );
124- assertTrue ("Comparable failed for: " + type .getName (), ((Comparable ) amount4 ).compareTo (amount3 ) > 0 );
123+
124+ assertTrue ("Comparable failed for: " + type .getName (), ((Comparable ) amount ).compareTo (amount4 ) < 0 );
125+
126+ assertTrue ("Comparable failed for: " + type .getName (), ((Comparable ) amount4 ).compareTo (amount ) > 0 );
125127 }
126128 }
127129
130+ @ SpecAssertion (section = "4.2.2" , id = "422-D1" )
131+ @ Test
132+ public void testAddNumber (){
133+ for (Class type : MonetaryAmounts .getAmountTypes ()){
134+ MonetaryAmount mAmount1 =
135+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (10 ).create ();
136+ MonetaryAmount mAmount2 =
137+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (20 ).create ();
138+ MonetaryAmount mActualResult = mAmount1 .add (mAmount2 );
139+ MonetaryAmount mExpectedResult =
140+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (30 ).create ();
141+ Assert .assertEquals ("Adding two simple ammounts" , mExpectedResult , mActualResult );
142+ }
143+ }
144+
145+ @ SpecAssertion (section = "4.2.2" , id = "422-D1" )
146+ @ Test
147+ public void testAddDouble (){
148+ for (Class type : MonetaryAmounts .getAmountTypes ()){
149+ MonetaryAmount mAmount1 =
150+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (10d ).create ();
151+ MonetaryAmount mAmount2 =
152+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (20d ).create ();
153+ MonetaryAmount mActualResult = mAmount1 .add (mAmount2 );
154+ MonetaryAmount mExpectedResult =
155+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (30d ).create ();
156+ assertEquals ("Adding two simple ammounts" , mExpectedResult , mActualResult );
157+ }
158+ }
159+
160+ @ SpecAssertion (section = "4.2.2" , id = "422-D1" )
161+ @ Test
162+ public void testAddLong (){
163+ for (Class type : MonetaryAmounts .getAmountTypes ()){
164+ MonetaryAmount mAmount1 =
165+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (10l ).create ();
166+ MonetaryAmount mAmount2 =
167+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (20l ).create ();
168+ MonetaryAmount mActualResult = mAmount1 .add (mAmount2 );
169+ MonetaryAmount mExpectedResult =
170+ MonetaryAmounts .getAmountFactory (type ).setCurrency (DEFAULT_CURRENCY ).setNumber (30l ).create ();
171+ Assert .assertEquals ("Adding two simple ammounts" , mExpectedResult , mActualResult );
172+ }
173+ }
174+
175+
128176}
0 commit comments