@@ -50,6 +50,29 @@ public function testFactoryMethods()
5050 );
5151 }
5252
53+ public static function assertEquals (
54+ $ expected , $ actual , $ message = '' , $ delta = 0 , $ maxDepth = 10 ,
55+ $ canonicalize = FALSE , $ ignoreCase = FALSE )
56+ {
57+ if ($ expected instanceof Money && $ actual instanceof Money) {
58+ self ::assertEquals (
59+ $ expected ->getAmount (),
60+ $ actual ->getAmount ()
61+ );
62+ self ::assertEquals (
63+ $ expected ->getCurrency (),
64+ $ actual ->getCurrency ()
65+ );
66+ } elseif (is_float ($ expected ) && is_float ($ actual ) && $ delta == 0 ) {
67+ $ delta = 0.000000001 ;
68+ parent ::assertEquals ($ expected , $ actual , $ message , $ delta , $ maxDepth ,
69+ $ canonicalize , $ ignoreCase );
70+ } else {
71+ parent ::assertEquals ($ expected , $ actual , $ message , $ delta , $ maxDepth ,
72+ $ canonicalize , $ ignoreCase );
73+ }
74+ }
75+
5376 public function testGetters ()
5477 {
5578 $ m = new Money (100 , $ euro = new Currency ('EUR ' ));
@@ -79,10 +102,10 @@ public function testEquality()
79102
80103 public function testAddition ()
81104 {
82- $ m1 = new Money (100 , new Currency ('EUR ' ));
83- $ m2 = new Money (100 , new Currency ('EUR ' ));
105+ $ m1 = new Money (100.10 , new Currency ('EUR ' ));
106+ $ m2 = new Money (100.02 , new Currency ('EUR ' ));
84107 $ sum = $ m1 ->add ($ m2 );
85- $ expected = new Money (200 , new Currency ('EUR ' ));
108+ $ expected = new Money (200.12 , new Currency ('EUR ' ));
86109
87110 $ this ->assertEquals ($ expected , $ sum );
88111
@@ -103,10 +126,10 @@ public function testDifferentCurrenciesCannotBeAdded()
103126
104127 public function testSubtraction ()
105128 {
106- $ m1 = new Money (100 , new Currency ('EUR ' ));
107- $ m2 = new Money (200 , new Currency ('EUR ' ));
129+ $ m1 = new Money (100.66 , new Currency ('EUR ' ));
130+ $ m2 = new Money (200.33 , new Currency ('EUR ' ));
108131 $ diff = $ m1 ->subtract ($ m2 );
109- $ expected = new Money (-100 , new Currency ('EUR ' ));
132+ $ expected = new Money (-99.67 , new Currency ('EUR ' ));
110133
111134 $ this ->assertEquals ($ expected , $ diff );
112135
@@ -129,11 +152,11 @@ public function testMultiplication()
129152 {
130153 $ m = new Money (1 , new Currency ('EUR ' ));
131154 $ this ->assertEquals (
132- new Money (2 , new Currency ('EUR ' )),
155+ new Money (1.5 , new Currency ('EUR ' )),
133156 $ m ->multiply (1.5 )
134157 );
135158 $ this ->assertEquals (
136- new Money (1 , new Currency ('EUR ' )),
159+ new Money (1.5 , new Currency ('EUR ' )),
137160 $ m ->multiply (1.5 , Money::ROUND_HALF_DOWN )
138161 );
139162
@@ -144,15 +167,15 @@ public function testDivision()
144167 {
145168 $ m = new Money (10 , new Currency ('EUR ' ));
146169 $ this ->assertEquals (
147- new Money (3 , new Currency ('EUR ' )),
170+ new Money (3.333333333 , new Currency ('EUR ' )),
148171 $ m ->divide (3 )
149172 );
150173 $ this ->assertEquals (
151- new Money (2 , new Currency ('EUR ' )),
174+ new Money (2.5 , new Currency ('EUR ' )),
152175 $ m ->divide (4 , Money::ROUND_HALF_EVEN )
153176 );
154177 $ this ->assertEquals (
155- new Money (3 , new Currency ('EUR ' )),
178+ new Money (3.333333333 , new Currency ('EUR ' )),
156179 $ m ->divide (3 , Money::ROUND_HALF_ODD )
157180 );
158181
0 commit comments