U ã€C^¼<ã@sddlmZmZmZddlZddlmZddlZddlm Z ddl m m Z ddl mZejddejZGdd „d eƒZed kr d Zd eZd \ZZeddƒD]fZdeZe ee¡ eed¡Ze e¡Zededƒee deƒƒedededfƒq¤dS)é)ÚdivisionÚabsolute_importÚprint_functionN)Úreduce)Úfloat_)Ú build_err_msgÚignore)Úallc@sxeZdZdd„Zddd„Zddd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS) Ú ModuleTestercCs ||_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j |_ t |_ |j |_ |j |_ |j |_ |j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_z |j|_Wntk rþ|jj|_YnXg|_dS©N)ÚmoduleÚallequalÚarangeÚarrayÚ concatenateÚcountÚequalÚfilledÚgetmaskZ getmaskarrayÚidÚinnerÚ make_maskÚmaskedÚ masked_arrayÚ masked_valuesÚmask_orÚnomaskÚonesÚouterÚrepeatÚresizeÚsortÚtakeÚ transposeÚzerosZMaskTypeÚumathÚAttributeErrorÚcoreZ testnames)Úselfr ©r)úóz%ModuleTester.test_1..cSs||Sr r)r1r)r)r*rYrZ))éé)éécSs||Sr r)r1r)r)r*rY˜rZN)r;rrUrÚwhereZset_fill_valuerÚanyr?r>r<rrrB) r(r2r3Úm1Úm2rVZymrEÚsr)r)r*Útest_1s&&" &zModuleTester.test_1c Csìt ddddg¡}|j|ddddgd}|j|ddddgd}| |¡}t|ƒt|ƒt|dƒt|dƒkstt‚|d|dksˆt‚d|d<d|d<| ||¡d|dd…<d|dd…<|j|d<|j|dd…<||d d …<|j|d<| ddddgddddg¡|d d …<| ddddgddddg¡|d d …<t  d ¡d }|  |d ¡}| dd ddgt ¡}t dd ddgt ¡}|d|d|dd…j dksœt‚dddddg}|  |¡}|  |¡}||ksÌt‚|j |dd}||k sèt‚d S)z2 Tests conversions and indexing. r0r^r[r\rr-é écNérMrTZhello)r)Úcopy)r;rÚstrÚreprÚtyper?rKrrrrÚobjectr>r) r(Úx1Zx2Zx3Úx4ÚnrFrbÚm3r)r)r*Útest_2šs@       $$   zModuleTester.test_2c Csê| d¡}|j|d<| |d¡}| | ||g¡|¡s:t‚| | |¡ddddddddg¡s`t‚|j|ddd}| |ddddddddg¡|j|ddd}| ||¡s¬t‚|jddd}| ||¡sÊt‚| dd¡}| ||¡sæt‚d S) z& Tests resize/repeat r[r^)érr0)r^r^r^r^©Úaxisr\N) rrr r rr?rrrK)r(rnZy4Zy5Zy6Zy7Zy8r)r)r*Útest_3Äs   & zModuleTester.test_3c CsN| d¡}t d¡}|j|dd…<| ddd¡}| ddd¡}| t |d¡| |d¡¡s^t‚| t |dd¡| |dd¡¡s‚t‚| t |  |d ¡|  |d ¡¡| ||¡¡s²t‚| t  |  |d ¡|  |d ¡¡|  ||¡¡sât‚|  d dd ddgt ¡}|j|d<| |d ddg¡}|d d ks&t‚|ddks8t‚|ddksJt‚d S) zB Test of take, transpose, inner, outer products. érgr]r^r\r[)r^rr0r0rÚabcÚdefN) rr;rÚreshaper r#r?r"rrrrrl)r(r2r3Útr)r)r*Útest_4×s&   $ ÿ ÿ zModuleTester.test_4cCs| d¡}| d¡}| d¡}|j|d<|d7}| ||d¡sDt‚|d7}| ||d¡s`t‚| d¡}| d¡}|j|d<|d8}| ||d¡sšt‚|d8}| ||d¡s¶t‚| d¡d}| d¡d}|j|d<|d9}| ||d¡søt‚|d9}| ||d¡st‚| d¡d}| d¡d}|j|d<|d}| ||¡sVt‚|d}| ||¡spt‚| d¡d}| d¡d}|j|d<|d}| ||d¡s´t‚|| d¡}| || d¡¡| d¡ t¡}| d¡}|j|d<|d7}| ||d¡st‚dS)z* Tests inplace w/ scalar é r^r0rMrO)r|N)rrr r?rKrr9r)r(r2r3rVr)r)r*Útest_5îsR            zModuleTester.test_5cCs6|jdtd}| d¡}|jdtd}|j|d<|j}|jdtd}|j|d<||7}||7}| |||¡srt‚| |||¡s†t‚| |j| ||j¡¡s¢t‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||8}||8}| |||¡s t‚| |||¡s"t‚| |j| ||j¡¡s@t‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||9}||9}| |||¡sªt‚| |||¡sÀt‚| |j| ||j¡¡sÞt‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||}||}dS)z) Tests inplace w/ array r|)r7r^éÿÿÿÿN)rrrr.r r?r)r(r2r3rVrFÚar)r)r*Útest_6"sT         zModuleTester.test_6c Csê|jdddtdgdddgdgdd|jdddtdgdddgdgddf}dD]ˆ}zt|j|ƒ}Wntk rŽtt|ƒ}YnXt|j|ƒ}|d |j…}||Ž}||Ž}| |  d¡|  d¡|¡| |j |j ¡q\d S) z Tests ufuncrMrr~r^r0r]r-)ÚsqrtÚlogÚlog10ÚexpÚ conjugateN) rrUÚgetattrr%r&Ú fromnumericr ZninrKrZ_mask)r(ÚdÚfZufZmfÚargsÚurÚmrr)r)r*Útest_7Us**ÿ zModuleTester.test_7c Cs(|jddddgddddgd}| d|j|dd¡| d|j|ddddgd ¡|j|ddddgdd \}}| d|¡|d ks†t‚|j|dd…<|j|dd|jks¬t‚|jddddgddddgd}| d d ¡}|j|dd…df<| |j|ddddg¡|j|ddd|jks t‚| ddg|j|dd¡|j|ddd \}}| |ddg¡ddddddg}ddddddgddddddgg}| d¡}| |j|ddd¡| |j|d|dd¡| | d¡d| d¡g¡}| | |d¡tj  t d¡¡dd¡| |j|ddt d¡dd¡| |j|dd|j|dd|j|dddg¡| |j|d|d d¡| |j|d|dddddd dg¡| |j|dd|j|dd|j|dddg¡|  d¡}ddddddg} ddddddgddddddgg} |  d¡} ddddddg} | |j|  ||¡ddd¡| |j|  || ¡ddd¡| |j|  || ¡ddd¡| |  |j|  || ¡dd¡d¡|  || ¡} | | | d¡d¡| |j| ddddddd dg¡| |j| ddddg¡| |j| d|dddddd dg¡dS)NrXrMrOrTr0rr-rs)Úweights)rŽÚreturnedrPr^)rtrr]g@)rtrŽg(@g«ªªªªª @rSgÀX@g@rQ)rrKZaverager?rryrr;Úaddrr$rrr)r(ZottÚresultZwtsZw1Zw2r2r3rarbrpZm4Zm5Úzr)r)r*Útest_99wsT     *$2$2   $ "zModuleTester.test_99cCs*| d¡}|j|dd…<| ddd¡}dS)Nrvrgr]r^r\r[)rrry)r(r2r)r)r*Útest_A¤s zModuleTester.test_AN)r,r,T)r,)Ú__name__Ú __module__Ú __qualname__r+rJrKrWrdrqrur{r}r€rr“r”r)r)r)r*r s"ÿ 8  *43"-r Ú__main__zNfrom __main__ import ModuleTester import numpy tester = ModuleTester(module) zimport numpy.ma.core as module )r|r|r0rrztester.test_%i()r|z#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : %.3f - %.3f)!Ú __future__rrrZtimeitÚ functoolsrZnumpyr;rZnumpy.core.fromnumericr'r‡Z numpy.testingrZseterrrUrlr r•Z setup_baseZ setup_curZnrepeatZnloopÚrangeÚiÚfuncÚTimerrÚcurr!ÚprintÚevalr)r)r)r*Ús.