
    &h                    
   S SK r S SKrS SKJrJr  S SKrS SKrS SKJrJ	r	  S SK
Jr  S\R                  " 5       :H  rSrSrS r " S	 S
\R"                  5      r " S S\R"                  5      r\S:X  a  \R*                  " 5         gg)    N)
CollectionSequence)RectVector2)
test_utilsPyPyi   ic                  @    [         R                  " [        [        5      $ N)randomrandint_int_min_int_max     N/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/rect_test.py_random_intr      s    >>(H--r   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISH rJSI rKSJ rLSK rMSL rNSM rOSN rPSO rQSP rRSQ rSSR rTSS rUST rVSU rWSV rXSW rYSX rZSY r[SZ r\S[ r]S\ r^S] r_S^ r`S_ raS` rbSa rcSb rdSc reSd rfSe rgSf rhSg riSh rjSi rkSj rlSk rmSl rnSm roSn rpSo rqSp rrSq rsSr rtSs ruSt rvSu rwSv rxSw rySx rz\{R                  " \}Sy5      Sz 5       r~S{ rS| rS} rS~ rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r " S S5      r " S S5      r " S S5      r " S S5      rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)RectTypeTest   c                 (    U R                   " U0 UD6  g r
   )assertCountEqual)selfargskwargss      r   _assertCountEqualRectTypeTest._assertCountEqual   s    t.v.r   c                     [        SSSS5      nU R                  SUR                  5        U R                  SUR                  5        U R                  SUR                  5        U R                  SUR
                  5        g N            r   assertEquallefttopwidthheightr   rs     r   testConstructionXYWidthHeight*RectTypeTest.testConstructionXYWidthHeight   sb    Aq!AFF#AEE"AGG$AHH%r   c                     [        SS5      nU R                  SUR                  5        U R                  SUR                  5        U R                  SUR                  5        U R                  SUR
                  5        g )Nr   r    r!   r"   r   r    r!   r"   r#   r)   s     r   testConstructionTopLeftSize(RectTypeTest.testConstructionTopLeftSize    s^     AFF#AEE"AGG$AHH%r   c                    [        SSSS5      nU R                  UR                  UR                  -   UR                  5        U R                  UR
                  UR                  -   UR                  5        U R                  UR                  UR                  4UR                  5        U R                  UR                  UR
                  4UR                  5        U R                  UR                  UR
                  4UR                  5        U R                  UR                  UR                  4UR                  5        U R                  UR                  UR                  4UR                  5        UR                  UR                  S-  -   nUR
                  UR                  S-  -   nU R                  X!R                  5        U R                  X1R                  5        U R                  UR                  UR                  4UR                  5        U R                  UR                  UR
                  4UR                   5        U R                  UR                  UR                  4UR"                  5        U R                  UR                  UR                  4UR$                  5        U R                  UR                  UR                  4UR&                  5        g r   )r   r$   r%   r'   rightr&   r(   bottomsizetoplefttopright
bottomleftbottomrightcenterxcenterycentermidtop	midbottommidleftmidright)r   r*   midxmidys       r   testCalculatedAttributes%RectTypeTest.testCalculatedAttributes'   s   Aq!!'')1773)1884!''188,aff5!&&!%%!))4!''155)1::6!&&!((+Q\\:!''188,amm<vv1$uuqxx1}$yy)yy)!))QYY/:!))QUU+QXX6!))QXX.<!&&!)),aii8!''199-qzz:r   c                     [        SSSS5      nUR                  5       n[        U5       H  u  p4U R                  X   U5        M     g )N2   d         )r   __iter__	enumerater$   )r   rectrect_iteratorivals        r   test_rect_iterRectTypeTest.test_rect_iter=   sB    BS#& .FATWc* /r   c                     [        SS5      nUR                  UR                  -   UR                  UR                  -   4UR                  * UR                  * 44nUR                  5         U R                  X5        g)z@Ensures normalize works when width and height are both negative.r.   )Nr   xwyh	normalizer$   r   	test_rectexpected_normalized_rects      r   test_normalizeRectTypeTest.test_normalizeE   sh    *	[[9;;&	ikk(ABkk\IKK<($
 
 	=r   c                     [        SS5      nUR                  UR                  -   UR                  4UR                  * UR                  44nUR                  5         U R                  X5        g)zDEnsures normalize works with a negative width and a positive height.r.   )rS      NrU   r[   s      r   test_normalize__positive_height,RectTypeTest.test_normalize__positive_heightQ   ]    )	[[9;;&	4kk\9;;'$
 
 	=r   c                     [        SS5      nUR                  UR                  UR                  -   4UR                  UR                  * 44nUR                  5         U R                  X5        g)zDEnsures normalize works with a positive width and a negative height.r.   )r!   rT   Nr   rV   rX   rY   rW   rZ   r$   r[   s      r   test_normalize__positive_width+RectTypeTest.test_normalize__positive_width]   ]    )	[[)++	34[[9;;,'$
 
 	=r   c                     [        SS5      nUR                  UR                  -   UR                  4UR                  * UR                  44nUR                  5         U R                  X5        g)z@Ensures normalize works with a negative width and a zero height.r.   )rS   r   NrU   r[   s      r   test_normalize__zero_height(RectTypeTest.test_normalize__zero_heighti   rd   r   c                     [        SS5      nUR                  UR                  UR                  -   4UR                  UR                  * 44nUR                  5         U R                  X5        g)z@Ensures normalize works with a zero width and a negative height.r.   )r   rT   Nrf   r[   s      r   test_normalize__zero_width'RectTypeTest.test_normalize__zero_widthu   ri   r   c                     S H;  n[        SU5      n[        U5      nUR                  5         U R                  X#5        M=     g)zEnsures normalize works when width and height are both non-negative.

Tests combinations of positive and zero values for width and height.
The normalize method has no impact when both width and height are
non-negative.
))r!   ra   )r!   r   )r   ra   r   r   r.   N)r   rZ   r$   )r   r5   r\   r]   s       r   test_normalize__non_negative)RectTypeTest.test_normalize__non_negative   s>     5DVT*I'+I$!YA 5r   c                 ,   SnSnSn[        SU4U5      nXl        U R                  UR                  U5        U R                  UR                  UR                  5        U R                  UR                  U5        U R                  UR
                  U5        g)zUEnsures changing the x attribute moves the rect and does not change
the rect's size.

   r    r/   r   N)r   rV   r$   r%   rX   r5   r   
expected_x
expected_yexpected_sizer*   s        r   test_xRectTypeTest.test_x   s|     

!Z-0j)aff%j)/r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z9Ensures the x attribute handles invalid values correctly.r   r   N1r   r   r    r!   )r   assertRaises	TypeErrorrV   r   r*   values      r   test_x__invalid_value"RectTypeTest.test_x__invalid_value   I    Aq!BT95E""9- .- 6--   A
A	c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z)Ensures the x attribute can't be deleted.r   r   N)r   r   AttributeErrorrV   r)   s     r   test_x__delRectTypeTest.test_x__del   1    Aq!~. /..   0
>c                 ,   SnSnSn[        US4U5      nX$l        U R                  UR                  U5        U R                  UR                  UR                  5        U R                  UR                  U5        U R                  UR
                  U5        g)zUEnsures changing the y attribute moves the rect and does not change
the rect's size.
r      r/   r    N)r   rX   r$   r&   rV   r5   rv   s        r   test_yRectTypeTest.test_y   s|     

*a-0j)aee$j)/r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z9Ensures the y attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   rX   r   s      r   test_y__invalid_value"RectTypeTest.test_y__invalid_value   r   r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z)Ensures the y attribute can't be deleted.r   r   N)r   r   r   rX   r)   s     r   test_y__delRectTypeTest.test_y__del   r   r   c                     [        SSSS5      nSnX!l        U R                  X!R                  5        U R                  [        USSS5      U5        g)zPChanging the left attribute moves the rect and does not change
the rect's width
r   r    r!   r"   ru   N)r   r%   r$   )r   r*   new_lefts      r   	test_leftRectTypeTest.test_left   sK     Aq!66*h1a0!4r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z<Ensures the left attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r%   r   s      r   test_left__invalid_value%RectTypeTest.test_left__invalid_value   sI    Aq!BT95E""9- .- 6--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z,Ensures the left attribute can't be deleted.r   r   N)r   r   r   r%   r)   s     r   test_left__delRectTypeTest.test_left__del   1    Aq!~. /..r   c                 "   [        SSSS5      nUR                  S-   nUR                  S-   nUR                  nX!l        U R	                  X!R                  5        U R	                  X1R                  5        U R	                  XAR                  5        g)zQChanging the right attribute moves the rect and does not change
the rect's width
r   r    r!   r"   r   N)r   r3   r%   r'   r$   )r   r*   	new_rightexpected_left	old_widths        r   
test_rightRectTypeTest.test_right   sr     Aq!GGbL	GG	GG,/GG,r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z=Ensures the right attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r3   r   s      r   test_right__invalid_value&RectTypeTest.test_right__invalid_value   I    Aq!BT95E""9- .- 6--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z-Ensures the right attribute can't be deleted.r   r   N)r   r   r   r3   r)   s     r   test_right__delRectTypeTest.test_right__del   1    Aq!~. /..r   c                     [        SSSS5      nSnX!l        U R                  [        SUSS5      U5        U R                  X!R                  5        g)zOChanging the top attribute moves the rect and does not change
the rect's width
r   r    r!   r"   ru   N)r   r&   r$   )r   r*   new_tops      r   test_topRectTypeTest.test_top  sK     Aq!a!Q/3%%(r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z;Ensures the top attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r&   r   s      r   test_top__invalid_value$RectTypeTest.test_top__invalid_value  sI    Aq!BT95E""9- .- 6--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z+Ensures the top attribute can't be deleted.r   r   N)r   r   r   r&   r)   s     r   test_top__delRectTypeTest.test_top__del  s1    Aq!~. /..r   c                 "   [        SSSS5      nUR                  S-   nUR                  S-   nUR                  nX!l        U R	                  X!R                  5        U R	                  X1R                  5        U R	                  XAR                  5        g)zSChanging the bottom attribute moves the rect and does not change
the rect's height
r   r    r!   r"   r   N)r   r4   r&   r(   r$   )r   r*   
new_bottomexpected_top
old_heights        r   test_bottomRectTypeTest.test_bottom  sr     Aq!XX]
uurzXX
XX.uu-XX.r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z>Ensures the bottom attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r4   r   s      r   test_bottom__invalid_value'RectTypeTest.test_bottom__invalid_value-  I    Aq!BT95E""9-  .- 6--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z.Ensures the bottom attribute can't be deleted.r   r   N)r   r   r   r4   r)   s     r   test_bottom__delRectTypeTest.test_bottom__del5  1    Aq!~. /..r   c                 "   [        SSSS5      nUR                  S-   nUR                  S-   nUR                  nX!l        U R	                  X!R                  5        U R	                  X1R                  5        U R	                  XAR                  5        g)zSChanging the centerx attribute moves the rect and does not change
the rect's width
r   r    r!   r"   r   N)r   r:   r%   r'   r$   )r   r*   new_centerxr   r   s        r   test_centerxRectTypeTest.test_centerx<  sr     Aq!ii"nGG		ii0/GG,r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z?Ensures the centerx attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r:   r   s      r   test_centerx__invalid_value(RectTypeTest.test_centerx__invalid_valueJ  I    Aq!BT95E""9-!	 .- 6--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z/Ensures the centerx attribute can't be deleted.r   r   N)r   r   r   r:   r)   s     r   test_centerx__delRectTypeTest.test_centerx__delR  1    Aq!~.	 /..r   c                 "   [        SSSS5      nUR                  S-   nUR                  S-   nUR                  nX!l        U R	                  X!R                  5        U R	                  X1R                  5        U R	                  XAR                  5        g)zSChanging the centery attribute moves the rect and does not change
the rect's width
r   r    r!   r"   r   N)r   r;   r&   r(   r$   )r   r*   new_centeryr   r   s        r   test_centeryRectTypeTest.test_centeryY  sr     Aq!ii"nuurzXX
	ii0uu-XX.r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z?Ensures the centery attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r;   r   s      r   test_centery__invalid_value(RectTypeTest.test_centery__invalid_valueg  r   r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z/Ensures the centery attribute can't be deleted.r   r   N)r   r   r   r;   r)   s     r   test_centery__delRectTypeTest.test_centery__delo  r   r   c                     [        SSSS5      nUR                  S-   UR                  S-   4nUR                  nX!l        U R                  X!R                  5        U R                  X1R                  5        g)zRChanging the topleft attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r      N)r   r%   r&   r5   r6   r$   )r   r*   new_topleftold_sizes       r   test_topleftRectTypeTest.test_topleftv  s`     Aq!vv{AEEBJ/66	ii066*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z?Ensures the topleft attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r6   r   s      r   test_topleft__invalid_value(RectTypeTest.test_topleft__invalid_value  K    Aq!BQi8E""9-!	 .- 9--   A
A	c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z/Ensures the topleft attribute can't be deleted.r   r   N)r   r   r   r6   r)   s     r   test_topleft__delRectTypeTest.test_topleft__del  r   r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR                  nX!l        U R                  X!R
                  5        U R                  X1R                  5        U R                  XAR                  5        g)zUChanging the bottomleft attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)r   r%   r4   r&   r5   r8   r$   r6   )r   r*   new_bottomleftexpected_topleftr   s        r   test_bottomleftRectTypeTest.test_bottomleft  s     Aq!&&2+qxx"}5FFRK466%6)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)zBEnsures the bottomleft attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r8   r   s      r   test_bottomleft__invalid_value+RectTypeTest.test_bottomleft__invalid_value  sK    Aq!BQi8E""9-$ .- 9--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z2Ensures the bottomleft attribute can't be deleted.r   r   N)r   r   r   r8   r)   s     r   test_bottomleft__del!RectTypeTest.test_bottomleft__del  s1    Aq!~. /..r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR                  nX!l        U R                  X!R
                  5        U R                  X1R                  5        U R                  XAR                  5        g)zSChanging the topright attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)r   r3   r&   r%   r5   r7   r$   r6   )r   r*   new_toprightr   r   s        r   test_toprightRectTypeTest.test_topright  s     Aq!"aeebj1FFRK466!
zz2)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z@Ensures the topright attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r7   r   s      r   test_topright__invalid_value)RectTypeTest.test_topright__invalid_value  K    Aq!BQi8E""9-"
 .- 9--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z0Ensures the topright attribute can't be deleted.r   r   N)r   r   r   r7   r)   s     r   test_topright__delRectTypeTest.test_topright__del  1    Aq!~.
 /..r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR
                  nX!l        U R                  X!R                  5        U R                  X1R                  5        U R                  XAR
                  5        g)zVChanging the bottomright attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)	r   r3   r4   r%   r&   r5   r9   r$   r6   )r   r*   new_bottomrightr   r   s        r   test_bottomrightRectTypeTest.test_bottomright  s     Aq!77R<B7FFRK466'--8)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)zCEnsures the bottomright attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r9   r   s      r   test_bottomright__invalid_value,RectTypeTest.test_bottomright__invalid_value  sK    Aq!BQi8E""9- % .- 9--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z3Ensures the bottomright attribute can't be deleted.r   r   N)r   r   r   r9   r)   s     r   test_bottomright__del"RectTypeTest.test_bottomright__del  s1    Aq!~. /..r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR
                  nX!l        U R                  X!R                  5        U R                  X1R                  5        U R                  XAR
                  5        g)zQChanging the center attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)	r   r:   r;   r%   r&   r5   r<   r$   r6   )r   r*   
new_centerr   r   s        r   test_centerRectTypeTest.test_center  s     Aq!ii"naii"n5
FFRK466XX.)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z>Ensures the center attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r<   r   s      r   test_center__invalid_value'RectTypeTest.test_center__invalid_value  K    Aq!BQi8E""9-  .- 9--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z.Ensures the center attribute can't be deleted.r   r   N)r   r   r   r<   r)   s     r   test_center__delRectTypeTest.test_center__del  r   r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR                  nX!l        U R                  X!R
                  5        U R                  X1R                  5        U R                  XAR                  5        g)zRChanging the midleft attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)r   r%   r;   r&   r5   r?   r$   r6   )r   r*   new_midleftr   r   s        r   test_midleftRectTypeTest.test_midleft  s     Aq!vv{AIIN3FFRK466	ii0)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z?Ensures the midleft attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r?   r   s      r   test_midleft__invalid_value(RectTypeTest.test_midleft__invalid_value  r   r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z/Ensures the midleft attribute can't be deleted.r   r   N)r   r   r   r?   r)   s     r   test_midleft__delRectTypeTest.test_midleft__del  r   r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR
                  nX!l        U R                  X!R                  5        U R                  X1R                  5        U R                  XAR
                  5        g)zSChanging the midright attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)	r   r3   r;   r%   r&   r5   r@   r$   r6   )r   r*   new_midrightr   r   s        r   test_midrightRectTypeTest.test_midright"  s     Aq!"aii"n5FFRK466!
zz2)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z@Ensures the midright attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r@   r   s      r   test_midright__invalid_value)RectTypeTest.test_midright__invalid_value0  r   r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z0Ensures the midright attribute can't be deleted.r   r   N)r   r   r   r@   r)   s     r   test_midright__delRectTypeTest.test_midright__del8  r  r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR                  nX!l        U R                  X!R
                  5        U R                  X1R                  5        U R                  XAR                  5        g)zQChanging the midtop attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)r   r:   r&   r%   r5   r=   r$   r6   )r   r*   
new_midtopr   r   s        r   test_midtopRectTypeTest.test_midtop?  s     Aq!ii"naeebj1
FFRK466XX.)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z>Ensures the midtop attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r=   r   s      r   test_midtop__invalid_value'RectTypeTest.test_midtop__invalid_valueM  r  r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z.Ensures the midtop attribute can't be deleted.r   r   N)r   r   r   r=   r)   s     r   test_midtop__delRectTypeTest.test_midtop__delU  r   r   c                 ^   [        SSSS5      nUR                  S-   UR                  S-   4nUR                  S-   UR                  S-   4nUR
                  nX!l        U R                  X!R                  5        U R                  X1R                  5        U R                  XAR
                  5        g)zTChanging the midbottom attribute moves the rect and does not change
the rect's size
r   r    r!   r"   r   r   N)	r   r:   r4   r%   r&   r5   r>   r$   r6   )r   r*   new_midbottomr   r   s        r   test_midbottomRectTypeTest.test_midbottom\  s     Aq!RB7FFRK466#4)99566*r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)zAEnsures the midbottom attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r>   r   s      r   test_midbottom__invalid_value*RectTypeTest.test_midbottom__invalid_valuej  sK    Aq!BQi8E""9-# .- 9--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z1Ensures the midbottom attribute can't be deleted.r   r   N)r   r   r   r>   r)   s     r   test_midbottom__del RectTypeTest.test_midbottom__delr  s1    Aq!~. /..r   c                    [        SSSS5      nSnUR                  nUR                  nX!l        U R	                  X!R                  5        U R	                  XAR                  5        U R	                  X1R                  5        g)z<Changing the width resizes the rect from the top-left cornerr   r    r!   r"   ru   N)r   r6   r(   r'   r$   )r   r*   	new_widthold_topleftr   s        r   
test_widthRectTypeTest.test_widthy  sd    Aq!	iiXX
GG,XX.ii0r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z=Ensures the width attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r'   r   s      r   test_width__invalid_value&RectTypeTest.test_width__invalid_value  r   r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z-Ensures the width attribute can't be deleted.r   r   N)r   r   r   r'   r)   s     r   test_width__delRectTypeTest.test_width__del  r   r   c                    [        SSSS5      nSnUR                  nUR                  nX!l        U R	                  X!R                  5        U R	                  XAR                  5        U R	                  X1R                  5        g)z=Changing the height resizes the rect from the top-left cornerr   r    r!   r"   ru   N)r   r6   r'   r(   r$   )r   r*   
new_heightrC  r   s        r   test_heightRectTypeTest.test_height  sd    Aq!
iiGG	XX.GG,ii0r   c                     [        SSSS5      nS/ SS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z>Ensures the height attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r(   r   s      r   test_height__invalid_value'RectTypeTest.test_height__invalid_value  r   r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z.Ensures the height attribute can't be deleted.r   r   N)r   r   r   r(   r)   s     r   test_height__delRectTypeTest.test_height__del  r   r   c                     [        SSSS5      nSnUR                  nX!l        U R                  X!R                  5        U R                  X1R                  5        g)z;Changing the size resizes the rect from the top-left cornerr   r    r!   r"   ru   r   N)r   r6   r5   r$   )r   r*   new_sizerC  s       r   	test_sizeRectTypeTest.test_size  sI    Aq!ii66*ii0r   c                     [        SSSS5      nS/ SSS/ SQ4 H'  nU R                  [        5         X!l        SSS5        M)     g! , (       d  f       M;  = f)z<Ensures the size attribute handles invalid values correctly.r   r   Nr}   r~   r   )r   r   r   r5   r   s      r   test_size__invalid_value%RectTypeTest.test_size__invalid_value  sK    Aq!BQi8E""9- .- 9--r   c                     [        SSSS5      nU R                  [        5         U?SSS5        g! , (       d  f       g= f)z,Ensures the size attribute can't be deleted.r   r   N)r   r   r   r5   r)   s     r   test_size__delRectTypeTest.test_size__del  r   r   c           
         [        SSSS5      nU R                  UR                  [        SSSS5      5      S5        U R                  [        SSSS5      U;   S5        U R                  UR                  [        U5      5      S5        U R                  U[        U5      ;   S5        U R                  UR                  [        SSSS5      5      S	5        U R                  [        SSSS5      U;   S	5        U R                  UR                  [        SSSS5      5      S
5        U R                  UR                  [        SSSS5      5      S5        U R                  UR                  [        SSSS5      5      S5        U R                  [        SSSS5      U;   S
5        U R                  [        SSSS5      U;   S5        U R                  [        SSSS5      U;   S5        U R                  S[        SSSS5      ;   S5        U R                  S[        SSSS5      ;   S5        U R	                  [
        S 5        U R	                  [
        S 5        g )Nr   r    r!   r"   z#r does not contain Rect(2, 3, 1, 1)z%r does not contain Rect(2, 3, 1, 1) 2z*r does not contain the same rect as itselfr   z2r does not contain an empty rect within its boundszr contains Rect(0, 0, 1, 2)ra   zr contains Rect(4, 6, 1, 1)zr contains Rect(4, 6, 0, 0)zr does not contain 2zr contains 3c                  $    S[        SSSS5      ;   $ )Nstringr   r   r    r   r   r   r   <lambda>,RectTypeTest.test_contains.<locals>.<lambda>  s    XaAq9I-Ir   c                  $    S[        SSSS5      ;   $ )Ny      @      @r   r   r    rd  r   r   r   re  rf    s    VtAq!Q7G-Gr   )r   
assertTruecontainsassertFalser   r   r)   s     r   test_containsRectTypeTest.test_contains  s   Aq!JJtAq!Q'(*O	
 	Q1a(A-/VWJJtAw!M	
 	T!W&RSJJtAq!Q'(@	
 	Aq!!@	
 	DAq!$457TUDAq!$457TUDAq!$457TUaAq)Q.0MNaAq)Q.0MNaAq)Q.0MNT!Q1--/EFd1aA..?)%IJ)%GHr   c                    [        SSSS5      nU R                  UR                  UR                  UR                  5      S5        U R                  UR                  UR                  S-
  UR                  5      S5        U R                  UR                  UR                  UR                  S-
  5      S5        U R                  UR                  UR                  S-
  UR                  S-
  5      S5        U R                  UR                  UR                  S-
  UR                  S-
  5      S	5        U R                  UR                  UR                  UR                  5      S
5        U R                  UR                  UR                  S-
  UR                  5      S5        U R                  UR                  UR                  UR                  S-
  5      S5        g )Nr   r    r!   r"   z)r does not collide with point (left, top)z%r collides with point (left - 1, top)z%r collides with point (left, top - 1)z)r collides with point (left - 1, top - 1)z5r does not collide with point (right - 1, bottom - 1)z%r collides with point (right, bottom)z)r collides with point (right - 1, bottom)z)r collides with point (right, bottom - 1))r   rh  collidepointr%   r&   rj  r3   r4   r)   s     r   test_collidepointRectTypeTest.test_collidepoint  st   Aq!NN166155)+V	
 	NN166A:quu-/V	
 	NN16615519-/V	
 	NN166A:quuqy17	

 	NN177Q;15C	
 	NN177AHH-/V	
 	NN177Q;17	
 	NN177AHHqL17	
r   c                 |   [        SSSS5      nUR                  SS5      nU R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  S-
  UR
                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-   UR                  5        g)>The inflate method inflates around the center of the rectangler    r"   ra      r!   N
r   inflater$   r<   r%   r&   r3   r4   r'   r(   r   r*   r2s      r   test_inflate__larger!RectTypeTest.test_inflate__larger  s    Aq!YYq!_299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                 |   [        SSSS5      nUR                  SS5      nU R                  UR                  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  S-   UR
                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        g	rr  r    r"   ra   rs  rT   r!   Nrt  rv  s      r   test_inflate__smaller"RectTypeTest.test_inflate__smaller  s    Aq!YYr2299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                    [        SSSS5      n[        U5      nUR                  SS5        U R                  UR                  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  S-   UR
                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        g)	zAThe inflate_ip method inflates around the center of the rectangler    r"   ra   rs  r|  rT   r!   N
r   
inflate_ipr$   r<   r%   r&   r3   r4   r'   r(   rv  s      r   test_inflate_ip__larger$RectTypeTest.test_inflate_ip__larger"      Aq!!W
b"299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                    [        SSSS5      n[        U5      nUR                  SS5        U R                  UR                  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  S-   UR
                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        gr{  r  rv  s      r   test_inflate_ip__smaller%RectTypeTest.test_inflate_ip__smaller0  r  r   c                 z   [        SSSS5      nUR                  S5      nU R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  S-
  UR
                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        g:The scale method scales around the center of the rectangler    r"   ra   rs  r!   N
r   scale_byr$   r<   r%   r&   r3   r4   r'   r(   rv  s      r   %test_scale_by__larger_single_argument2RectTypeTest.test_scale_by__larger_single_argument>  s    Aq!ZZ]299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                 v   [        SSSS5      nUR                  SS9nU R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  S-
  UR
                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        g)z^The scale method scales around the center of the rectangle using
keyword arguments 'x' and 'y'r    r"   ra   rs  )rV   r!   Nr  rv  s      r   +test_scale_by__larger_single_argument_kwarg8RectTypeTest.test_scale_by__larger_single_argument_kwargK  s     Aq!ZZ!Z_299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                 z   [        SSSS5      nUR                  S5      nU R                  UR                  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  S-   UR
                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        gr  r    r"   rs        ?Nr  rv  s      r   &test_scale_by__smaller_single_argument3RectTypeTest.test_scale_by__smaller_single_argumentY  s    Aq!ZZ_299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                    [        SSSS5      nUR                  SS5      nU R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  UR                  S-  S-  -
  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  UR                  S-  S-  -   UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        gr  r   r  r$   r<   r%   r;   rY   r&   r3   r4   r'   r(   rv  s      r   test_scale_by__larger"RectTypeTest.test_scale_by__largerf  s     Aq!ZZ1299-!RWW-QSS1Wq[0"&&91bhh/QSS1Wq[0"))<1bhh/Aryy1r   c                    [        SSSS5      nUR                  SS9nU R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  UR                  S-  S-  -
  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  UR                  S-  S-  -   UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        g)	zS
The scale method scales around the center of the rectangle
Uses 'scale_by' kwarg.
r    r"   ra   rs  )r    r"   r  r!   Nr  rv  s      r   %test_scale_by__larger_kwargs_scale_by2RectTypeTest.test_scale_by__larger_kwargs_scale_byu  s     Aq!ZZZ(299-!RWW-QSS1Wq[0"&&91bhh/QSS1Wq[0"))<1bhh/Aryy1r   c                    [        SSSS5      nUR                  SSS9nU R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  UR                  S-  S-  -
  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  UR                  S-  S-  -   UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        g)zU
The scale method scales around the center of the rectangle
Uses 'x' and 'y' kwargs.
r    r"   ra   rs  rV   rX   r!   Nr  rv  s      r   test_scale_by__larger_kwargs)RectTypeTest.test_scale_by__larger_kwargs  s     Aq!ZZ!qZ!299-!RWW-QSS1Wq[0"&&91bhh/QSS1Wq[0"))<1bhh/Aryy1r   c                    [        SSSS5      nUR                  SS5      nU R                  UR                  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  UR                  S-  S-  -
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  UR                  S-  S-  -   UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-  UR                  5        g)r  r    r"   rs  r  g      ?Nr  rv  s      r   test_scale_by__smaller#RectTypeTest.test_scale_by__smaller  s     Aq!ZZT"299-!RWW-QSS1Wq[0"&&91bhh/QSS1Wq[0"))<1bhh/Q		2r   c                    [        SSSS5      nUR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S	S
5      nU R                  UR                  UR                  S	-  S-  -
  UR
                  5        U R                  UR                  UR                  5        U R                  UR                  S	-  UR                  5        U R                  UR                  UR                  5        UR                  SS
5      nU R                  UR
                  UR
                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        UR                  S
S	5      nU R                  UR
                  UR
                  5        U R                  UR                  UR                  S	-  S-  -
  UR                  5        U R                  UR                  UR                  5        U R                  UR                  S	-  UR                  5        UR                  S
S5      nU R                  UR
                  UR
                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        UR                  S	5      nU R                  UR                  UR                  S	-  S-  -
  UR
                  5        U R                  UR                  UR                  S	-  S-  -
  UR                  5        U R                  UR                  S	-  UR                  5        U R                  UR                  S	-  UR                  5        g)r  r    r"   ra   rs  r   ưh㈵>ru   r   N)	r   r  r$   r:   rW   rV   rX   rY   r;   )r   r*   rx1rx2ry1ry2r1s          r   test_scale_by__subzero#RectTypeTest.test_scale_by__subzero  s   Aq!	

1	

2	

9	

7jjQQSS2X\13559cee$r355)cee$jja &&&&jjBcee$QSS2X\13559cee$r355)jjC &&&&ZZ^QSS2X\12448QSS2X\12448r244(r244(r   c                 t   [        SSSS5      nUR                  SS5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR
                  UR
                  5        U R                  UR                  UR                  5        gr  r    r"   ra   rs  r   Nr   r  r$   rV   rX   rW   rY   r   r*   actuals      r   test_scale_by_identity#RectTypeTest.test_scale_by_identity  s     Aq!Aq!fhh'fhh'fhh'fhh'r   c                 t   [        SSSS5      nUR                  SS5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR
                  UR
                  5        U R                  UR                  UR                  5        gr  r    r"   ra   rs  r  Nr  r  s      r   test_scale_by_negative_identity,RectTypeTest.test_scale_by_negative_identity  s     Aq!B#fhh'fhh'fhh'fhh'r   c                 r   [        SSSS5      nUR                  S5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR
                  UR
                  5        U R                  UR                  UR                  5        gr  r  r  s      r   &test_scale_by_identity_single_argument3RectTypeTest.test_scale_by_identity_single_argument  s     Aq!Afhh'fhh'fhh'fhh'r   c                 r   [        SSSS5      nUR                  S5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR
                  UR
                  5        U R                  UR                  UR                  5        gr  r  r  s      r   .test_scale_by_negative_identity_single_argment;RectTypeTest.test_scale_by_negative_identity_single_argment  s     Aq!Bfhh'fhh'fhh'fhh'r   c                    [        SSSS5      n[        U5      nUR                  S5        U R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  S-
  UR
                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-   UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        gr  
r   scale_by_ipr$   r<   r%   r&   r3   r4   r'   r(   rv  s      r   test_scale_by_ip__larger%RectTypeTest.test_scale_by_ip__larger  s    Aq!!W
q299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                    [        SSSS5      n[        U5      nUR                  S5        U R                  UR                  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  S-   UR
                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        gr  r  rv  s      r   test_scale_by_ip__smaller&RectTypeTest.test_scale_by_ip__smaller
  s    Aq!!W
s299-!RWW-BFF+1bhh/Aryy11bhh/Aryy1r   c                     [        SSSS5      nUR                  S5        UR                  S5        UR                  S5        UR                  S5        g	)
r  r    r"   ra   rs  r   r  r  r  N)r   r  r)   s     r   test_scale_by_ip__subzero&RectTypeTest.test_scale_by_ip__subzero  sB    Aq!	a	b	i 	gr   c                    [        SSSS5      n[        U5      nUR                  SSS9  U R                  UR                  UR                  5        U R                  UR                  S-
  UR                  5        U R                  UR
                  UR                  S-  S-  -
  UR                  5        U R                  UR                  S-   UR                  5        U R                  UR
                  UR                  S-  S-  -   UR                  5        U R                  UR                  S-  UR                  5        U R                  UR                  S-  UR                  5        g)r  r    r"   ra   rs  r  r!   N)r   r  r$   r<   r%   r;   rY   r&   r3   r4   r'   r(   rv  s      r   test_scale_by_ip__kwargs%RectTypeTest.test_scale_by_ip__kwargs   s   Aq!!W
a  	299-!RWW-QSS1Wq[0"&&91bhh/QSS1Wq[0"))<1bhh/Aryy1r   c                    [        SSSS5      nU R                  [        5         UR                  SS9  SSS5        U R                  [        5         UR                  SSS	9  SSS5        g! , (       d  f       N== f! , (       d  f       g= f)
z~The scale method scales around the center of the rectangle using
keyword argument 'scale_by'. Tests for incorrect keyword argsr    r"   ra   rs  r  Nr.   r   )r  rX   )r   r   r   r  r)   s     r   "test_scale_by_ip__kwarg_exceptions/RectTypeTest.test_scale_by_ip__kwarg_exceptions/  so     Aq!y)MM1M% * y)MM6QM/ *) *) *)s   A+A<+
A9<
B
c                    [        SSSS5      n[        SSSS5      R                  U5      nU R                  UR                  UR                  5        U R                  UR                  S5        [        SSSS5      R                  U5      nU R                  UR
                  UR
                  5        [        SS	S
S5      R                  U5      nU R                  UR                  UR                  5        g Nru            r   r    r!   r"   i     !   )r   clampr$   r3   r&   r6   r<   r   r*   cs      r   
test_clampRectTypeTest.test_clamp:  s    RR RA$$Q'!''*#Aq!""1%AII.CR &&q)188,r   c                    [        SSSS5      n[        SSSS5      nUR                  U5        U R                  UR                  UR                  5        U R                  UR                  S5        [        SSSS5      nUR                  U5        U R                  UR
                  UR
                  5        [        SS	S
S5      nUR                  U5        U R                  UR                  UR                  5        g r  )r   clamp_ipr$   r3   r&   r6   r<   r  s      r   test_clamp_ipRectTypeTest.test_clamp_ipD  s    RR RA	

1!''*#Aq!	

1AII.CR 	

1188,r   c                 &   [        SSSS5      nU R                  [        SSSS5      UR                  [        SSSS5      5      5        U R                  [        SSSS5      UR                  [        SSSS5      5      5        U R                  [        SSSS5      UR                  [        SSSS5      5      5        U R                  SUR                  SS	S
S5      R                  5        U R                  XR                  [        U5      5      S5        g )Nr   r    r!   r"   r   ru   r   rq   r   r  ra   z,r1 does not clip an identical rect to itself)r   r$   clipr5   r   r  s     r   	test_clipRectTypeTest.test_clipQ  s    !Q1aAq)27741a3C+DEaAq)27741b"3E+FGaAq)27741a3C+DERA!6!;!;<R!#Q	
r   c                     [        SS5      nSnSnSnSnX#4XE44nUR                  X#XE5      nU R                  U[        5        U R	                  Xv5        g)zZEnsures clipline handles four int parameters.

Tests the clipline(x1, y1, x2, y2) format.
r.   #   (   r  ra      r  N)r   cliplineassertIsInstancetupleassertTupleEqualr   rL   x1y1x2y2expected_lineclipped_lines           r   test_cliplineRectTypeTest.test_clipline[  s`    
 FH%B8,}}RR4lE2l:r   c                     [        SS5      nSnSn[        [        [        4nX#4nU HS  nU" U5      nU HB  nUR	                  Xx" U5      45      n	U R                  U	[        5        U R                  X5        MD     MU     g)zEnsures clipline handles a sequence of two sequences.

Tests the clipline((x1, y1), (x2, y2)) format.
Tests the sequences as different types.
r.   r  r  ra   r  r  Nr   listr  r   r  r  r  
r   rL   pt1pt2INNER_SEQUENCESr  
inner_seq1endpt1
inner_seq2r  s
             r   test_clipline__two_sequences)RectTypeTest.test_clipline__two_sequencesl  s     FH%0
)J_F-
#}}fjo-FG%%lE:%%lB	 . *r   c                     [        SS5      nSnSn[        [        [        4nX#4nU HP  nU" U5      nU H?  nUR	                  Xx" U5      S9n	U R                  U	[        5        U R                  X5        MA     MR     g)zEnsures clipline handles a sequence of two sequences using kwargs.

Tests the clipline((x1, y1), (x2, y2)) format.
Tests the sequences as different types.
r.   r  r  r  first_coordinatesecond_coordinateNr  r   s
             r   "test_clipline__two_sequences_kwarg/RectTypeTest.test_clipline__two_sequences_kwarg  s     FH%0
)J_F-
#}}%+z#  -   %%lE:%%lB . *r   c                     [        SS5      nSnUS   US   4US   US   44n[        [        4 HA  nUR                  U" U5      5      nU R	                  U[        5        U R                  XS5        MC     g)	zEnsures clipline handles a sequence of four ints.

Tests the clipline((x1, y1, x2, y2)) format.
Tests the sequence as different types.
r.   r  r  ra   r  r  r   r   r    r!   Nr   r  r  r  r  r  r   rL   liner  	outer_seqr  s         r   $test_clipline__sequence_of_four_ints1RectTypeTest.test_clipline__sequence_of_four_ints  sw     FH%q'47+d1gtAw-?@I==49L!!,6!!,>	 'r   c                     [        SS5      nSnUS   US   4US   US   44n[        [        4 H?  nUR                  U" U5      S9nU R	                  U[        5        U R                  XS5        MA     g	)
zEnsures clipline handles a sequence of four ints using kwargs.

Tests the clipline((x1, y1, x2, y2)) format.
Tests the sequence as different types.
r.   r  r  r   r   r    r!   rect_argNr  r  s         r   +test_clipline__sequence_of_four_ints_kwargs8RectTypeTest.test_clipline__sequence_of_four_ints_kwargs  sy     FH%q'47+d1gtAw-?@I==)D/=BL!!,6!!,>	 'r   c           	      4   [        SS5      nSnSn[        [        [        4nX#4nU Hn  nU" U5      nU H]  nU" U5      n	[        [        4 HB  n
UR	                  U
" Xy45      5      nU R                  U[        5        U R                  X5        MD     M_     Mp     g)zEnsures clipline handles a sequence of two sequences.

Tests the clipline(((x1, y1), (x2, y2))) format.
Tests the sequences as different types.
r.   r  r  r  Nr  r   rL   r  r  r  r  r  r  r  endpt2r  r  s               r   (test_clipline__sequence_of_two_sequences5RectTypeTest.test_clipline__sequence_of_two_sequences  s     FH%0
)J_F-
#C"&I#'==F;K1L#ML)),>)),F	 "/ . *r   c           	      0   [        SS5      nSnSn[        [        [        4nX#4nU Hl  nU" U5      nU H[  nU" U5      n	[        [        4 H@  n
UR	                  U
" Xy45      S9nU R                  U[        5        U R                  X5        MB     M]     Mn     g)zEnsures clipline handles a sequence of two sequences using kwargs.

Tests the clipline(((x1, y1), (x2, y2))) format.
Tests the sequences as different types.
r.   r  r  r  r  Nr  r  s               r   /test_clipline__sequence_of_two_sequences_kwargs<RectTypeTest.test_clipline__sequence_of_two_sequences_kwargs  s     FH%0
)J_F-
#C"&I#'==Iv>N4O=#PL)),>)),F	 "/ . *r   c                 N   [        SS5      nSnSnSnSn[        R                  " U5      [        R                  " U5      4[        R                  " U5      [        R                  " U5      44nUR                  X#XE5      nU R	                  U[
        5        U R                  Xv5        g)z*Ensures clipline handles float parameters.r.   r  皙@皙@'@fffff3@Nr   mathfloorr  r  r  r  r  s           r   test_clipline__floats"RectTypeTest.test_clipline__floats  s    FH% ZZ^TZZ^,ZZ^TZZ^,

 }}RR4lE2l:r   c                 J   [        SS5      nSnSnSnSn[        R                  " U5      [        R                  " U5      4[        R                  " U5      [        R                  " U5      44nUR                  X#XES9nU R	                  U[
        5        U R                  Xv5        g)	z\Ensures clipline handles four float parameters.

Tests the clipline(x1, y1, x2, y2) format.
r.   r  r&  r'  r(  r)  )r  r  x3x4Nr*  r  s           r   test_clipline__floats_kwargs)RectTypeTest.test_clipline__floats_kwargs  s    
 FH% ZZ^TZZ^,ZZ^TZZ^,

 }}b}@lE2l:r   c                    [        SSSS5      nU R                  [        5         UR                  SS9  SSS5        U R                  [        5         UR                  SS	S
9  SSS5        U R                  [        5         UR                  SSSS9  SSS5        U R                  [        5         UR                  SS9  SSS5        U R                  [        5         UR                  SSS9  SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Np= f! , (       d  f       g= f)z3Ensure clipline handles incorrect keyword argumentsr    r"   ra   rs  r   r"  N)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)   s     r   test_clipline__kwarg_exceptions,RectTypeTest.test_clipline__kwarg_exceptions  s    Aq!y)JJ!J * y)JJJO * y)JJ&QJO * y)JJ	J* * y)JJJG *) *) *) *) *) *)s;   C5D?D.D(D95
D
D
D%(
D69
Ec                 V   [        SS5      nUR                  SS5      nUR                  UR                  4UR                  UR                  4UR                  UR
                  4UR
                  UR                  44nSnU H%  nUR                  U5      nU R                  Xd5        M'     g)z;Ensures lines that do not overlap the rect are not clipped.ru         r   r    r   N)r   ru  r8   r6   r7   r9   r  r  )r   rL   big_rectlinesr  r  r  s          r   test_clipline__no_overlap&RectTypeTest.test_clipline__no_overlap(  s    Hh'<<1%  ("2"23x001 4 45!!8#6#67	
  D==.L!!,> r   c                    [        SS5      nUR                  SS5      nUR                  UR                  4UR                  UR                  S   S-
  UR                  S   44UR                  UR
                  4UR                  UR
                  S   UR
                  S   S-
  44UR                  UR                  4UR                  UR                  S   S-
  UR                  S   S-
  44UR                  S   S-
  UR                  S   4UR                  S   UR                  S   S-
  44UR                  S   S-
  UR                  S   4UR                  S   UR                  S   S-
  440nUR                  5        H[  u  pEUR                  U5      nU R                  Xe5        US   US   4nUR                  US   US   45      nU R                  Xe5        M]     g)zfEnsures lines that overlap the rect are clipped.

Testing lines with both endpoints outside the rect.
rq   r   r   r    r   r   N)r   ru  r?   r@   r=   r>   r6   r9   r7   r8   itemsr  r  r   rL   r>  	line_dictr  r  r  s          r   %test_clipline__both_endpoints_outside2RectTypeTest.test_clipline__both_endpoints_outside;  s   
 FH%<<1% x001q!A%t}}Q'784 __h001"DNN1$5$9:4
 x334!!!$q($*:*:1*=*AB7 ""1%)8+<+<Q+?@$$Q')<)<Q)?!)CD q!A%t}}Q'78#T__Q%7!%;<'
	2 $-??#4D==.L!!,> +1-}Q/?@M==$q'47);<L!!,> $5r   c                    [        SS5      nUR                  SS5      nUR                  UR                  4UR                  UR
                  4UR                  UR                  4UR                  UR                  44nU H[  nUnUR                  U5      nU R                  Xe5        US   US   4nUR                  US   US   45      nU R                  Xe5        M]     g)zeEnsures lines that overlap the rect are clipped.

Testing lines with both endpoints inside the rect.
)r  rC  r   r   N)r   ru  r?   r@   r=   r>   r6   r9   r7   r8   r  r  )r   rL   
small_rectr?  r  r  r  s          r   $test_clipline__both_endpoints_inside1RectTypeTest.test_clipline__both_endpoints_insidej  s    
 Ix(\\"b)
 !4!45
 4 45!7!78  *"7"78
 D M==.L!!,> +1-}Q/?@M==$q'47);<L!!,> r   c                    [        SS5      nUR                  SS5      nUR                  UR                  4UR                  UR                  4UR                  UR                  4UR                  UR                  4UR
                  UR                  4UR
                  S   S-
  UR
                  S   4UR                  4UR                  UR                  4UR                  S   UR                  S   S-
  4UR                  4UR                  UR                  4UR                  UR                  4UR                  UR                  4UR                  S   S-
  UR                  S   4UR                  4UR                  UR                  4UR                  S   S-
  UR                  S   S-
  4UR                  4UR                  S   UR                  S   S-
  4UR                  4UR                  S   UR                  S   S-
  4UR                  40nUR                  5        H[  u  pEUR                  U5      nU R                  Xe5        US   US   4nUR                  US   US   45      nU R                  Xe5        M]     g)zEnsures lines that overlap the rect are clipped.

Testing lines with one endpoint outside the rect and the other is
inside the rect.
rq   )r   r   r    r   r   N)r   ru  r?   r<   r=   r@   r>   r6   r7   r9   r8   rD  r  r  rE  s          r   +test_clipline__endpoints_inside_and_outside8RectTypeTest.test_clipline__endpoints_inside_and_outside  sX    FH%<<1% t{{+dllDKK-H__dkk*T[[$++,F,q!A%t}}Q'78/ -"DNN1$5$9:0
 t{{+dllDKK-H,q!A%t}}Q'78/ !!4;;/!!!$q($*:*:1*=*AB2 !!!$h&9&9!&<q&@A4;;O#T__Q%7!%;<R/
	: $-??#4D==.L!!,> +1-}Q/?@M==$q'47);<L!!,> $5r   c                 x   [        SS5      nUR                  UR                  4UR                  S   UR                  S   S-
  4UR                  4UR                  UR                  4UR                  UR                  S   S-
  UR                  S   44UR                  UR                  4SUR                  UR                  4S0nUR                  5        Hb  u  p4UR                  U5      nU R                  XT5        U(       a
  US   US   4nUR                  US   US   45      nU R                  XT5        Md     g)zCEnsures clipline properly clips line that are along the rect edges.r:  r<  r   r   r   N)r   r8   r6   r7   r9   rD  r  r  )r   rL   	edge_dictedger  r  s         r   test_clipline__edges!RectTypeTest.test_clipline__edges  s-   Hh'
 __dll+#T__Q%7!%;<.
 \\4==)q!A%t}}Q'78,
 ]]D,,-rt/
	" $-??#4D==.L!!,> !.q!1=3C D==$q'47);<L!!,> $5r   c                    ^ [        SS5      mU4S j[        TR                  TR                  5       5       nU H)  nX"4nTR	                  X"45      nU R                  XC5        M+     g)zcEnsures clipline handles lines with both endpoints the same.

Testing lines that overlap the rect.
r:  r<  c              3   z   >#    U  H0  n[        TR                  TR                  5        H  nX4v   M
     M2     g 7fr
   )ranger&   r4   ).0rV   rX   rL   s      r   	<genexpr>KRectTypeTest.test_clipline__equal_endpoints_with_overlap.<locals>.<genexpr>  s6      
1488T[[1 F1 1s   8;N)r   rY  r%   r3   r  r  )r   ptsptr  r  rL   s        @r   +test_clipline__equal_endpoints_with_overlap8RectTypeTest.test_clipline__equal_endpoints_with_overlap  s`    
 Hh'
499djj1
 BHM=="2L!!,> r   c                     Sn[        SS5      n[        R                  " UR                  SS5      5       H&  nUR	                  X345      nU R                  XA5        M(     g)zjEnsures clipline handles lines with both endpoints the same.

Testing lines that do not overlap the rect.
r   r:  r<  r    N)r   r   rect_perimeter_ptsru  r  r  )r   r  rL   r^  r  s        r   )test_clipline__equal_endpoints_no_overlap6RectTypeTest.test_clipline__equal_endpoints_no_overlap  sV    
 Hh' //Q0BCB=="2L!!,> Dr   c                     SnS HF  n[        SU5      nUR                  UR                  UR                  5      nU R                  XA5        MH     g)z4Ensures clipline handles zero sized rects correctly.r   ))r   r=  )r=  r   rq   r:  N)r   r  r6   r  )r   r  r5   rL   r  s        r   test_clipline__zero_size_rect*RectTypeTest.test_clipline__zero_size_rect  sC    .D$'D==t||DL!!,> /r   c                 n   SnS GH,  n[        SU5      nUR                  5       nUR                  5         UR                  SS5      nUR                  UR
                  4UR                  UR
                  S   S-
  UR
                  S   44UR                  UR                  4UR                  UR                  S   UR                  S   S-
  44UR                  UR                  4UR                  UR                  4UR                  UR                  4UR                  UR                  4UR
                  UR                  4UR
                  S   S-
  UR
                  S   4UR                  4UR                  UR                  4UR                  S   UR                  S   S-
  4UR                  40nUR                  5        Hl  u  pqUR                  U5      nU R                  X45        U R                  X5        US   US   4nUR                  US   US   45      nU R                  X5        Mn     GM/     g)z8Ensures clipline handles negative sized rects correctly.r   ))r   )r=  )ri  rj  r:  r    r   r   N)r   copyrZ   ru  r?   r@   r=   r>   r<   rD  r  assertNotEqualr  )	r   r  r5   rL   	norm_rectr>  rF  r  r  s	            r   !test_clipline__negative_size_rect.RectTypeTest.test_clipline__negative_size_rect  sA   6D$'D		I! ((A.H !!8#4#45%%''*Q.	0B0B10EF8 ("4"45$$((+Y-@-@-Ca-GH8 !!9#3#34%%$$7 )"2"23$$$$6 ""I$4$45''*Q.	0B0B10EF$$8 ##Y%5%56((+Y-@-@-Ca-GH$$9+I6 (1'8##}}T2 ##D4%%lB "/q!1=3C D#}}d1gtAw-?@%%lB (9K 7r   c                 0   [        SS5      nSnU H_  nU R                  [        5         UR                  U5      nSSS5        U R                  [        5         UR                  " U6 nSSS5        Ma     g! , (       d  f       N@= f! , (       d  f       M  = f)z1Ensures clipline handles invalid lines correctly.rq   rW  )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  Nr6  )r   rL   invalid_linesr  r  s        r   test_clipline__invalid_line(RectTypeTest.test_clipline__invalid_lineE  sx    FH%
 "D""9-#}}T2 . ""9-#}}d3 .-	 "-- .-s   A5B5
B	
B	c                     [        SSSS5      nSnSnUR                  X#5      n[        UR                  U-   UR                  U-   UR                  UR
                  5      nU R                  XT5        g Nr   r    r!   r"   ru   r   )r   mover%   r&   r'   r(   r$   )r   r*   move_xmove_yrw  expected_r2s         r   	test_moveRectTypeTest.test_move]  s`    Aq!VVF#166F?AEEFNAGGQXXN)r   c                     [        SSSS5      n[        U5      nSnSnUR                  X45        [        UR                  U-   UR                  U-   UR                  UR
                  5      nU R                  XR5        g ru  )r   move_ipr%   r&   r'   r(   r$   )r   r*   rw  rw  rx  ry  s         r   test_move_ipRectTypeTest.test_move_ipe  sg    Aq!!W


6"166F?AEEFNAGGQXXN)r   z=fails on pypy (but only for: bottom, right, centerx, centery)c           
         SnSnSn/ USU[        5       4PUSU[        5       4PUSUS-   [        5       4PUSUS-   [        5       4PUS	US
-   [        5       4PUSU[        5       4PUSU[        5       4PUSUS-
  [        5       4PUSUS-
  [        5       4PUSUS
-
  [        5       4PUSUS-   [        5       4PUSUS-   [        5       4PUSUS-
  [        5       4PUSUS-
  [        5       4PUSU[        5       4PUSU[        5       4PUSUS-   [        5       4PUSUS-   [        5       4PUS	US
-   [        5       4PUSU[        5       4PUSU[        5       4PUSU[        5       4PUSUS-
  [        5       4PUSUS
-
  [        5       4PUSUS-   [        5       4PUSUS-   [        5       4PUSUS-
  [        5       4PUSUS-
  [        5       4PUSU[        5       4PUSU[        5       4PUSU[        5       4PUSUS-   [        5       4PUS	US-   [        5       4PUSU[        5       4PUSU[        5       4PUSUS-
  [        5       4PUSUS-
  [        5       4PUSUS
-
  [        5       4PUSUS-   [        5       4PUSUS-   [        5       4PUSUS-
  [        5       4PUSUS-
  [        5       4Pn/ SQn/ SQnU GHx  nUu  ppX-   nU Ht  nU R                  USU 3S9   [        [        5       [        5       [        5       [        5       5      n[        XU5        U R	                  U
[        X5      5        S S S 5        Mv     U H  nU R                  USU S3S9   [        [        5       [        5       [        5       [        5       5      n[        XX45        U R	                  X4[        X5      5        S S S 5        U R                  USU S3S9   [        [        5       [        5       [        5       [        5       5      n[        XX45        U R	                  X4[        X5      5        S S S 5        M     GM{     g ! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       GM)  = f)Nr   |   iPg?g?r  r   皙?g      ?r    ggٿg      g333333gr"   r  r|  rV   rX   rW   rY   r'   r(   r&   r%   r4   r3   r:   r;   
r6   r7   r8   r9   r=   r?   r>   r@   r5   r<   r.rowname[0][1])r   subTestr   setattrr$   getattr)r   zeroposneg	data_rowssingle_value_attribute_namestuple_value_attribute_namesr  initialincexpectedother	new_valueattribute_namer  s                  r   test_set_float_values"RectTypeTest.test_set_float_valuesn  s    +
3km,+
3km,+
 3q+-0+
 3q+-0	+

 3q+-0+
 4{}-+
 4{}-+
 4;=1+
 4;=1+
 4;=1+
 1dQh.+
 1dQh.+
 2tax/+
 2tax/+
 #sKM*+
  #sKM*!+
" #sQw.#+
$ #sQw.%+
& #sQw.'+
( $[]+)+
* $[]+++
, $[]+-+
. $a//+
0 $a/1+
2 !S1Wkm,3+
4 !S1Wkm,5+
6 "cAg{}-7+
8 "cAg{}-9+
: #sKM*;+
< #sKM*=+
> #sKM*?+
@ #sQw.A+
B #sQw.C+
D $[]+E+
F $[]+G+
H $a/I+
J $a/K+
L $a/M+
N !S1Wkm,O+
P !S1Wkm,Q+
R "cAg{}-S+
T "cAg{}-U+
	Z(
$'
# C,/)G(I">\\c"^4D0E\F!#{}km[]F FI>$$Xwv/NO GF #? #>\\c"^4DC0H\I!#{}km[]F FY4FG$$h%68WX J \\c"^4DC0H\I!#{}km[]F FU4FG$$e%68WX JI #>  GF JI JIs'   AP1AQAQ1
Q
Q
Q%c                 8   Sn[         S-   [        4[         S-   [        4[         S 4[         S-
  S 4[         S-
  S 4[         S-
  S 4[         S-
  S 4[         S-
  S 4[         S-
  S 4[        S-
  [        4[        S-
  [        4[        S 4[        S-   S 4[        S-   S 4[        S-   S 4[        S	-   S 4[        S-   S 4[        S-   S 4S
SS/n/ SQn/ SQnU GH  nU H|  nUu  pxU R                  USU 3S9   [	        SSSS5      n	U(       a  U R                  [        [        XU5        O'[        XU5        U R                  U[        X5      5        S S S 5        M~     [        5       n
U H  nUu  pxU R                  USU S3S9   [	        SSSS5      n	U(       a  U R                  [        [        XXz45        O)[        XXz45        U R                  Xz4[        X5      5        S S S 5        U R                  USU S3S9   [	        SSSS5      n	U(       a  U R                  [        [        XX45        O)[        XX45        U R                  X4[        X5      5        S S S 5        M     GM     g ! , (       d  f       GM  = f! , (       d  f       N= f! , (       d  f       GM7  = f)Nr   r   r  r    ru   ?   @   A   >   )r   N)i N)i`yNr  r  r  r  r  r  )
r   r   r   r  r   r   r  r$   r  r   )r   rN   r  single_attribute_namesr  r  r  r   r  r  r  s              r   -test_set_out_of_range_number_raises_exception:RectTypeTest.test_set_out_of_range_number_raises_exception  s    \9%+t\4 \4 ]D!]D!]D!]D!\9%+t\4 \4 ]D!]D!]D!]D!+
	0"
'
# C"8"%\\c"^4D0E\F!!Q1-F))%w
  >((0OP GF #9  ME"="%\\c"^4DC0H\I!!Q1-F))%w
  G(("NGF,K J \\c"^4DC0H\I!!Q1-F))%w
  G(("NGF,K JI# #>#  GF  JI JIs'   0AI%=AI86AJ	%
I58
J	
Jc                 (   [        SSSS5      nUR                  SSSS5        U R                  SUR                  5        U R                  SUR                  5        U R                  SUR
                  5        U R                  SUR                  5        g)z)Test update with 4 int values(x, y, w, h)r   r   r    r!   r"   Nr   updater$   r%   r&   r'   r(   r   rL   s     r   test_update_XYWidthHeight&RectTypeTest.test_update_XYWidthHeightH  st    Aq!QAq!QDII&DHH%DJJ'DKK(r   c                 $   [        SSSS5      nUR                  SS5        U R                  SUR                  5        U R                  SUR                  5        U R                  SUR
                  5        U R                  SUR                  5        g)	z)Test update with 2 tuples((x, y), (w, h))r   r   r.   r/   r    r!   r"   Nr  r  s     r   test_update__TopLeftSize%RectTypeTest.test_update__TopLeftSizeR  sp    Aq!QFF#DII&DHH%DJJ'DKK(r   c                 *   [        SSSS5      n/ SQnUR                  U5        U R                  SUR                  5        U R                  SUR                  5        U R                  SUR
                  5        U R                  SUR                  5        g)zTest update with listr   r   r   r    r!   r"   r    r!   r"   Nr  r   rL   rect2s      r   test_update__ListRectTypeTest.test_update__List\  ss    Aq!QEDII&DHH%DJJ'DKK(r   c                 >   [        SSSS5      n[        SSSS5      nUR                  U5        U R                  SUR                  5        U R                  SUR                  5        U R                  SUR
                  5        U R                  SUR                  5        g)z"Test update with other rect objectr   r   r    r!   r"   Nr  r  s      r   test_update__RectObject$RectTypeTest.test_update__RectObjectg  s~    Aq!QQ1a EDII&DHH%DJJ'DKK(r   c                     [        SSSS5      n[        SSSS5      nU R                  [        SSSS5      UR                  U5      5        g Nr   r    rK  r"   r  r   r$   unionr   r  rw  s      r   
test_unionRectTypeTest.test_unionr  sE    !Q1"b!Qb"a+RXXb\:r   c                 r    [        SSSS5      nU R                  XR                  [        U5      5      5        g r   r  r  s     r   test_union__with_identical_Rect,RectTypeTest.test_union__with_identical_Rectw  s-    !Q1XXd2h/0r   c                     [        SSSS5      n[        SSSS5      nUR                  U5        U R                  [        SSSS5      U5        g r  )r   union_ipr$   r  s      r   test_union_ipRectTypeTest.test_union_ip{  sH    !Q1"b!Q
Bb"a+R0r   c                     [        SSSS5      n[        SSSS5      n[        SSSS5      nUR                  X#/5      nU R                  [        SSSS5      U5        g Nr   r   rK  r    r  r   unionallr$   r   r  rw  r3r4s        r   test_unionallRectTypeTest.test_unionall  s]    !Q1"b!Q!Q1[[""b"a+R0r   c                     / SQn/ SQnSS/nXU4 H>  nU R                  [        5         [        SSSS5      R                  U5        SSS5        M@     g! , (       d  f       MR  = f)z;Ensures unionall correctly handles invalid rect parameters.)r   g333333?r    gffffff
@)abr  Nr   r   )r   r   r   r  )r   numbersstrsnonesinvalid_rectss        r   "test_unionall__invalid_rect_format/RectTypeTest.test_unionall__invalid_rect_format  sZ    "t%U3M""9-Q1a ))-8 .- 4--s   A
A#	c                     [        SSSS5      n[        SSSS5      n[        SSSS5      nUR                  X#/S9nU R                  [        SSSS5      U5        g )Nr   r   rK  r    rL   r  r  r  s        r   test_unionall__kwargs"RectTypeTest.test_unionall__kwargs  s_    !Q1"b!Q!Q1[[rh['b"a+R0r   c                     [        SSSS5      n[        SSSS5      n[        SSSS5      nUR                  X#/5        U R                  [        SSSS5      U5        U R                  UR                  / 5      S L 5        g r  r   unionall_ipr$   rh  r   r  rw  r  s       r   test_unionall_ipRectTypeTest.test_unionall_ip  sw    !Q1"b!Q!Q1
x b"a+R0 	r*d23r   c                     [        SSSS5      n[        SSSS5      n[        SSSS5      nUR                  X#/S9  U R                  [        SSSS5      U5        U R                  UR                  / 5      S L 5        g )Nr   r   rK  r    rectsr  r  r  s       r   test_unionall_ip__kwargs%RectTypeTest.test_unionall_ip__kwargs  sy    !Q1"b!Q!Q1
bX&b"a+R0 	r*d23r   c                 2   [        SSSS5      nU R                  UR                  [        SSSS5      5      S5        U R                  UR                  [        SSSS5      5      S5        U R                  UR                  [        UR                  UR
                  SS5      5      S5        U R                  UR                  [        UR                  S-   UR                  S-   UR                  S-
  UR                  S-
  5      5      S	5        U R                  UR                  [        UR                  S-
  UR                  S-
  UR                  S-   UR                  S-   5      5      S
5        U R                  UR                  [        U5      5      S5        U R                  UR                  [        UR                  UR
                  SS5      5      S5        U R                  UR                  [        UR                  UR
                  SS5      5      S5        g )Nr   r    r!   r"   r   z)r1 does not collide with Rect(0, 0, 2, 3)z!r1 collides with Rect(0, 0, 1, 2)z0r1 collides with Rect(r1.right, r1.bottom, 2, 2)zSr1 does not collide with Rect(r1.left + 1, r1.top + 1, r1.width - 2, r1.height - 2)zSr1 does not collide with Rect(r1.left - 1, r1.top - 1, r1.width + 2, r1.height + 2)z*r1 does not collide with an identical rectz0r1 collides with Rect(r1.right, r1.bottom, 0, 0)z0r1 collides with Rect(r1.right, r1.bottom, 1, 1))
r   rh  colliderectrj  r3   r4   r%   r&   r'   r(   r  s     r   test_colliderectRectTypeTest.test_colliderect  s   !Q1NN41a+,7	
 	NN41a+,.Q	
 	NN4"))Q:;>	
 	NN4!RVVaZAryyST}UV-	

 	NN4!RVVaZAryyST}UV-	

 	NN48$&R	
 	NN4"))Q:;>	
 	NN4"))Q:;>	
r   c                    [        SSSS5      n[        SSSS5      nS	n[        SSSS5      n " S
 S[         5      n " S S[         5      nU" SSSS5      nU" SSSS5      nU R                  Xr5        U R                  X5        XX4U/n	U	R                  U5        U	R                  U5        U	R                  U5        U	R                  U5        U R	                  [
        U	R                  U5        g)z%check to see how the rect uses __eq__r   r    r!   r"   ru   r   r   r  )ru   r   r   r  c                        \ rS rSrS rS rSrg)$RectTypeTest.testEquals.<locals>.fooi  c                 0    [        U 5      [        U5      :H  $ r
   idr   r  s     r   __eq__+RectTypeTest.testEquals.<locals>.foo.__eq__      $x2e9,,r   c                 0    [        U 5      [        U5      :g  $ r
   r  r  s     r   __ne__+RectTypeTest.testEquals.<locals>.foo.__ne__  r  r   r   N)__name__
__module____qualname____firstlineno__r  r  __static_attributes__r   r   r   foor    s    --r   r  c                       \ rS rSrSrg)%RectTypeTest.testEquals.<locals>.foo2i  r   N)r  r  r  r  r  r   r   r   foo2r    s    r   r  N)r   rl  r$   remover   
ValueError)
r   r  rw  r  r  r  r  r5r6	rect_lists
             r   
testEqualsRectTypeTest.testEquals  s    !Q1"b"b!"b"b!	-$ 	-	4 	 RR "b"b!B# 	 RR(	 	*i&6&6;r   c                    [        SSSS5      nSUR                  5       4nS[        SSSS5      4nS[        SSSS5      4nS[        S	S	SS5      4n[        X#XE45      nX#4nUR                  5        VV	s0 s H  u  p[	        U	5      U_M     n
nn	[	        S
 U 5       5      nS H5  nU(       a  UnUnOUnU
nUR                  X5      nU R                  X5        M7     gs  sn	nf )z'Ensures collidedict detects collisions.r   ru   	collide 1	collide 2r  no collide 1<   no collide 2F   c              3   @   #    U  H  u  p[        U5      U4v   M     g 7fr
   r  rZ  kvs      r   r[  0RectTypeTest.test_collidedict.<locals>.<genexpr>       !P<ODA58Q-<O   TFNr   rk  dictrD  r  collidedictassertInr   rL   collide_item1collide_item2no_collide_item1no_collide_item2rect_valuesvalue_collide_itemsr  r  	rect_keyskey_collide_items
use_valuesexpected_itemsdcollide_items                   r   test_collidedictRectTypeTest.test_collidedict  s   Aq"b!$diik2$d1aR&89*DRR,@A*DRR,@A +;N
  -< .9->->-@A-@TQU1Xq[-@	A!!P<O!PP'J!4!2++A:L MM,7 ( Bs   4Cc                 n   [        SSSS5      nS[        SSSS5      4nS[        SSSS5      4nS[        SSSS5      4n[        X#U45      nUR                  5        VVs0 s H  u  pg[        U5      U_M     nnnS	 H0  n	U	(       a  UOUn
UR	                  X5      nU R                  U5        M2     g
s  snnf )z4Ensures collidedict returns None when no collisions.r   ru   r	  rF   r  r
  no collide 3r  r  Nr   r  rD  r  r  assertIsNoner   rL   r  r  no_collide_item3r  r  r  r!  r#  r%  r&  s               r   test_collidedict__no_collision+RectTypeTest.test_collidedict__no_collision  s    Aq"b!*DRR,@A*DRR,@A*DRR,@A ,@PQR .9->->-@A-@TQU1Xq[-@	A'J)yA++A:Ll+ ( B   B1c           	      B   [        SSSS5      n[        SSSS5      nSU4nS[        SSSS5      4nS[        SSSS5      4nS	[        S
S
SS5      4n[        XEU45      nUR                  5        VV	s0 s H  u  p[        U	5      U_M     n
nn	S H  n[	        X+[        X5      5        S Hj  nU(       a  Un[        U5      nO[        US   5      US   4n[        U
5      nUR                  U45        UR                  X5      nU R                  X5        Ml     M     gs  sn	nf )z@Ensures collidedict works correctly for rects that barely touch.r   ru   r   r  r	  rF   r  r
  r*  r  r6   r7   r9   r8   r  N)	r   r  rD  r  r  r  r  r  r  )r   rL   collide_rectr  r  r  r.  no_collide_rect_valuesr  r  no_collide_rect_keysattrr#  expected_itemr%  r&  s                   r   !test_collidedict__barely_touching.RectTypeTest.test_collidedict__barely_touching+  sB   Aq"b!Aq!Q'$l3*DRR,@A*DRR,@A*DRR,@A "&1AB"

 9O8T8T8VW8Va!8VW IDL(;<+
$1M34A%*=+;%<mA>N$OM12A-)*#//>%%lB , I  Xs   1Dc           	         [        SSSS5      n[        SSSS5      n[        SSSS5      n[        SSSS5      n[        SSSS5      nSUR                  5       4nSUR                  5       4nSUR                  5       4nSUR                  5       4n	SUR                  5       4n
S	[        SSS
S
5      4nS[        SSSS5      4n[        UUUU	U
UU45      nUR                  5        VVs0 s H  u  p[	        U5      U_M     nnnS H?  nU(       a  UOUnUUUUU4 H&  nUR                  UU5      nU R                  U5        M(     MA     gs  snnf )zqEnsures collidedict works correctly with zero sized rects.

There should be no collisions with zero sized rects.
r   r   r  r	  r  r*  no collide 4no collide 5no collide 6ru   no collide 7r    r  N)r   rk  r  rD  r  r  r,  )r   
zero_rect1
zero_rect2
zero_rect3
zero_rect4
zero_rect5r  r  r.  no_collide_item4no_collide_item5no_collide_item6no_collide_item7r  r  r  r!  r#  r%  	zero_rectr&  s                        r   "test_collidedict__zero_sized_rects/RectTypeTest.test_collidedict__zero_sized_rectsP  s   
 !Q1%
!Q1%
!Q1%
!QA&
!Q2&
*JOO,=>*JOO,=>*JOO,=>*JOO,=>*JOO,=>*DAr2,>?*DAq!,<=        

 .9->->-@A-@TQU1Xq[-@	A'J)yA 	  )44Q
C!!,/ ( Bs   &Ec                 n   [        SSSS5      nS[        SSSS5      4nS[        SSSS5      4nS[        SSSS5      4n[        X#U45      nUR                  5        VVs0 s H  u  pg[        U5      U_M     nnnS H0  n	U	(       a  UOUn
UR	                  X5      nU R                  U5        M2     gs  snnf )	zyEnsures collidedict works correctly with zero sized rects as args.

There should be no collisions with zero sized rects.
r   ru   r	  r   r  r*  r  Nr+  r-  s               r   *test_collidedict__zero_sized_rects_as_args7RectTypeTest.test_collidedict__zero_sized_rects_as_args  s    
 Aq"b!*DAq!,<=*DAq!,<=*DAq!,<= ,@PQR .9->->-@A-@TQU1Xq[-@	A'J)yA++A:Ll+ ( Br1  c                    [        SSSS5      nSUR                  5       4nS[        SSSS5      4nS[        SSSS5      4n[        X#U45      nX#4nUR                  5        VVs0 s H  u  px[	        U5      U_M     n	nn[	        S U 5       5      n
S	 H5  nU(       a  UnUnOU
nU	nUR                  X5      nU R                  X5        M7     g
s  snnf )z>Ensures collidedict works correctly with negative sized rects.r   r  r  r  r   ru   r	  c              3   @   #    U  H  u  p[        U5      U4v   M     g 7fr
   r  r  s      r   r[  FRectTypeTest.test_collidedict__negative_sized_rects.<locals>.<genexpr>  r  r  r  Nr  )r   neg_rectr  r  r  r  r   r  r  r!  r"  r#  collide_itemsr%  r&  s                  r   &test_collidedict__negative_sized_rects3RectTypeTest.test_collidedict__negative_sized_rects  s    1b"%$hmmo6$d1aR&89*DAr2,>? M:JKL,< .9->->-@A-@TQU1Xq[-@	A!!P<O!PP'J 3 1#//>L MM,6 ( Bs   $Cc                    [        SSSS5      nS[        SSSS5      4nS[        SSSS5      4nS[        SSSS5      4n[        X#U45      nUR                  5        VVs0 s H  u  pg[        U5      U_M     nnnS HF  n	U	(       a  Un
UnO[        US   5      US   4n
UnUR	                  X5      nU R                  X5        MH     g	s  snnf )
zBEnsures collidedict works correctly with negative sized rect args.r   ru   r  r   r  r	  r  r  N)r   r  rD  r  r  r  )r   rL   r  r  r  r  r  r  r!  r#  r8  r%  r&  s                r   .test_collidedict__negative_sized_rects_as_args;RectTypeTest.test_collidedict__negative_sized_rects_as_args  s    Aq"b!$d1aR&89*DAr1,=>*DAq",=> M=MNO .9->->-@A-@TQU1Xq[-@	A'J -!&}Q'7!8-:J K++A:L!!,> ( Bs   Cc                    [        SSSS5      nSUR                  5       4n[        US   5      US   4nS H=  nU(       a  UOUnU R                  [        5         UR                  XT5      nSSS5        M?     g! , (       d  f       MQ  = f)z>Ensures collidedict correctly handles invalid dict parameters.r   ru   collider   r  N)r   rk  r  r   r   r  r   rL   invalid_value_dictinvalid_key_dictr#  r%  r&  s          r   %test_collidedict__invalid_dict_format2RectTypeTest.test_collidedict__invalid_dict_format  s    Aq"b!'5 !3A!679KA9NN'J&0"6FA""9-#//> .- ( .-   A88
B	c                     [        SSSS5      n[        U5      S0nU R                  [        5         UR	                  US5      nSSS5        g! , (       d  f       g= f)z@Ensures collidedict correctly handles dicts with invalid values.r   ru   rZ  r   N)r   r  r   r   r  )r   rL   r!  r&  s       r   +test_collidedict__invalid_dict_value_format8RectTypeTest.test_collidedict__invalid_dict_value_format  sL    Aq"b!4[),	y)++Iq9L *))   A
Ac                     [        SSSS5      nSUR                  5       0nU R                  [        5         UR	                  U5      nSSS5        g! , (       d  f       g= f)z>Ensures collidedict correctly handles dicts with invalid keys.r   ru   rZ  N)r   rk  r   r   r  )r   rL   r  r&  s       r   )test_collidedict__invalid_dict_key_format6RectTypeTest.test_collidedict__invalid_dict_key_format  sL    Aq"b! $))+.y)++K8L *))   A
Ac                     [        SSSS5      n0 nSUS4 H2  nU R                  [        5         UR                  X#5      nSSS5        M4     g! , (       d  f       MF  = f)zDEnsures collidedict correctly handles invalid use_values parameters.r   r   Nr  )r   r   r   r  )r   rL   r%  invalid_paramr&  s        r   +test_collidedict__invalid_use_values_format8RectTypeTest.test_collidedict__invalid_use_values_format  sT    Aq!Q"As^M""9-#//A .- ,--   A
A	c                    [        SSSS5      nSUR                  5       4nS[        SSSS5      4nS[        SSSS5      4nS[        S	S	SS5      4n[        X#XE45      nX#4nUR                  5        VV	s0 s H  u  p[	        U	5      U_M     n
nn	[	        S
 U 5       5      nS H3  nU(       a  UnUnOUnU
nUR                  XS9nU R                  X5        M5     gs  sn	nf )z=Ensures collidedict detects collisions via keyword arguments.r   ru   r  r  r  r	  r
  r  r  c              3   @   #    U  H  u  p[        U5      U4v   M     g 7fr
   r  r  s      r   r[  8RectTypeTest.test_collidedict__kwargs.<locals>.<genexpr>	  r  r  r  	rect_dictvaluesNr  r  s                   r   test_collidedict__kwargs%RectTypeTest.test_collidedict__kwargs  s   Aq"b!$diik2$d1aR&89*DRR,@A*DRR,@A +;N
  -< .9->->-@A-@TQU1Xq[-@	A!!P<O!PP'J!4!2++a+KL MM,7 ( Bs   4Cc                    [        SSSS5      nSUR                  5       4nS[        SSSS5      4nS[        SSSS5      4nS	[        S
S
SS5      4n[        X#XE45      nX#/nUR                  5        VV	s0 s H  u  p[	        U	5      U_M     n
nn	U VV	s/ s H  u  p[	        U	5      U4PM     nnn	S H5  nU(       a  UnUnOUnU
nUR                  X5      nU R                  X5        M7     gs  sn	nf s  sn	nf )z*Ensures collidedictall detects collisions.r   ru   r  r  r  r	  r
  r   r  r  r  Nr   rk  r  rD  r  collidedictallr   r   rL   r  r  r  r  r  r   r  r  r!  r"  r#  r$  r%  rS  s                   r   test_collidedictall RectTypeTest.test_collidedictall	  s   Aq"b!$diik2$d1aR&89*DRR,@A*DRR,@A +;N
  -< .9->->-@A-@TQU1Xq[-@	A7JK7JtqeAh]7JK'J!4!2 //>M""=A ( BKs   4C,C2c                 r   [        SSSS5      nS[        SSSS5      4nS[        SSSS5      4nS[        S	S	SS5      4n[        X#U45      nUR                  5        VVs0 s H  u  pg[        U5      U_M     nnn/ n	S
 H0  n
U
(       a  UOUnUR	                  X5      nU R                  X5        M2     gs  snnf )z@Ensures collidedictall returns an empty list when no collisions.r   ru   r	  rF   r   r  r
  r*  r  r  Nr   r  rD  r  rx  r   r   rL   r  r  r.  r  r  r  r!  r$  r#  r%  rS  s                r   !test_collidedictall__no_collision.RectTypeTest.test_collidedictall__no_collision5	  s    Aq"b!*DRR,@A*DRR,@A*DRR,@A ,@PQR .9->->-@A-@TQU1Xq[-@	A'J)yA //>M""=A (	 B   B3c           	      D   [        SSSS5      n[        SSSS5      nSU4nS[        SSSS5      4nS[        S	S	SS5      4nS
[        SSSS5      4n[        XEU45      nUR                  5        VV	s0 s H  u  p[        U	5      U_M     n
nn	S H  n[	        X+[        X5      5        S Hk  nU(       a  U/n[        U5      nO[        US   5      US   4/n[        U
5      nUR                  U5        UR                  X5      nU R                  X5        Mm     M     gs  sn	nf )zCEnsures collidedictall works correctly for rects that barely touch.r   ru   r   r  r	  rF   r   r  r
  r*  r  r3  r  N)	r   r  rD  r  r  r  r  rx  r   )r   rL   r4  r  r  r  r.  r5  r  r  r6  r7  r#  r$  r%  rS  s                   r   $test_collidedictall__barely_touching1RectTypeTest.test_collidedictall__barely_touchingL	  sD   Aq"b!Aq!Q'$l3*DRR,@A*DRR,@A*DRR,@A "&1AB"

 9O8T8T8VW8Va!8VW IDL(;<+
&3_N34A',]1-='>a@P&Q%RN12A( $ 3 3A B&&}E , I  Xs   1Dc           	         [        SSSS5      n[        SSSS5      n[        SSSS5      n[        SSSS5      n[        SSSS5      nSUR                  5       4nSUR                  5       4nSUR                  5       4nSUR                  5       4n	SUR                  5       4n
S	[        SSS
S
5      4nS[        SSSS5      4n[        UUUU	U
UU45      nUR                  5        VVs0 s H  u  p[	        U5      U_M     nnn/ nS H@  nU(       a  UOUnUUUUU4 H'  nUR                  UU5      nU R                  UU5        M)     MB     gs  snnf )ztEnsures collidedictall works correctly with zero sized rects.

There should be no collisions with zero sized rects.
r    r   rK  r	  r  r*  r<  r=  r>  ru   r?  r  Nrw  )r   r@  rA  rB  rC  rD  r  r  r.  rE  rF  rG  rH  r  r  r  r!  r$  r#  r%  rI  rS  s                         r   %test_collidedictall__zero_sized_rects2RectTypeTest.test_collidedictall__zero_sized_rectsq	  s   
 !Q1%
!Q1%
!Q1%
!QA&
!Q2&
*JOO,=>*JOO,=>*JOO,=>*JOO,=>*JOO,=>*DAr2,>?*DAq!,<=        

 .9->->-@A-@TQU1Xq[-@	A'J)yA 	 !* 8 8J G&&}nE (	 Bs   &E
c                 r   [        SSSS5      nS[        SSSS5      4nS[        SSSS5      4nS[        SSSS5      4n[        X#U45      nUR                  5        VVs0 s H  u  pg[        U5      U_M     nnn/ n	S H0  n
U
(       a  UOUnUR	                  X5      nU R                  X5        M2     gs  snnf )	z|Ensures collidedictall works correctly with zero sized rects
as args.

There should be no collisions with zero sized rects.
r   r   r	  r    r  r*  r  Nr}  r~  s                r   -test_collidedictall__zero_sized_rects_as_args:RectTypeTest.test_collidedictall__zero_sized_rects_as_args	  s     Aq"b!*DAq!,<=*DAq!,<=*DAq!,<= ,@PQR .9->->-@A-@TQU1Xq[-@	A'J)yA //>M""=A (	 Br  c                    [        SSSS5      nSUR                  5       4nS[        SSSS5      4nS[        SSSS5      4n[        X#U45      nX#/nUR                  5        VVs0 s H  u  px[	        U5      U_M     n	nnU VVs/ s H  u  px[	        U5      U4PM     n
nnS H5  nU(       a  UnUnOU
nU	nUR                  X5      nU R                  X5        M7     g	s  snnf s  snnf )
zAEnsures collidedictall works correctly with negative sized rects.r    rK  r  r  r   r   r	  r  Nrw  )r   rR  r  r  r  r  r   r  r  r!  r"  r#  r$  r%  rS  s                  r   )test_collidedictall__negative_sized_rects6RectTypeTest.test_collidedictall__negative_sized_rects	  s    1b"%$hmmo6$d1aR&89*DAr2,>? M:JKL,< .9->->-@A-@TQU1Xq[-@	A7JK7JtqeAh]7JK'J!4!2$33ABM""=A ( BKs   $CC"c                    [        SSSS5      nS[        SSSS5      4nS[        SSSS5      4nS[        SSSS5      4n[        X#U45      nU/nUR                  5        VVs0 s H  u  px[        U5      U_M     n	nnU VVs/ s H  u  px[        U5      U4PM     n
nnS H5  nU(       a  UnUnOU
nU	nUR	                  X5      nU R                  X5        M7     g	s  snnf s  snnf )
zFEnsures collidedictall works correctly with negative sized rect
args.
r   ru   r  r   r  r	  r  r  Nr}  )r   rL   r  r  r  r  r   r  r  r!  r"  r#  r$  r%  rS  s                  r   1test_collidedictall__negative_sized_rects_as_args>RectTypeTest.test_collidedictall__negative_sized_rects_as_args	  s    Aq"b!$d1aR&89*DAr1,=>*DAq",=> M=MNO,o .9->->-@A-@TQU1Xq[-@	A7JK7JtqeAh]7JK'J!4!2 //>M""=A ( BKs   "CC c                    [        SSSS5      nSUR                  5       4n[        US   5      US   4nS H=  nU(       a  UOUnU R                  [        5         UR                  XT5      nSSS5        M?     g! , (       d  f       MQ  = f)zAEnsures collidedictall correctly handles invalid dict parameters.r   ru   rZ  r   r  N)r   rk  r  r   r   rx  r[  s          r   (test_collidedictall__invalid_dict_format5RectTypeTest.test_collidedictall__invalid_dict_format	  s    Aq"b!'5 !3A!679KA9NN'J&0"6FA""9-#221A .- ( .-r`  c                     [        SSSS5      n[        U5      S0nU R                  [        5         UR	                  US5      nSSS5        g! , (       d  f       g= f)zCEnsures collidedictall correctly handles dicts with invalid values.r   ru   rZ  r   N)r   r  r   r   rx  )r   rL   r!  rS  s       r   .test_collidedictall__invalid_dict_value_format;RectTypeTest.test_collidedictall__invalid_dict_value_format
  sL    Aq"b!4[),	y) //	1=M *))rd  c                     [        SSSS5      nSUR                  5       0nU R                  [        5         UR	                  U5      nSSS5        g! , (       d  f       g= f)zAEnsures collidedictall correctly handles dicts with invalid keys.r   ru   rZ  N)r   rk  r   r   rx  )r   rL   r  rS  s       r   ,test_collidedictall__invalid_dict_key_format9RectTypeTest.test_collidedictall__invalid_dict_key_format
  sL    Aq"b! $))+.y) //<M *))rh  c                     [        SSSS5      n0 nSUS4 H2  nU R                  [        5         UR                  X#5      nSSS5        M4     g! , (       d  f       MF  = f)zHEnsures collidedictall correctly handles invalid use_values
parameters.
r   r   Nr  )r   r   r   rx  )r   rL   r%  rj  rS  s        r   .test_collidedictall__invalid_use_values_format;RectTypeTest.test_collidedictall__invalid_use_values_format
  sV     Aq!Q"As^M""9- $ 3 3A E .- ,--rm  c                    [        SSSS5      nSUR                  5       4nS[        SSSS5      4nS[        SSSS5      4nS	[        S
S
SS5      4n[        X#XE45      nX#/nUR                  5        VV	s0 s H  u  p[	        U	5      U_M     n
nn	U VV	s/ s H  u  p[	        U	5      U4PM     nnn	S H3  nU(       a  UnUnOUnU
nUR                  XS9nU R                  X5        M5     gs  sn	nf s  sn	nf )z@Ensures collidedictall detects collisions via keyword arguments.r   ru   r  r  r  r	  r
  r   r  r  r  rq  Nrw  ry  s                   r   test_collidedictall__kwargs(RectTypeTest.test_collidedictall__kwargs!
  s   Aq"b!$diik2$d1aR&89*DRR,@A*DRR,@A +;N
  -< .9->->-@A-@TQU1Xq[-@	A7JK7JtqeAh]7JK'J!4!2 //!/OM""=A ( BKs   4C*C0c                    [        SSSS5      n[        SSSS5      [        SSSS5      [        SSSS5      /nU R                  UR                  U5      S5        [        SSSS5      S/nU R                  UR                  U5      S5        g )Nr   ru   rF   r  r=  rG   rG   r"   r"   r  r   r$   collidelistr   r*   lfs       r   test_collidelistRectTypeTest.test_collidelist@
  s     Ar2"b!QaB!3T"b!Q5GHq)1-"b!Q!12q)2.r   c                    [        SSSS5      n[        SSSS5      [        SSSS5      [        SSSS5      /nU R                  UR                  U5      S5        [        SSSS5      S/nU R                  UR                  US9S5        g )	Nr   ru   rF   r  r=  r  r  r  r  r  s       r   test_collidelist__kwargs%RectTypeTest.test_collidelist__kwargsR
  s     Ar2"b!QaB!3T"b!Q5GHq)1-"b!Q!12Q/4r   c           	      J   [        SSSS5      n[        SSSS5      [        SSSS5      [        SSSS5      [        SSSS5      /nU R                  UR                  U5      / SQ5        [        SSSS5      [        SSSS5      /nU R                  UR                  U5      5        g 	Nr   ru   r  r=  r    r   r   r!   rF   r   r   r$   collidelistallrj  r  s       r   test_collidelistall RectTypeTest.test_collidelistallc
  s     Ar2 Ar2Ar2RAAq!	
 	))!,i8"b!Qb"a!34))!,-r   c           	          [        SSSS5      n[        SSSS5      [        SSSS5      [        SSSS5      [        SSSS5      /nU R                  UR                  U5      / 5        g )	Nr   ru   p   rF   r  r=  rj  r    )r   r$   r  )r   r*   r  s      r   &test_collidelistall_returns_empty_list3RectTypeTest.test_collidelistall_returns_empty_listz
  sp    Ar2 aR QBRAaA	
 	))!,b1r   c                     [        SSSS5      n/ SQnU R                  UR                  U5      / SQ5        SS/nU R                  UR                  U5      5        g )Nr   ru   r   r   ru   ru   r  r  ru   ru   r=  r=  r   r   r    r    r   r   r  rF   rF   r   r   r   r   r  r  r  r  s       r   "test_collidelistall_list_of_tuples/RectTypeTest.test_collidelistall_list_of_tuples
  sY    Ar2
 	))!,i8^,))!,-r   c                     [        SSSS5      n/ SQnU R                  UR                  U5      / SQ5        SS/nU R                  UR                  U5      5        g )Nr   ru   )r   r   ru   ru   r  r  r  ))r=  r=  r  )r5  r  r  )rF   rF   r  rC  r  r  r  s       r   &test_collidelistall_list_of_two_tuples3RectTypeTest.test_collidelistall_list_of_two_tuples
  sZ    Ar2
 	))!,i8!34))!,-r   c                     [        SSSS5      n/ SQ/ SQ/ SQ/ SQ/nU R                  UR                  U5      / SQ5        / SQ/ S	Q/nU R                  UR                  U5      5        g )
Nr   ru   r  r  r  r  r  r  r  r  r  s       r   !test_collidelistall_list_of_lists.RectTypeTest.test_collidelistall_list_of_lists
  sg    Ar2 	
 	))!,i8^,))!,-r   c                       \ rS rSrS rSrg)%RectTypeTest._ObjectWithRectAttributei
  c                     Xl         g r
   r  r)   s     r   __init__.RectTypeTest._ObjectWithRectAttribute.__init__
  s    Ir   r  Nr  r  r  r  r  r  r   r   r   _ObjectWithRectAttributer  
  s    	r   r  c                        \ rS rSrS rS rSrg)-RectTypeTest._ObjectWithCallableRectAttributei
  c                     Xl         g r
   _rectr)   s     r   r  6RectTypeTest._ObjectWithCallableRectAttribute.__init__
      Jr   c                     U R                   $ r
   r  r   s    r   rL   2RectTypeTest._ObjectWithCallableRectAttribute.rect
  s    ::r   r  N)r  r  r  r  r  rL   r  r   r   r    _ObjectWithCallableRectAttributer  
  s    		r   r  c                   *    \ rS rSrS r\S 5       rSrg)$RectTypeTest._ObjectWithRectPropertyi
  c                     Xl         g r
   r  r)   s     r   r  -RectTypeTest._ObjectWithRectProperty.__init__
  r  r   c                     U R                   $ r
   r  r  s    r   rL   )RectTypeTest._ObjectWithRectProperty.rect
  s    ::r   r  N)r  r  r  r  r  propertyrL   r  r   r   r   _ObjectWithRectPropertyr  
  s    	 
	 
	r   r  c                       \ rS rSrS rSrg)-RectTypeTest._ObjectWithMultipleRectAttributei
  c                 (    Xl         X l        X0l        g r
   rect1r  rect3r  s       r   r  6RectTypeTest._ObjectWithMultipleRectAttribute.__init__
  s    JJJr   r  Nr  r   r   r    _ObjectWithMultipleRectAttributer  
  s    	r   r  c                    [        SSSS5      nU R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /nU R                  UR                  U5      / SQ5        U R                  [        SSSS5      5      U R                  [        SSSS5      5      /nU R	                  UR                  U5      5        g r  )r   r  r$   r  rj  r  s       r   6test_collidelistall_list_of_object_with_rect_attributeCRectTypeTest.test_collidelistall_list_of_object_with_rect_attribute
  s    Ar2 ))$q!R*<=))$q!R*<=))$r2q!*<=))$q!Q*:;	
 	))!,i8 ))$r2q!*<=))$r2q!*<=
 	))!,-r   c                    [        SSSS5      nU R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /nU R                  UR                  U5      / SQ5        U R                  [        SSSS5      5      U R                  [        SSSS5      5      /nU R	                  UR                  U5      5        g r  )r   r  r$   r  rj  r  s       r   ?test_collidelistall_list_of_object_with_callable_rect_attributeLRectTypeTest.test_collidelistall_list_of_object_with_callable_rect_attribute
  s    Ar2 11$q!R2DE11$q!R2DE11$r2q!2DE11$q!Q2BC	
 	))!,i8 11$r2q!2DE11$r2q!2DE
 	))!,-r   c                 v   [        SSSS5      nU R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      /nU R                  UR	                  U5      / SQ5        U R                  [        SSSS5      5      U R                  [        SSSS5      5      /nU R                  UR	                  U5      5        g r  )r   r  r  r$   r  rj  r  s       r   Ztest_collidelistall_list_of_object_with_callable_rect_returning_object_with_rect_attributegRectTypeTest.test_collidelistall_list_of_object_with_callable_rect_returning_object_with_rect_attribute
  s2    Ar2 11--d1aR.@A 11--d1aR.@A 11--d2r1a.@A 11--d1aA.>?
 	))!,i8 11$r2q!2DE11$r2q!2DE
 	))!,-r   c                    [        SSSS5      nU R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /nU R                  UR                  U5      / SQ5        U R                  [        SSSS5      5      U R                  [        SSSS5      5      /nU R	                  UR                  U5      5        g r  )r   r  r$   r  rj  r  s       r   5test_collidelistall_list_of_object_with_rect_propertyBRectTypeTest.test_collidelistall_list_of_object_with_rect_property  s    Ar2 ((aB);<((aB);<((b"a);<((aAq)9:	
 	))!,i8 ((b"a);<((b"a);<
 	))!,-r   c           	      F   [        SSSS5      n[        SSSS5      [        SSSS5      [        SSSS5      [        SSSS5      /nU R                  UR                  U5      / SQ5        [        SSSS5      [        SSSS5      /nU R                  UR                  US	95        g )
Nr   ru   r  r=  r    r  rF   r   r  r  r  s       r   test_collidelistall__kwargs(RectTypeTest.test_collidelistall__kwargs  s     Ar2 Ar2Ar2RAAq!	
 	))!,i8"b!Qb"a!34)))23r   c                    [        SSSS5      n[        SSSS5      [        SSSS5      /nU R                  [        SSSS5      [        SSSS5      [        S	S
SS5      5      U R                  [        SSSS5      [        SSSS5      [        S	S
SS5      5      /nUR                  U5        UR                  US S9  UR                  US S9  U R                  [        UR                  U5        g )Nr   ru   r    r!   r"   r   r   r  rG   rI   ,    keyc                     U R                   $ r
   r  os    r   re  @RectTypeTest.test_collideobjects_call_variants.<locals>.<lambda>;  s    r   )r   r  collideobjectsr   r   r   r*   r  objectss       r   !test_collideobjects_call_variants.RectTypeTest.test_collideobjects_call_variants+  s    Ar2aAq!4BB#7811Q1a $r2r2"6S#sC8P 11Q1a $r2r2"6S#sC8P	
 	
	D)	&78)Q%5%5w?r   c                 "   [        SSSS5      n[        SSSS5      [        SSSS5      [        SSSS5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      // SQ/ SQ/ SQ/ S	Q/ S
Q/[        SSSS5      U R                  [        SSSS5      5      S
//	nU HW  nU R	                  US   R
                  R                  S9   UR                  U5      nU R                  XCS   5        S S S 5        MY     [        SSSS5      [        SSSS5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      /SS/SS// SQ/ SQ/[        SSSS5      / SQ//	nU HV  nU R	                  US   R
                  R                  S S9   UR                  U5      nU R                  US 5        S S S 5        MX     g ! , (       d  f       GM  = f! , (       d  f       M}  = f)Nr   ru   rF   r  r"   )r  r  r"   r"   r   r   )r  r  )r"   r"   r  r  r  r  r   typerG   r  r  ))rG   rG   r  r  r  )	r   r  r  r  r  	__class__r  r	  r$   )r   r*   types_to_testr  r  r  s         r   test_collideobjects_without_key,RectTypeTest.test_collideobjects_without_key>  s   Ar2"b!QaB!3T!Q15EF--d2r1a.@A--d1aR.@A--d1aA.>? ,,T"b!Q-?@,,T!QB-?@,,T!Q1-=> 55d2r1a6HI55d1aR6HI55d1aA6FG 5511$r2q!2DE 5511$q!R2DE 5511$q!Q2BC
 ;F^\:RQ"--d1aR.@A?$
L A1Q4>>#:#:;))!,  1.	 <;  "b!Qc31!56--d2r1a.@A--d3Q.BC
 ,,T"b!Q-?@,,T#sAq-AB
 55d2r1a6HI55d3Q6JK
 5511$r2q!2DE 5511$sCA2FG	 -.!56-."b!Q!123
8 A1Q4>>#:#:TJ))!,  .	 KJ E <;F KJs    &O,;$O?,
O<	?
P	c                 H   [        SSSS5      nU R                  [        SSSS5      [        SSSS5      [        SSSS5      5      U R                  [        SSSS5      [        SSSS5      [        SSSS5      5      U R                  [        SSSS5      [        SSSS5      [        SS	SS5      5      U R                  [        S
S
SS5      [        SSSS5      [        SSSS5      5      /nU R                  UR                  US S9US   5        U R                  UR                  US S9US   5        U R                  UR                  US S9US   5        U R                  [        SSSS5      [        SSSS5      [        S
SS
S
5      5      U R                  [        SSSS5      [        SSSS5      [        SS
S
S
5      5      /nU R	                  UR                  US S95        U R	                  UR                  US S95        U R	                  UR                  US S95        g )Nr   ru   r  r!   rJ  r=  rG   S   r    rs  c                     U R                   $ r
   r  r  s    r   re  ^RectTypeTest.test_collideobjects_list_of_object_with_multiple_rect_attribute.<locals>.<lambda>      r   r  r   c                     U R                   $ r
   r  r  s    r   re  r    r  r   c                     U R                   $ r
   r  r  s    r   re  r    r  r   rF   r  r   rj  c                     U R                   $ r
   r  r  s    r   re  r        aggr   c                     U R                   $ r
   r   r  s    r   re  r    r%  r   c                     U R                   $ r
   r"  r  s    r   re  r    r%  r   )r   r  r$   r	  rj  collideobjectsallr   r*   thingsr  s       r   ?test_collideobjects_list_of_object_with_multiple_rect_attributeLRectTypeTest.test_collideobjects_list_of_object_with_multiple_rect_attribute  sC   Ar2 11Q2r"DAq!$4d31a6H 11Q2r"DRR$8$q!Q:J 11RQ"DaA$6QAq8I 11Q1a $q#r2"6Q1a8H
 	))&6G)H&QR)T))&6G)H&QR)T))&6G)H&QR)T 11RQ"DQ1$5tAsAq7I 11RQ"DB1$5tCAq7I	
 	,,Q4E,FG,,Q4E,FG,,Q4E,FGr   c                    [        SSSS5      n[        SSSS5      [        SSSS5      /nU R                  [        SSSS5      [        SSSS5      [        S	S
SS5      5      U R                  [        SSSS5      [        SSSS5      [        S	S
SS5      5      /nUR                  U5        UR                  US S9  UR                  US S9  U R                  [        UR                  U5        g )Nr   ru   r    r!   r"   r   r   r  rG   rI   r   r  r  c                     U R                   $ r
   r  r  s    r   re  CRectTypeTest.test_collideobjectsall_call_variants.<locals>.<lambda>  s    177r   )r   r  r(  r   r   r
  s       r   $test_collideobjectsall_call_variants1RectTypeTest.test_collideobjectsall_call_variants  s    Ar2aAq!4BB#7811Q1a $r2r2"6S#sC8P 11Q1a $r2r2"6S#sC8P	
 	
E"	Et,	G):;)Q%8%8'Br   c                    [        SSSS5      n[        SSSS5      [        SSSS5      [        SSSS5      [        SSSS5      // SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      U R                  U R                  [        SSSS5      5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      U R                  [        SSSS5      5      //nU H_  nU R	                  US   R
                  R                  S9   UR                  US S9nU R                  XCS   US   US   /5        S S S 5        Ma     [        SSSS5      [        SSSS5      /SS/SS// SQ/ SQ/U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      /U R                  [        SSSS5      5      U R                  [        SSSS5      5      //nU HU  nU R	                  US   R
                  R                  S S9   UR                  U5      nU R                  U5        S S S 5        MW     g ! , (       d  f       GM  = f! , (       d  f       M|  = f)Nr   ru   r  r=  r    r  r  r  r  r  r  r   r  r  r!   rF   r   r  r  r  r  r  )
r   r  r  r  r  r  r  r(  r$   rj  )r   r*   r  r*  r  r  s         r   test_collideobjectsall#RectTypeTest.test_collideobjectsall  sQ   Ar2 Q2r"Q2r"RQ"Q1a 	 	 --d1aR.@A--d1aR.@A--d2r1a.@A--d1aA.>?	 55d1aR6HI55d1aR6HI55d2r1a6HI55d1aA6FG	 5511$q!R2DE 5511$q!R2DE 5511$r2q!2DE 5511$q!Q2BC ,,T!QB-?@,,T!QB-?@,,T"b!Q-?@,,T!Q1-=>	g9
t $F6!9#6#6#?#?@,,V,>  )VAYq	)JK	 A@ $ "b!Qb"a!34^,!34^,--d2r1a.@A--d2r1a.@A
 55d2r1a6HI55d2r1a6HI
 55d2r1a6HI55d2r1a6HI
 ,,T"b!Q-?@,,T"b!Q-?@#
, A1Q4>>#:#:TJ,,Q/  (	 KJ 9 A@: KJs   .P(8#P;(
P8	;
Q
	c                 n   [        SSSS5      nU R                  [        SSSS5      [        SSSS5      [        SSSS5      5      U R                  [        SSSS5      [        SSSS5      [        SSSS5      5      U R                  [        SSSS5      [        SSSS5      [        SS	SS5      5      U R                  [        S
S
SS5      [        SSSS5      [        SSSS5      5      /nU R                  UR                  US S9US   US   US   /5        U R                  UR                  US S9US   US   /5        U R                  UR                  US S9US   US   /5        U R                  [        SSSS5      [        SSSS5      [        S
SS
S
5      5      U R                  [        SSSS5      [        SSSS5      [        SS
S
S
5      5      /nU R	                  UR                  US S95        U R	                  UR                  US S95        U R	                  UR                  US S95        g )Nr   ru   r  r  r!   rJ  r=  rG   r  r    r  rs  c                     U R                   $ r
   r  r  s    r   re  aRectTypeTest.test_collideobjectsall_list_of_object_with_multiple_rect_attribute.<locals>.<lambda>7      aggr   r  r   c                     U R                   $ r
   r   r  s    r   re  r7  ;  r8  r   c                     U R                   $ r
   r"  r  s    r   re  r7  >  r8  r   rF   r  r#  r   rj  c                     U R                   $ r
   r  r  s    r   re  r7  I  r%  r   c                     U R                   $ r
   r   r  s    r   re  r7  J  r%  r   c                     U R                   $ r
   r"  r  s    r   re  r7  K  r%  r   )r   r  r$   r(  rj  r)  s       r   Btest_collideobjectsall_list_of_object_with_multiple_rect_attributeORectTypeTest.test_collideobjectsall_list_of_object_with_multiple_rect_attribute%  sq   Ar2 11Q2r"DAq!$4d31a6H 11Q2r"DRR$8$q!Q:J 11RQ"DaA$6QAq8I 11Q1a $q#r2"6Q1a8H
 	,=>AYq	6!9-	
 	,=>FSTI@V	
 	,=>FSTI@V	

 11RQ"DQ1$5tAsAq7I 11RQ"DB1$5tCAq7I	
 	,,Q4E,FG,,Q4E,FG,,Q4E,FGr   c                     [        SSSS5      n[        SSSS5      nUR                  U5      nU R                  UR                  U5      5        UR                  U5      nU R                  UR                  U5      5        g )Nru   r   r=  )r   fitrh  ri  )r   r*   rw  r  f2s        r   test_fitRectTypeTest.test_fitM  sf     RR "b"b!EE"IA'VVAY

2'r   c                 b    [        SSSS5      nUR                  5       nU R                  X!5        g )Nr   r    ru   r   )r   rk  r$   r  s      r   	test_copyRectTypeTest.test_copya  s+    Ar2FFHr   c                    [        SSSS5      nU R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  [        UR                  S	5        U R                  [        UR                  S
5        U R                  USS SS/5        U R                  USS / SQ5        U R                  USS / SQ5        U R                  US S  / SQ5        U R                  US   / SQ5        U R                  USSS2   SS/5        U R                  USSS2   SS/5        U R                  USS S2   / SQ5        U R                  [
        UR                  S 5        g )Nr   r    r!   r"   r   r  rK  r|  r  rJ  r  r   .)r"   r!   r    r   )r   r$   r   
IndexError__getitem__r   r)   s     r   test_subscriptRectTypeTest.test_subscriptf  s   Aq!1q!1q!1q!1q!2"2"2"*ammQ7*ammR81Q!Q(1Q.1R),1|,3.1Qq5Aq6*1Qq5Aq6*15b5<0)Q]]D9r   c                    [        SSSS5      nSUS'   U R                  U/ SQ5        U R                  [        UR                  S S5        U R                  U/ SQ5        U R                  [        UR                  SS5        U R                  U/ SQ5        U R                  [
        UR                  SS5        U R                  U/ SQ5        U R                  [
        UR                  SS5        U R                  U/ SQ5        SUS'   U R                  U/ SQ5        S	US
'   U R                  U/ SQ5        SUS'   U R                  U/ SQ5        SUS'   U R                  U/ SQ5        SUSS
& U R                  U/ SQ5        SUS'   U R                  U/ SQ5        SUS S & U R                  U/ SQ5        SUS S & U R                  U/ SQ5        XS S S2'   U R                  U/ SQ5        g )Nr   r  . r"   rJ  ru   )ru   r    r!   r"   r  r!   )ru   r    r!   r  r  r  )ru   r    r!   r  rG   r|  )rG   r    r!   r  r   )rG   r   r   r  )r   r   r   r   	   )rO  rO  rO  rO  )r  r        )rQ  rP  r  r  )r   r$   r   r   __setitem__rI  r)   s     r   test_ass_subscriptRectTypeTest.test_ass_subscript{  s   Aq!#L))Q]]D!<L))Q]]Ar:L)*ammQ:L)*ammR;L)!M*!N+"O,",-!A,-#L)!L)!,-$B$,-r   c                 P   [        SSSS5      nU R                  [        5         US	 S S S 5        U R                  [        5         USS2	 S S S 5        U R                  [        5         US	 S S S 5        g ! , (       d  f       NS= f! , (       d  f       NA= f! , (       d  f       g = f)Nr   r    .)r   r   r   r)   s     r   test_ass_subscript_deletion(RectTypeTest.test_ass_subscript_deletion  s    Aq!y)! * y)!A# * y)# *) *) *) *)s#   A5B(B5
B
B
B%c                     [        SSSS5      nU R                  [        U[        5      5        U R	                  [        U[
        5      5        g Nr  r  K   r   )r   rh  
isinstancer   rj  r   r)   s     r   test_collection_abc RectTypeTest.test_collection_abc  s:    RR 
1j12Ax01r   r   N)r  r  r  r  r   r+   r0   rC   rP   r^   rb   rg   rk   rn   rr   rz   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   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r!  r%  r(  r+  r/  r2  r5  r9  r<  r?  rD  rG  rJ  rN  rQ  rT  rY  r\  r_  rk  ro  rx  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  r  r  r  r#  r-  r2  r7  r@  rG  rM  rP  rU  r_  rc  rf  rn  rr  rz  r~  unittestskipIfIS_PYPYr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r/  r9  rJ  rM  rT  rW  r^  rb  rf  rk  rt  rz  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  r  r  r  r+  r0  r3  r>  rC  rF  rK  rS  rV  r\  r  r   r   r   r   r      s   /&&;,+
>
>
>
>
>B0 0 	5- 	)/!-"/"
+"+%+#+&+!+"+#+!+$
1 
1!1I>
B222222222$2$3")H
(
(
(
(222	0--
;"C,C0? ? G2G2;&;,H&?&-?^?>2?h!?F?*?	?5Cn40** __PlYlY\gR))	)	);
11191	4	4!
F <D8@,*#CJ/0b,07:?4?:9B8@B>B.#FJ1FfB6B8B<B>=	FB>/$5"..	2...    .".".6."4*@&P/dHBC&_)B&HP((
:*.>	2r   r   c                   `    \ rS rSr " S S\5      rS rS rS rS r	S r
S	 rS
 rS rS rSrg)SubclassTesti  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )SubclassTest.MyRecti  c                 P   > [         [        R                  U ]  " U0 UD6  SU l        g )NT)superrb  MyRectr  an_attribute)r   r   kwdsr  s      r   r  SubclassTest.MyRect.__init__  s%    ,%%t5tDtD $Dr   )rh  )r  r  r  r  r  r  __classcell__)r  s   @r   rg  rd    s    	% 	%r   rg  c                    U R                  SSSS5      nU R                  UR                  5        UR                  5       nU R                  [	        X R                   5      5        U R                  [        [        US5        g Nr   r    ru   r   rh  )rg  rh  rh  rk  r[  r   r   r  r   mr1mr2s      r   rF  SubclassTest.test_copy  s\    kk!QB'(()hhj
345.'3Gr   c                    U R                  SSSS5      nU R                  UR                  5        UR                  SS5      nU R                  [	        X R                   5      5        U R                  [        [        US5        g rm  )rg  rh  rh  rv  r[  r   r   r  rn  s      r   rz  SubclassTest.test_move  s`    kk!QB'(()hhq!n
345.'3Gr   c                    U R                  SSSS5      nU R                  UR                  5        UR                  SS5      nU R                  [	        X R                   5      5        U R                  [        [        US5        g )Nr   r    ru   r   r"   rh  )rg  rh  rh  ru  r[  r   r   r  rn  s      r   test_inflateSubclassTest.test_inflate  sa    kk!QB'(()kk!Q
345.'3Gr   c                    U R                  SSSS5      nU R                  UR                  5        UR                  [	        SSSS5      5      nU R                  [        X R                   5      5        U R                  [        [        US5        g )Nr  r  r  ru   rh  )	rg  rh  rh  r  r   r[  r   r   r  rn  s      r   r  SubclassTest.test_clamp  sj    kk"b!Q'(()iiRR,-
345.'3Gr   c                    U R                  SSSS5      nU R                  UR                  5        UR                  [	        SSSS5      5      nU R                  [        X R                   5      5        U R                  [        [        US5        g )Nr   r    r!   r"   r   rh  )	rg  rh  rh  r  r   r[  r   r   r  rn  s      r   r  SubclassTest.test_clip  sj    kk!Q1%(()hhtAq!Q'(
345.'3Gr   c                    U R                  SSSS5      nU R                  UR                  5        UR                  [	        SSSS5      5      nU R                  [        X R                   5      5        U R                  [        [        US5        g )Nr   r    rK  rh  )	rg  rh  rh  r  r   r[  r   r   r  rn  s      r   r  SubclassTest.test_union  sj    kk!Q1%(()iiRQ*+
345.'3Gr   c           	      8   U R                  SSSS5      nU R                  UR                  5        UR                  [	        SSSS5      [	        SSSS5      /5      nU R                  [        X R                   5      5        U R                  [        [        US5        g )Nr   r   rK  r    rh  )	rg  rh  rh  r  r   r[  r   r   r  rn  s      r   r  SubclassTest.test_unionall  sz    kk!Q1%(()llDRA.Q1a0@AB
345.'3Gr   c                    U R                  SSSS5      nU R                  UR                  5        UR                  [	        SSSS5      5      nU R                  [        X R                   5      5        U R                  [        [        US5        g )Nru   r   r=  rh  )	rg  rh  rh  rA  r   r[  r   r   r  rn  s      r   rC  SubclassTest.test_fit  sj    kk"b"b)(()ggd2r2r*+
345.'3Gr   c                     U R                  SSSS5      nU R                  [        U[        5      5        U R	                  [        U[
        5      5        g rY  )rg  rh  r[  r   rj  r   )r   ro  s     r   r\   SubclassTest.test_collection_abc  s>    kk"b"b)
3
34C23r   r   N)r  r  r  r  r   rg  rF  rz  ru  r  r  r  r  rC  r\  r  r   r   r   rb  rb    sC    % %
HHHHHHHH4r   rb  __main__)r+  r^  collections.abcr   r   platformr   pygamer   r   pygame.testsr   python_implementationr`  r   r   r   TestCaser   rb  r  mainr   r   r   <module>r     s      0     #
H224
4 .S228$$ S22ldA48$$ A4H zMMO r   