3
KédG  ć               @   sR   d dl Z d dlmZ d dlZd dlmZmZmZm	Z	m
Z
 dd ZG dd dZdS )é    N)ŚDecimal)Śassert_Śassert_almost_equalŚassert_allcloseŚassert_equalŚassert_raisesc                s    fdd}|S )Nc                 sJ   t jdd4}t jdtd  | | ttdd |D  W d Q R X d S )NT)ŚrecordŚalways)Ścategoryc             s   s   | ]}|j tkV  qd S )N)r
   ŚDeprecationWarning)Ś.0Św© r   śR/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test_financial.pyś	<genexpr>   s    z6filter_deprecation.<locals>.newfunc.<locals>.<genexpr>)ŚwarningsŚcatch_warningsŚfilterwarningsr   r   Śall)ŚargsŚkwargsŚws)Śfuncr   r   Śnewfunc   s    
z#filter_deprecation.<locals>.newfuncr   )r   r   r   )r   r   Śfilter_deprecation
   s    r   c               @   sD  e Zd Zedd Zedd Zedd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zed3d4 Zd5S )6ŚTestFinancialc             C   s6   t jd	ddddg}tt jt j||dddd d S )
Ni@  i  i@  ią.  i0u  r   g»½×Łß|Ū=)ZatolZrtoliĄc’’)ŚnpŚarrayr   ŚnpvŚirr)ŚselfZ	cashflowsr   r   r   Śtest_npv_irr_congruence   s    z%TestFinancial.test_npv_irr_congruencec             C   s   t tjdddddd d S )Né
   r   i¬  i'  gĶŖĻÕV¼?é   iTņ’’)r   r   Śrate)r    r   r   r   Ś	test_rate   s    zTestFinancial.test_ratec             C   s2   t jtdtdtdtd}ttd| d S )NŚ10Ś0z-3500Ś10000z0.1106908537142689284704528100)r   r$   r   r   )r    r$   r   r   r   Śtest_rate_decimal!   s     zTestFinancial.test_rate_decimalc             C   sÜ   ddddddg}t tj|dd dd
d
dg}t tj|dd dddddg}t tj|dd dd	d
d g}t tj|d!d d"d	d
dg}t tj|dd d#ddd$dg}t tj|dd d%d&d'g}ttj|tj d S )(NišI i:  iØa  iø  iČÆ  i`ź  gĄģ<,ŌŖ?é   éd   r   éJ   g¦Ä °rø?é'   é;   é7   é   g³źsµūŃ?é   g„½Į&Sµ?gĒTĘÆ?é   g      %@é   é   gōlV}®¶?é   i¶ż’i’’’g¦Ä °røæi’’’i’’’ił’’’g„½Į&Sµæi’’’éū’’’ių’’’é’’’’éž’’’éż’’’)r   r   r   r   Śnan)r    Śvr   r   r   Śtest_irr&   s    
zTestFinancial.test_irrc             C   s   t tjdddddd d S )NgģQøė±?r0   ią.  r   gėQø	’@r*   gėQø	’Ą)r   r   Śpv)r    r   r   r   Śtest_pv:   s    zTestFinancial.test_pvc             C   s.   t tjtdtdtdtdtd d S )Nz0.07Ś20Ś12000r'   z-127128.1709461939327295222005)r   r   r=   r   )r    r   r   r   Śtest_pv_decimal>   s     zTestFinancial.test_pv_decimalc             C   s   t tjdddddd d S )Ng333333³?r0   iŠ  r   gØ?Ķ%õ@i0ų’’)r   r   Śfv)r    r   r   r   Śtest_fvC   s    zTestFinancial.test_fvc             C   s,   t tjtdtdtdddtd d S )Nz0.075r?   z-2000r   z86609.36267304300040536731624)r   r   rB   r   )r    r   r   r   Śtest_fv_decimalG   s    zTestFinancial.test_fv_decimalc             C   s~   t jddd}d}t|| t jddd}d}t|| t jddgd	dggdd
gddg}t jddgddgg}t|| d S )Ng{®Gįz“?é   r2   i:  gu ė©Us@g        g     @o@gé?g333333Ó?r5   iŠ  i N  g.ēR\UÕd@gnŠŪŅ@gēŽC@gOč“N{?é<   gu ė©UsĄrF   g     @oĄg.ēR\UÕdĄgnŠŪŅĄgēŽCĄgnŠŪŅĄ)r   Śpmtr   r   )r    ŚresŚtgtr   r   r   Śtest_pmtL   s    

"zTestFinancial.test_pmtc             C   s(  t jtdtd dd}td}t|| t jtdtdtd	}d}t|| t jtdtdgtdtdggtdtdgtdtdg}t jtdtdgtdtdgg}t|d d |d d  t|d d |d d  t|d d |d d  t|d d |d d  d S )Nz0.08Ś12r2   rE   i:  z-304.1459143262052370338701494r'   Ś60Z15000éś   z0.8z0.3Ś3Ś2000Z20000z-166.6666666666666666666666667z-19311.25827814569536423841060z-626.9081401700757748402586600r   r3   rF   i’’’)r   rG   r   r   r   )r    rH   rI   r   r   r   Śtest_pmt_decimal[   s    

" zTestFinancial.test_pmt_decimalc             C   s"   t tjtjdddddd	 d S )
Ng¹?rE   r3   rF   iŲÖ  r*   g     2@g?g     2Ą)r   r   ŚroundŚppmt)r    r   r   r   Ś	test_ppmts   s    zTestFinancial.test_ppmtc             C   s6   t tjtdtd tdtdtdtd d S )Nz0.1rK   Ś1rL   Ś55000z-710.2541257864217612489830917)r   r   rR   r   )r    r   r   r   Śtest_ppmt_decimalw   s    (zTestFinancial.test_ppmt_decimalc             C   s"   t tjtjdddddd	 d S )
Ngq=
×£pĶ?rE   r3   rF   l    d(	 r4   gŚķp±Ag”Ó:m ?gŚķp±Į)r   r   rQ   rR   )r    r   r   r   Śtest_ppmt_special_rate~   s    z$TestFinancial.test_ppmt_special_ratec             C   s@   dd }t t| ttjtdtd ddtdtd d S )	Nc               S   s4   t ttjtdtd ddtddtd d S )Nz0.23rK   r3   rF   Ś10000000000r4   z-90238044.232277036)r   rQ   r   rR   r   r   r   r   r   Śraise_error_because_not_equal   s    $zSTestFinancial.test_ppmt_special_rate_decimal.<locals>.raise_error_because_not_equalz0.23rK   r3   rF   rX   z-90238044.2322778884413969909)r   ŚAssertionErrorr   r   rR   r   )r    rY   r   r   r   Śtest_ppmt_special_rate_decimal   s    
 z,TestFinancial.test_ppmt_special_rate_decimalc             C   s"   t tjtjdddddd	 d S )
Ng¹?rE   r3   é   iŠ  r*   gģQø«0@g?gģQø«0Ą)r   r   rQ   Śipmt)r    r   r   r   Ś	test_ipmt   s    zTestFinancial.test_ipmtc             C   s4   t jtdtd ddd}t|jd td d S )Nz0.1rK   r3   r\   iŠ  r   z-16.66666666666666666666666667)r   r]   r   r   Śflat)r    Śresultr   r   r   Śtest_ipmt_decimal   s    zTestFinancial.test_ipmt_decimalc             C   s   t tjdddddd d S )Ng333333³?iŠ  r   g     jų@g
×£p=5@r*   i0ų’’)r   r   Śnper)r    r   r   r   Ś	test_nper   s    zTestFinancial.test_nperc             C   s   t tjdddddd d S )Ng        iŠ  r   g     jų@g      I@r3   i0ų’’)r   r   rb   )r    r   r   r   Ś
test_nper2   s    zTestFinancial.test_nper2c          	   C   s$   t tjdd
dddddgdd	 d S )Ng©?i:  iÜ  iÄ	  i¬  i  ip  g)\Āõø^@r*   ihÅ’’)r   r   r   )r    r   r   r   Śtest_npv¢   s    zTestFinancial.test_npvc          	   C   s*   t tjtdd	dddddgtd d S )
Nz0.05i:  iÜ  iÄ	  i¬  i  ip  z122.894854950942692161628715ihÅ’’)r   r   r   r   )r    r   r   r   Śtest_npv_decimalØ   s    zTestFinancial.test_npv_decimalc          
   C   s¢   ddddddddddg
}t tj|dddd	 ddddddg}t tj|dddd dddddg}t tj|dddd	 dddddg}ttjtj|dd d S ) Ni  i   iX  i¼  iø  g{®Gįz“?g)\Āõ(¬?g±įé²±?r#   iĄŌ iX  i0u  iR  i  i°³  g¹?gøėQø¾?g»d#Ł#Ą?é   r+   éČ   é2   i,  g©?gøėQø®?g8gDiošÕ?ilī’’iąü’’i@+ž’iĪ’’’i8’’’)r   r   Śmirrr   Śisnan)r    Śvalr   r   r   Ś	test_mirr®   s    zTestFinancial.test_mirrc             C   s0  t dt dt dt dt dt dt dt dt dt dg
}ttj|t dt dt d	 t d
t dt dt dt dt dg}ttj|t dt dt d t dt dt dt dt dg}ttj|t dt dt d t dt dt dt dt dg}ttjtj|t dt d d S )Nz-4500z-800Z800Z600Z700Z3000z0.08z0.055z0.066597175031553548874239618z-120000Z39000Z30000Z21000Z37000Z46000z0.10z0.12z0.126094130365905145828421880Z100Z200z-50Z300z-200z0.05z0.06z0.342823387842176663647819868)r   r   r   rj   r   rk   )r    rl   r   r   r   Śtest_mirr_decimal¼   s    
  "zTestFinancial.test_mirr_decimalc          	   C   s,  t tjdddddtjddddd t tjddddtjddddd t tjdddddtjddddd t tjd	dd
ddtjd	dd
dd t tjd	dd
dtjd	dd
dd t tjd	dd
ddtjd	dd
dd t tjdddddtjddddd t tjddddtjddddd t tjddd ddtjddd!dd t tjd"d#dddtjd$d%ddd t tjd&d'ddtjd(d)ddd t tjd*d+dddtjd,d-ddd t tjd.dddddtjd/ddddd t tjd0ddddtjd1ddddd t tjd2dddddtjd3ddddd t tjd4dddddtjd5ddddd t tjd6ddddtjd7ddddd t tjd8dddddtjd9ddddd t tjdd:dddtjdd;ddd t tjdd<ddtjdd=ddd t tjdd>dddtjdd?ddd d S )@Nr"   r0   i¬  i'  r3   ŚbeginŚendr   gģQøė±?ią.  g333333³?iŠ  g{®Gįz“?rE   r2   g     LĶ@g¹?rF   iŲÖ  r\   g     jų@iTņ’’iTņ’’iTņ’’iTņ’’iTņ’’iTņ’’i0ų’’i0ų’’i0ų’’i0ų’’i0ų’’i0ų’’gOč“N{?rF   gOč“N{?rF   gOč“N{?rF   gOč“N{?rF   gOč“N{?rF   gOč“N{?rF   g?g?g?g?g?g?g?g?g?g?g?g?i0ų’’i0ų’’i0ų’’i0ų’’i0ų’’i0ų’’)	r   r   r$   r=   rB   rG   rR   r]   rb   )r    r   r   r   Ś	test_whenĻ   sT    zTestFinancial.test_whenc          	   C   s@  t tjtdtdtdtdtdtjtdtdtdtdd t tjtdtdtdtdtjtdtdtdtdd t tjtdtdtdtdtdtjtdtdtdtdd t tjtd	tdtd
tdtdtjtd	tdtd
tdd t tjtd	tdtd
tdtjtd	tdtd
tdd t tjtd	tdtd
tdtdtjtd	tdtd
tdd t tjtdtdtdtdtdtjtdtdtdtdd t tjtdtdtdtdtjtdtdtdtdd t tjtdtdtdtdtdtjtdtdtdtdd t tjtdtd tdtd tdtdtdtjtdtd tdtd tdtdd t tjtdtd tdtd tdtdtjtdtd tdtd tdtdd t tjtdtd tdtd tdtdtdtjtdtd tdtd tdtdd t tjtdtd tdtdtdtdtdtjtdtd tdtdtdtdd t tjtdtd tdtdtdtdtjtdtd tdtdtdtdd t tjtdtd tdtdtdtdtdtjtdtd tdtdtdtdd t tjtdtd tdtdtdtdtdj	d tjtdtd tdtdtdtddj	d  t tjtdtd tdtdtdtdj	d tjtdtd tdtdtdtddj	d  t tjtdtd tdtdtdtdtdj	d tjtdtd tdtdtdtddj	d  dS )zETest that decimals are still supported if the when argument is passedr&   r?   z-3500r(   rT   ro   rp   r'   z0.07r@   z0.075z-2000z0.08rK   Ś5z15000.z0.1rL   rU   Ś24rO   r   N)
r   r   r$   r   r=   rB   rG   rR   r]   r_   )r    r   r   r   Śtest_decimal_with_when  sl    &$ $&$&$ $&$&$ $&$(&(&(&&$&$&$&$&$&$z$TestFinancial.test_decimal_with_whenc             C   s²   t tjddddddgddgd t tjdttddddddddgd t tjd ttdddd!d"d#d$d%gd t tjd&ttdddddddddgd'd(d)d*d+gd d S ),Ng333333³?iŠ  r   g     jų@r3   g%v5@g^æāõĀ4@r#   g¹?rE   r2   r\   ghl;Æ©J1@gµūøŖŖŖ0@gģņRV	0@gķQSĶ.@gćŚD-@ghurāæR@gGāēR@g{]7S@g}©D~ā8S@g_øsaäaS@rp   ro   i0ų’’g?ghl;Æ©J1ĄgµūøŖŖŖ0ĄgģņRV	0ĄgķQSĶ.ĄgćŚD-Ąg?ghurāæRĄgGāēRĄg{]7SĄg}©D~ā8SĄg_øsaäaSĄg?ghurāæRĄgGāēRĄgGāēRĄg}©D~ā8SĄg}©D~ā8SĄ)r   r   rb   r]   ŚlistŚrangerR   )r    r   r   r   Śtest_broadcast[  s    zTestFinancial.test_broadcastc             C   s  t tjtdtd ttdtdtdtdtdtdtd	td
gd t tjtdtd ttdtdtdtdtdtdtdtdgd t tjtdtd ttdtdtdtdtdtdtdddgtdtdtdtdtdgd d S )Nz0.1rK   r2   rs   rO   z-17.29165168z-16.66666667z-16.03647345z-15.40102862z-14.76028842r#   z
-74.998201z-75.62318601z-76.25337923z-76.88882405z-77.52956425r'   rT   rp   ro   )r   r   r]   r   ru   rv   rR   )r    r   r   r   Śtest_broadcast_decimalm  s    ,,* z$TestFinancial.test_broadcast_decimalN)Ś__name__Ś
__module__Ś__qualname__r   r!   r%   r)   r<   r>   rA   rC   rD   rJ   rP   rS   rV   rW   r[   r^   ra   rc   rd   re   rf   rm   rn   rq   rt   rw   rx   r   r   r   r   r      s4   AKr   )r   Śdecimalr   Znumpyr   Znumpy.testingr   r   r   r   r   r   r   r   r   r   r   Ś<module>   s
   	