@@ -249,30 +249,36 @@ def test_mirr(self, values, finance_rate, reinvest_rate, expected):
249249 else :
250250 assert_ (numpy .isnan (result ))
251251
252+ @pytest .mark .parametrize ('number_type' , [Decimal , float ])
252253 @pytest .mark .parametrize (
253254 "args, expected" ,
254255 [
255- ({'values' : [Decimal ( '-4500' ), Decimal ( '-800' ), Decimal ( '800' ), Decimal ( '800' ) ,
256- Decimal ( '600' ), Decimal ( '600' ), Decimal ( '800' ), Decimal ( '800' ),
257- Decimal ( '700' ), Decimal ( '3000' )],
258- 'finance_rate' : Decimal ( '0.08' ), 'reinvest_rate' : Decimal ( '0.055' )} ,
259- Decimal ( '0.066597175031553548874239618' )) ,
260- ({ 'values ' : [ Decimal ( '-120000' ), Decimal ( '39000' ), Decimal ( '30000' ), Decimal ( '21000' ),
261- Decimal ( '37000' ), Decimal ( '46000' )],
262- 'finance_rate' : Decimal ( '0.10' ), 'reinvest_rate' : Decimal ( '0.12' )} ,
263- Decimal ( '0.126094130365905145828421880' )) ,
264- ({ 'values' : [ Decimal ( '100' ), Decimal ( '200' ), Decimal ( '-50' ), Decimal ( '300' ), Decimal ( '-200' )],
265- 'finance_rate' : Decimal ( '0.05' ) , 'reinvest_rate' : Decimal ( '0.06' )},
266- Decimal ( '0.342823387842176663647819868' ) ),
267- ({'values' : [Decimal ( '39000' ), Decimal ( '30000' ), Decimal ( '21000' ), Decimal ( '37000' ) ,
268- Decimal ( '46000' )],
269- 'finance_rate' : Decimal ( '0.10' ), 'reinvest_rate' : Decimal ( '0.12' )},
270- numpy . nan ),
256+ ({'values' : ['-4500' , '-800' , '800' , '800' , '600' , '600' , '800' , '800' , '700' , '3000' ] ,
257+ 'finance_rate' : '0.08' , 'reinvest_rate' : '0.055'
258+ }, '0.066597175031553548874239618'
259+ ) ,
260+ ({ 'values' : [ '-120000' , '39000' , '30000' , '21000' , '37000' , '46000' ] ,
261+ 'finance_rate ' : '0.10' , 'reinvest_rate' : '0.12'
262+ }, '0.126094130365905145828421880'
263+ ) ,
264+ ({ 'values' : [ '100' , '200' , '-50' , '300' , '-200' ] ,
265+ 'finance_rate' : '0.05' , 'reinvest_rate' : '0.06'
266+ } , '0.342823387842176663647819868'
267+ ),
268+ ({'values' : ['39000' , '30000' , '21000' , '37000' , '46000' ] ,
269+ 'finance_rate' : '0.10' , 'reinvest_rate' : '0.12'
270+ }, numpy . nan
271+ ),
271272 ],
272273 )
273- def test_mirr_decimal (self , args , expected ):
274- result = npf .mirr (** args )
275- assert_equal (result , expected )
274+ def test_mirr_decimal (self , number_type , args , expected ):
275+ values = [number_type (v ) for v in args ['values' ]]
276+ result = npf .mirr (values , number_type (args ['finance_rate' ]), number_type (args ['reinvest_rate' ]))
277+
278+ if expected is not numpy .nan :
279+ assert_almost_equal (result , number_type (expected ), 15 )
280+ else :
281+ assert numpy .isnan (result )
276282
277283 def test_mirr_no_real_solution_exception (self ):
278284 # Test that if there is no solution because all the cashflows
0 commit comments