a :jg @sdZddlZddlZddlmZmZmZddlm Z ej j dej j dej j dej j dZ d diid did did did did did d id d iiid Z GdddZGdddZGdddZGdddZGdddZGdddZGdddZGdddZGdd d ZGd!d"d"ZGd#d$d$Zd%d&Zd'd(Zejd)gd*d+d,ZGd-d.d.Zejd)e d/d0Z d1d2Z!ejd)d3d4e"dd5d6gd7d8Z#ejd)e d9d:Z$ejd)e d;d<Z%ejd=e ejd)e d>d?Z&dS)@z(Tests for the array padding functions. N)assert_array_equalassert_allclose assert_equal) _as_pairsZuintintfloatcomplexconstant_values end_values stat_length reflect_typeZeven) constantedge linear_rampmaximummeanmedianminimumreflect symmetricwrapemptyc@s<eZdZddZddZddZddZd d Zd d Zd S) TestAsPairscCshtddggd}ddgdggfD]}t|d}t||q$t}tt|dt||ggddS)z Test casting for a single value. Nnparrayrrobjectselfexpectedxresultobjr%G/usr/local/lib/python3.9/site-packages/numpy/lib/tests/test_arraypad.pytest_single_value!s  zTestAsPairs.test_single_valuecCstddggd}ddgddggfD]}t|d}t||q&t}ttd|gdtd|ggdttdgdggdtddgddggttdg|ggdtddg||ggdS)z-Test proper casting for two different values.rraNrrr%r%r&test_two_values.s"   zTestAsPairs.test_two_valuescCs0d}ttdddd|ttdddd|dS)N)NNr,r,rFZas_indexT)rrr r!r%r%r&test_with_noneGs  zTestAsPairs.test_with_nonecCs$tdd}tt|d|dS)z?Test if `x` already matching desired output are passed through. )r*r1N)rarangereshaperrr.r%r%r&test_pass_throughRs zTestAsPairs.test_pass_throughc Csttddgdddtjddggdtjdttddgdddtjdd ggdtjdd d gd ggd d gdd gd d ggd d ggd d ggdd dggfD]@}tjtddt|dddWdq1s0YqdS)z Test results if `as_index=True`.g@gffffff @rTr-rdtypeg(\@r(r* znegative valuesmatchN)rrrrZintppytestraises ValueError)r r"r%r%r& test_as_indexZs(zTestAsPairs.test_as_indexcCstjtdd tdgggdWdn1s40Ytjtdd&tddgdd ggdWdn1sx0Ytjtdd ttd dWdn1s0YdS) z"Ensure faulty usage is discovered.zmore dimensions than allowedr<rrNzcould not be broadcastr9r*r(r*r)r>r?r@rrones)r r%r%r&test_exceptionsis .4zTestAsPairs.test_exceptionsN) __name__ __module__ __qualname__r'r+r/r4rArDr%r%r%r&r s   rc@sZeZdZejdeddZejdgdddZ ejdgdddZ d S) TestConditionalShortcutsmodecCs>tdddd}dd|jD}t|tj|||ddS)Nxr(r1cSsg|]}dqS)rrr%.0_r%r%r& wzHTestConditionalShortcuts.test_zero_padding_shortcuts..rIrr2r3shaperpadr rItestpad_amtr%r%r&test_zero_padding_shortcutstsz4TestConditionalShortcuts.test_zero_padding_shortcuts)rrrrcCsLtdddd}dd|jD}ttj||ddtj|||d d dS) NrJr(rKr1cSsg|]}dqS)r9r9r%rMr%r%r&rP}rQzITestConditionalShortcuts.test_shallow_statistic_range..rrRr9rIr rSrVr%r%r&test_shallow_statistic_rangezs z5TestConditionalShortcuts.test_shallow_statistic_rangecCsJtddd}dd|jD}ttj|||dtj|||dddS)NrKr1cSsg|]}dqS))rrr%rMr%r%r&rPrQzFTestConditionalShortcuts.test_clip_statistic_range..rRr[rSrVr%r%r&test_clip_statistic_ranges z2TestConditionalShortcuts.test_clip_statistic_rangeN) rErFrGr>mark parametrize _all_modeskeysrYr\r^r%r%r%r&rHss   rHc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZejdgdddZejdgdejdgd d!d"Zd#d$Zejd%ejd&ejdd'd(gd)d*Zejdd+d,gd-d.Zd/S)0 TestStatisticcCs>tdd}tj|dddd}tgd}t||dS)Ndf)r)rBr )?rjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrjrj?@@@@@@ @"@$@&@(@*@,@.@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@@@A@A@B@B@C@C@D@D@E@E@F@F@G@G@H@H@I@I@J@J@K@K@L@L@M@M@N@N@O@O@P@@P@P@P@Q@@Q@Q@Q@R@@R@R@R@S@@S@S@S@T@@T@T@T@U@@U@U@U@V@@V@V@V@W@@W@W@W@X@@X@X@X@rrrrrrrrrrrrrrrrrrrrrr2astyperUrrr r)br%r%r&test_check_mean_stat_lengths z)TestStatistic.test_check_mean_stat_lengthcCs4td}t|dd}tgd}t||dS)Nrdrfr)crrrrrrrrrrrrrrrrrrrrrrrrrr9r*rr(rKr1r:r r0 rhrgr] !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abrrrrrrrrrrrrrrrrrrrrrrr2rUrrrr%r%r&test_check_maximum_1s  z"TestStatistic.test_check_maximum_1cCs8tdd}t|dd}tgd}t||dS)Nrdr9rfr)rdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdr+rr%r%r&test_check_maximum_2s z"TestStatistic.test_check_maximum_2cCs<tdd}tj|dddd}tgd}t||dS)Nrdr9rfrrri)rrrrrrrrrrrrrrrrrrrrrrrrrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdrdr+rr%r%r&test_check_maximum_stat_lengths z,TestStatistic.test_check_maximum_stat_lengthcCs4td}t|dd}tgd}t||dS)Nrdrfrrrrrrrrrrrrrrrrrrrrrrrrrrrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrrrrrrrrrrrrrrrrrrrrr+rr%r%r&test_check_minimum_1s  z"TestStatistic.test_check_minimum_1cCs8tdd}t|dd}tgd}t||dS)Nrdr*rfr)r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrder*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r*r+rr%r%r&test_check_minimum_2s z"TestStatistic.test_check_minimum_2cCs<tdd}tj|dddd}tgd}t||dS)Nrdr9rfrrri)r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrdr#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r+rr%r%r&test_check_minimum_stat_lengths z,TestStatistic.test_check_minimum_stat_lengthcCs:tdd}t|dd}tgd}t||dS)NrdrerfrH@r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5rkrlrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5r5rrr%r%r&test_check_median2s zTestStatistic.test_check_mediancCs`tgdgdgdg}t|dd}tgdgdgdgd gdg}t||dS) Nrr9r(r(rKr:r:rr*r9r)r(r(rKr(r(rrr9r(rrKr(rKr:rKrr:rr*r)rrrUrrr%r%r&test_check_median_01Js z"TestStatistic.test_check_median_01cCsdtgdgdgdg}t|jddj}tgdgdgdgd gdg}t||dS) Nr7r8r9r9r)rKr(rKr(rKr:r;r<)rrrUTrrr%r%r&test_check_median_02Xs z"TestStatistic.test_check_median_02cCsNtdd}d|d<d|d<tj|ddd d }tgd }t||dS) Nrdrermr9rr)rfrrrKri)rmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrmrkrmrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr%r%r&test_check_median_stat_lengthfsz+TestStatistic.test_check_median_stat_lengthcCsgdg}tj|dddd}tgdgdgdgdgdgdgdgdgdgdgdgdgdg }t||dS)Nr(rKr1rKrrr*ri)r(r(r(r(r(r(rKr1r1r1r1r1r1r1r1rrUrrrr%r%r&test_check_mean_shape_ones& z'TestStatistic.test_check_mean_shape_onecCs:tdd}t|dd}tgd}t||dS)Nrdrerfrr4rrr%r%r&test_check_mean_2s zTestStatistic.test_check_mean_2rI)rrrrcCsFtgdtjgdtjd}t|d|}t|d|ddS)z3 Test that appended and prepended values are equal )r*rG)rg-q=rr5rZrrGN)rrfloat64rUr)r rIr)r%r%r&test_same_prepend_appends "z&TestStatistic.test_same_prepend_appendr r;)r;)rrG))rKr*)r;r))r8r*cCsXtdd}d}tjt|d"tj|d||dWdn1sJ0YdS)Nr]r1rK#index can't contain negative valuesr<r*rirr2r3r>r?r@rU)r rIr arrr=r%r%r&test_check_negative_stat_lengthsz-TestStatistic.test_check_negative_stat_lengthcCstd}t|d}tj|dddd}tgdgdgdgdgd gd gd gd gd gd gd g }t||dS) Nr]rLrBrr*rrr[) r1r1r1rKr1rrr:rr) r9r9r9rr9r*rr(rr) rrrrrr0rrrr) rrrrrrrrrr) rrrrhrrrrrr) rrrrgrrrrrrrr2r3rUrrrr%r%r&test_simple_stat_lengths$  z%TestStatistic.test_simple_stat_lengthz)ignore:Mean of empty slice:RuntimeWarningzCignore:invalid value encountered in( scalar)? divide:RuntimeWarningrrcCs>tjddgd|dd}ttjddtjtjg}t||dS)Nrlrmr9r*rri)rrUrnanr)r rIrOr!r%r%r&test_zero_stat_length_validsz)TestStatistic.test_zero_stat_length_validrrcCsd}tjt|d&tjddgd|ddWdn1s>0Ytjt|d&tjddgd|ddWdn1s0Ytjt|d&tjddgd|ddWdn1s0Ytjt|d&tjddgd|ddWdn1s 0YdS) Nz,stat_length of 0 yields no value for paddingr<rlrmrri)r9rr9)r>r?r@rrUr rIr=r%r%r&test_zero_stat_length_invalids444z+TestStatistic.test_zero_stat_length_invalidN)rErFrGrr,r-r.r0r2r3r6r=r?rArErFr>r_r`rIrPrUfilterwarningsrXrZr%r%r%r&rcs:   rcc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS) TestConstantcCs8td}tj|dddd}tgd}t||dS)Nrdrfr )rrhr )rrrrrrrrrrrrrrrrrrrrrrrrrrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhr+rr%r%r&test_check_constants  z TestConstant.test_check_constantcCs4td}t|dd}tgd}t||dS)Nrdrfr r/r+rr%r%r&test_check_constant_zeros s  z&TestConstant.test_check_constant_zerosc Csltddd}tj|dddd}tgdgd gd gd gd gd gdgdg}t||dS)Nr]rKr1rVr 皙?rIr ) r9r9r9r9r9r9r9r9r9) r9rr9r*rr(rKr9r9) r9r1rrr:rrr9r9) r9r0rrrrrr9r9) r9rrrhrrrr9r9) r9rrgrrrrr9r9rr2r3rUrrr rOrWr!r%r%r&test_check_constant_float#s   z&TestConstant.test_check_constant_floatc Csxtddd}|tj}tj|dddd}tgdgd gd gd gd gd gdgdg}t||dS)Nr]rKr1rVrVr r`ra) r`r`r`r`r`r`r`r`r`) r`rkrlrmrnrorpr`r`) r`rqrrrsrtrurvr`r`) r`rwrxryrzr{r|r`r`) r`r}r~rrrrr`r`) r`rrrrrrr`r`rr2r3rrHrUrr)r rOZ arr_floatrWr!r%r%r&test_check_constant_float27s"   z'TestConstant.test_check_constant_float2cCs<tjdtd}tj|dddd}tgd}t||dS)Nrdr5rfr )皙333333r])rhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rriririririririririririririririririririri)rr2rrUrrrr%r%r&test_check_constant_float3Ls z'TestConstant.test_check_constant_float3c Csftddd}tj|dddd}tgdgd gd gd gd gd gdg}t||dS)Nr]rKr1)r9rKr rra) rrrrrrrrrr) rrrr9r*rr(rKrr) rrr1rrr:rrrr) rrr0rrrrrrr) rrrrrhrrrrr) rrrrgrrrrrrrbrcr%r%r&"test_check_constant_odd_pad_amountds  z/TestConstant.test_check_constant_odd_pad_amountcCsZtddd}tj|dddd}tgdgdgd gd gd g}t||dS) Nr(r*)rVr9rr )rVrr(ra)rr9r9r(r(r()rrr9r(r(r()rr*rr(r(r()rr*r*r(r(r(rbrcr%r%r&test_check_constant_pad_2dus z'TestConstant.test_check_constant_pad_2dcCsd}tjd|tjd}tj|dd|d}tjd|tjd}t||d}tjd|tjd}tj|dd|d}tjd|tjd}t||dS) NlrKr5r9r rarl)rfullZuint64rUminrZint64)r Z uint64_maxrOrWr!Z int64_maxr%r%r&test_check_large_integerss z&TestConstant.test_check_large_integerscCsrtjdtd}t}||d<t}t}tj|dd||fd}tjdtd}||d<||d<||d<t||dS)Nr9r5rr ) pad_widthrIr rSr*)rrrrUr)r rOZobj_aZobj_bZobj_cr!r%r%r&test_check_object_arrays z$TestConstant.test_check_object_arraycCs0td}tj|gddd}|jdks,JdS)Nrrr*rrKrkr rRrr(r(rzerosrUrTr rOr#r%r%r&test_pad_empty_dimensions z%TestConstant.test_pad_empty_dimensionN) rErFrGr^r_rdrgrjrlrorrrtr|r%r%r%r&r\s  r\c@sReZdZddZddZejjefdddZ dd Z ej d e d d Z d S)TestLinearRampcCsDtdd}tj|dddd}tgd}t||ddd dS) Nrdrerfr)r(rK)r )rogQ@gq= ףp @g)\( @gzG @g @gRQ@g ףp= @g(\@g{Gz@g333333@gQ@gp= ף@gQ?g)\(?g?g ףp= ?g{Gz?gQ?gQ?g?g{Gz?gQ?g{Gz?g{Gz?rkrlrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrg33333W@gffffffV@g9U@g T@gR@g33333Q@gfffffP@g33333N@gYL@rgfffffG@gLE@g33333B@g@@g<@g7@g3@g,@gffffff#@rpgh㈵>)ZrtolZatol)rr2rrUrrrr%r%r&test_check_simples z TestLinearRamp.test_check_simplec Csttdddtj}tj|dddd}tgdgd gd gd gd gd gdgdg}t||dS)Nrhr(rK)r*r*rrLrIr ) rkrkrkrkrkrkrkrkrk) rkrkrkrjrlg?rmrlrk) rkrkrkrlrmrnrormrk) rkg@rprqrrrsrtg@rk) rkrprurvrwrxryrrrk) rk@rzr{r|r}r~#@rk) rkg@rrsg!@rtrg@rkrfrcr%r%r& test_check_2ds zTestLinearRamp.test_check_2d) exceptionsc Csddlm}t|dd|ddg}tj|dddd}t|dd |d d |d d |d d |d d |dd |dd g}t||dS)Nr)Fractionr9r*rGrBrrr0rr1r8r;) fractionsrrrrUr)r rrOactualr!r%r%r&test_object_arrays  z TestLinearRamp.test_object_arraycCsztjtdddddd}t|dddfd t|ddd fd t|dddfd t|d ddfd dS) z!Ensure that end values are exact.rr*rK){rrRNrrkrG)rrUrCr3r)r r)r%r%r&test_end_valuess zTestLinearRamp.test_end_valuesr6cCstjdg|d}tj|dddd}tjgd|d}t||tjdg|d}tj|dddd}tjgd|d}t||dS) a< Check correct behavior of unsigned dtypes if there is a negative difference between the edge to pad and `end_values`. Check both cases to be independent of implementation. Test behavior for all other dtypes in case dtype casting interferes with complex dtypes. See gh-14191. rr5rrr)rr9r*rr*r9r)rr*r9rr9r*rN)rrrUr)r r6r"r#r!r%r%r&test_negative_differences z'TestLinearRamp.test_negative_differenceN)rErFrGr~rr>r_ZxfailAssertionErrorrrr`_numeric_dtypesrr%r%r%r&r}s  r}c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS) TestReflectcCs4td}t|dd}tgd}t||dS)Nrdrfr)rgrrrrrhrrrrrrrr0rrr:rrr1rKr(rr*r9rr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rr*r)r(r'r&r%r$r#r"r!r rrrrrrrrrr+rr%r%r&r~s  zTestReflect.test_check_simplecCs8td}tj|dddd}tgd}t||dS)Nrdrfroddr )irr8r7r;rGrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrdr1fghijklmnopqrstuvwr+rr%r%r&test_check_odd_methods  z!TestReflect.test_check_odd_methodcCsgdgdg}t|dd}tgdgdgdgdgdgdgdgdgdgdgdgdgdgdg}t||dS)NrBr1rrrCr)rr1rrrr1rrrr1rrrr1rrKr(rKr1rKr(rKr1rKr(rKr1rKr(rKrDrr%r%r&test_check_large_pad+s(z TestReflect.test_check_large_padcCs~gdg}t|dd}tgdgdgdgdgdgdgdgdgdgdgdgdgdg }t||dS)NrBrCrrrDrr%r%r&test_check_shapeBs& zTestReflect.test_check_shapecCs.tgddd}tgd}t||dS)Nr9r*rr*r)rr*r9r*rr*r9rDrr%r%r& test_check_01XszTestReflect.test_check_01cCs.tgddd}tgd}t||dS)Nrrr) r*rr*r9r*rr*r9r*rDrr%r%r& test_check_02]szTestReflect.test_check_02cCs.tgddd}tgd}t||dS)Nrr(r) r9r*rr*r9r*rr*r9r*rrDrr%r%r& test_check_03bszTestReflect.test_check_03cCs2tgdddgd}tgd}t||dS)Nrr9rr)r*r9r*rr*r9r*rr*r9r*rr*r9rDrr%r%r& test_check_04gszTestReflect.test_check_04cCs2tgdddgd}tgd}t||dS)Nr9r*rr(rrr);r(rr*r9r*rr(rr*r9r*rr(rr*r9r*rr(rr*r9r*rr(rr*r9r*rr(rr*r9r*rr(rr*r9r*rr(rr*r9r*rr(rr*r9r*rr(rr*r9r*rDrr%r%r& test_check_05ls zTestReflect.test_check_05cCs2tgdddgd}tgd}t||dS)Nrrr*r)r*rr(r(rr*r9r9r*rr(r(rr*r9r9r*rr(r(rrDrr%r%r& test_check_06ws zTestReflect.test_check_06cCs2tgdddgd}tgd}t||dS)N)r9r*rr(rKr1rrr)6r(rKr1r1rKr(rr*r9r9r*rr(rKr1r1rKr(rr*r9r9r*rr(rKr1r1rKr(rr*r9r9r*rr(rKr1r1rKr(rr*r9r9r*rr(rKr1r1rKr(rDrr%r%r& test_check_07s zTestReflect.test_check_07N)rErFrGr~rrrrrrrrrrr%r%r%r&rs  rc@sPeZdZdZejdee ddhddZ ejde ddZ d S) TestEmptyArrayzr?r@rrUZndarrayrzrYr%r%r&r|s.4z'TestEmptyArray.test_pad_empty_dimensioncCs(tjtdd|d}|jdks$JdS)N)r*rr*)rSrwrkrR)rrr()rrUrCrT)r rIr#r%r%r&test_pad_non_empty_dimensionsz+TestEmptyArray.test_pad_non_empty_dimensionN) rErFrG__doc__r>r_r`sortedrarbr|rr%r%r%r&rs rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) TestSymmetriccCs4td}t|dd}tgd}t||dS)Nrdrfr)rrrrrhrrrrrrrr0rrr:rrr1rKr(rr*r9rrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrr*r)r(r'r&r%r$r#r"r!r rrrrrrrrr+rr%r%r&r~s  zTestSymmetric.test_check_simplecCs8td}tj|dddd}tgd}t||dS)Nrdrfrrr)rrrrrrrrrrrrrrrrrrrrr8r7r;rGrrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrrdr1rrrrrrrrrrrrrrrrrr+rr%r%r&rs  z#TestSymmetric.test_check_odd_methodcCsgdgdg}t|dd}tgdgdgdgdgdgdgdgdgdgdgdgdgdgdg}t||dS)NrBrrCrrKr1r1rKr(r(rKr1r1rKr(r(rKr1r1)rrrrr1r1rrrrr1r1rrrrDrr%r%r&rs(z"TestSymmetric.test_check_large_padcCsgdgdg}tj|dddd}tgdgdgdgdgd gd gd gd gd gd gd gd gd gd g}t||dS)NrBrrCrrr)r7r;r;rGrrr9r*r*rr(r(rKr1r1)rGrrr9r*r*rr(r(rKr1r1rrr)r9r*r*rr(r(rKr1r1rrrr:rr)rr(r(rKr1r1rrrr:rrrr0r0)rKr1r1rrrr:rrrr0r0rrr)rrrr:rrrr0r0rrrrrr)r:rrrr0r0rrrrrrrrrrDrr%r%r&test_check_large_pad_odds(z&TestSymmetric.test_check_large_pad_oddcCs~gdg}t|dd}tgdgdgdgdgdgdgdgdgdgdgdgdgdg }t||dS)NrBrCrrrDrr%r%r&rs& zTestSymmetric.test_check_shapecCs.tgddd}tgd}t||dS)Nrr*r)r*r9r9r*rrr*rDrr%r%r&rszTestSymmetric.test_check_01cCs.tgddd}tgd}t||dS)Nrrr) rr*r9r9r*rrr*r9rDrr%r%r&rszTestSymmetric.test_check_02cCs.tgddd}tgd}t||dS)Nrr1r)r9r*rrr*r9r9r*rrr*r9r9r*rrDrr%r%r&r$szTestSymmetric.test_check_03N) rErFrGr~rrrrrrrr%r%r%r&rsrc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)TestWrapcCs4td}t|dd}tgd}t||dS)Nrdrfr)rrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrr9r*rr(rKr1rrr:rrr0rrrrrrrrhrrrrrgrrrrr]rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*rrr9r*rr(rKr1rrr:rrr0rrrrrrrr+rr%r%r&r~+s  zTestWrap.test_check_simplecCstd}t|d}t|dd}tgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdgdg}t||dS)Nr0rn)rr0r)rrrr:rrrr:rrrr:rrrr:rrrr:rrrr:rr)r*rrr9r*rrr9r*rrr9r*rrr9r*rrr9r*rrr9r*r)r1rr(rKr1rr(rKr1rr(rKr1rr(rKr1rr(rKr1rr(rKr1rrTrr%r%r&rCs@  6zTestWrap.test_check_large_padcCs.tgddd}tgd}t||dS)Nrrr) r9r*rr9r*rr9r*rrDrr%r%r&rszTestWrap.test_check_01cCs.tgddd}tgd}t||dS)Nrr(r) rr9r*rr9r*rr9r*rr9rDrr%r%r&rszTestWrap.test_check_02cCs8td}tj|ddd}t||ddddfdS)Nr@)rrKrrRr)rrCrUrrr%r%r&test_pad_with_zeros zTestWrap.test_pad_with_zerocCsxtd}tj|ddd}ttj||||fdd|td}tj|ddd}ttj||||fdd|dS) zy Check wrapping on each side individually if the wrapped area is longer than the original array. rK)r0rrrRrN)rr0r7)rr2rUrZr_rr%r%r&test_repeated_wrappings    zTestWrap.test_repeated_wrappingc Csbtddd}tj|ddgdd}tgdgdgdgdgdgdg}t||d S) z Assert that 'wrap' pads only with multiples of the original area if the pad width is larger than the original array. r(r*rmrr9rrR)rr*rr*rr*)r9rr9rr9rNrTrr%r%r&&test_repeated_wrapping_multiple_originsz/TestWrap.test_repeated_wrapping_multiple_originN) rErFrGr~rrrrrrr%r%r%r&r*s< rc@seZdZddZddZdS)TestEdgec Csrtd}t|d}t|dd}tgdgdgdgdgdgdgdgdgdg }t||dS Nr0r(rrQr)rrrrr9r*r*r*)rrrrr(rKrKrK)r1r1r1r1rrrr)r:r:r:r:rrrrrTrr%r%r&r~s    zTestEdge.test_check_simplecCstgd}t|dd}tgd}t||tgdgdg}t|dd}t|dd}t||tddd d }t|dd}t|d d}t||dS) Nr)rVr)r9r9r*rrrrBrerr*rr()rVrVrV)rrrUrr2r3)r r)paddedr!r%r%r&test_check_width_shape_1_2s  z#TestEdge.test_check_width_shape_1_2N)rErFrGr~rr%r%r%r&rsrc@seZdZddZddZdS) TestEmptycCsRtddd}tj|ddgdd}|jdks4Jt||d d d d fdS) Nrr(r1rBrrrR)r:rr*r7rrGrr2r3rUrTrr{r%r%r& test_simpleszTestEmpty.test_simplecCs0td}tj|gddd}|jdks,JdS)NrurvrrRrxryr{r%r%r&r|s z"TestEmpty.test_pad_empty_dimensionN)rErFrGrr|r%r%r%r&rsrc Csddd}tddd}t|d|}tgdgdgdgdgdgdg}t||dS) NcSs&d|d|d<d||d d<dS)Nrrr9r%)ZvectorrsZiaxiskwargsr%r%r& _padwithtenssz6test_legacy_vector_functionality.._padwithtensr1r*r)rrrrrrr)rrrr9r*rr)rrrr(rKrrrT)rr)rr%r%r& test_legacy_vector_functionalitys rcCs.tjdgddd}tgd}t||dS)Nr9r*r rR)rrr9rrrD)r)rr%r%r&test_unicode_modesrrI)rrrrcCs:tjddd}d}tjddd}ttj|||d|dS)Nr)Z fill_valuerQ)r:rrR)rrprrU)rIr)rXrr%r%r&test_object_inputsrc @seZdZejdgdejdeddZejdeddZ ejdgdejded d Z ejd d d de dfdde fe dddfdgejdeddZ ddZejdgdejdeddZdS) TestPadWidthrs))r(rKr1r)rkrKrS)rVrn)rKr1))rr(rK)rr9r*rIcCsTtdd}d}tjt|dt|||Wdn1sF0YdS)Nr]rLz(operands could not be broadcast togetherr<rNr rsrIrOr=r%r%r&test_misshaped_pad_widthsz%TestPadWidth.test_misshaped_pad_widthcCsTtdd}d}tjt|dt|d|Wdn1sF0YdS)Nr]rLzDinput operand has more dimensions than allowed by the axis remappingr<))rS)r()rK)rwrkrKrN)r rIrOr=r%r%r&test_misshaped_pad_width_2sz'TestPadWidth.test_misshaped_pad_width_2rJcCsTtdd}d}tjt|dt|||Wdn1sF0YdS)Nr]rLrMr<rNrr%r%r&test_negative_pad_widthsz$TestPadWidth.test_negative_pad_widthzpad_width, dtype)3N)wordNr,N)g333333 @N))r*rr(rRr9rG)))grrRNcCstdd}d}|durdtjt|d(t|tj||d|Wdq1sX0Yn~tjt|dt|||Wdn1s0Ytjt|d$t|t||Wdn1s0YdS)Nr]rLz%`pad_width` must be of integral type.r<r5)rr2r3r>r? TypeErrorrUr)r rsr6rIrOr=r%r%r& test_bad_type#s 8,zTestPadWidth.test_bad_typec Csxtd}t|d}t|tdd}tgdgdgdgdgdgdgdgdgdg }t||dSrrTrr%r%r&test_pad_width_as_ndarray;s    z&TestPadWidth.test_pad_width_as_ndarray)rrL)rLrLcCs,tddd}t|tj|||ddS)Nr]r1rKrR)rr2r3rrU)r rsrIrOr%r%r&test_zero_pad_widthNsz TestPadWidth.test_zero_pad_width)rErFrGr>r_r`rarbrrrrrrrrr%r%r%r&rs4      rc Cst|}i}tD]}||kr||qtjgdd|fi||D]^\}}d|}tjt |d.tjgdd|fi||iWdqN1s0YqNdS)z1Test behavior of pad's kwargs for the given mode.rr9z+unsupported keyword arguments for mode '{}'r<N) ravaluesupdaterrUitemsformatr>r?r@)rIallowed not_allowedrkeyvaluer=r%r%r& test_kwargsUs   rcCs(tddg}tt|dgddS)Nr9r*)rrr9r9rr)rrrrU)rOr%r%r&test_constant_zero_defaultfsrr9constTFcCsPd|}tjt|d$tjgdd|dWdn1sB0YdS)Nzmode '{}' is not supportedr<rr(rR)rr>r?r@rrU)rIr=r%r%r&test_unsupported_modeks rcCs`tdddddddddf}t|d|}|jdksBJt|ddddf|dS)Nrr(r1r*rB)rrr7r)rIrOr#r%r%r&test_non_contiguous_arrayrs&rcCsPtjddd}t|d|jds&Jtjddd}t|d|jdsLJdS) z5Test if C and F order is preserved for all pad modes.)rKrC)orderrKZ C_CONTIGUOUSFZ F_CONTIGUOUSN)rrCrUflags)rIr"r%r%r&test_memory_layout_persistencezsrr6cCs0tjd|d}tj|d|d}|j|ks,JdS)N)rr*r9r5r9rR)rrzrUr6)r6rIrOr#r%r%r&test_dtype_persistencesr)'rr>numpyrZ numpy.testingrrrZnumpy.lib._arraypad_implrZ_coreZsctypesrrarrHrcr\r}rrrrrrrrr_r`rrrbrrrrrrrr%r%r%r&st     Sk4U'  Q