
    &hj                     *   S SK r S SKrS SKJr   " S S\ R                  5      r " S S\ R                  5      r " S S\ R                  5      r " S	 S
5      r " S S\\ R                  5      r " S S\\ R                  5      r	 " S S\\ R                  5      r
 " S S5      r " S S\\ R                  5      r " S S\\ R                  5      r " S S\5      r " S S\\5      r " S S\ R                  5      r\S:X  a  \ R$                  " 5         gg)    N)spritec                       \ rS rSrSrg)SpriteModuleTest    N)__name__
__module____qualname____firstlineno____static_attributes__r       P/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/sprite_test.pyr   r      s    r   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g)SpriteCollideTest   c                 R   [         R                  " 5       U l        [         R                  " 5       U l        [         R                  " U R                  5      U l        [         R                  " U R                  5      U l        [         R                  " U R                  5      U l        [        R                  " S[        R                  S5      U R
                  l        [        R                  " S[        R                  S5      U R                  l        [        R                  " S[        R                  S5      U R                  l        U R
                  R                  R                  5       U R
                  l        U R                  R                  R                  5       U R                  l        U R                  R                  R                  5       U R                  l        U R                  R                  R                  SS5        U R                  R                  R                  SS5        g )N)2   
       r   r   (   r   d   )r   AbstractGroupagag2Sprites1s2s3pygameSurfaceSRCALPHAimageget_rectrectmove_ipselfs    r   setUpSpriteCollideTest.setUp   s6   &&('')--(--)--)x"Ex"Ex"Eww}}--/ww}}--/ww}}--/R#S#&r   c           	          U R                  [        R                  " U R                  U R                  SS S9U R
                  /5        g NFdokillcollidedassertEqualr   spritecollider   r   r   r'   s    r   0test_spritecollide__works_if_collided_cb_is_NoneBSpriteCollideTest.test_spritecollide__works_if_collided_cb_is_None&   s5      $((54PWWI	
r   c                     U R                  [        R                  " U R                  U R                  SS9U R
                  /5        g )NF)r.   r0   r'   s    r   3test_spritecollide__works_if_collided_cb_not_passedESpriteCollideTest.test_spritecollide__works_if_collided_cb_not_passed-   s2      $((5ADGG9	
r   c           	      x    U R                  [        [        R                  U R                  U R
                  SSS9  g )NF   r-   )assertRaises	TypeErrorr   r2   r   r   r'   s    r   /test_spritecollide__collided_must_be_a_callableASpriteCollideTest.test_spritecollide__collided_must_be_a_callable3   s1    v++TWWdhhuWX 	 	
r   c           	          U R                  [        R                  " U R                  U R                  S[        R
                  S9U R                  /5        g r,   )r1   r   r2   r   r   collide_rectr   r'   s    r   5test_spritecollide__collided_defaults_to_collide_rectGSpriteCollideTest.test_spritecollide__collided_defaults_to_collide_rect9   s@      %&:M:M WWI		
r   c           
          U R                  [        R                  " U R                  U R                  S[        R
                  " S5      S9U R                  /5        g NFg      ?r-   )r1   r   r2   r   r   collide_rect_ratior   r'   s    r   2test_collide_rect_ratio__ratio_of_one_like_defaultDSpriteCollideTest.test_collide_rect_ratio__ratio_of_one_like_defaultB   sF      %&:S:STW:X WWI		
r   c           	         [         R                  " S5      n[        U R                  R	                  5       [
        S9n[        [         R                  " U R                  U R                  SUS9[
        S9nU R                  X25        g N      4@keyFr-   )	r   rD   sortedr   spritesidr2   r   assertListEqualr(   collided_funcexpected_spritescollided_spritess       r   8test_collide_rect_ratio__collides_all_at_ratio_of_twentyJSpriteCollideTest.test_collide_rect_ratio__collides_all_at_ratio_of_twentyK   sl    11$7!$(("2"2"4"=!  %- 	
 	-@r   c           	          U R                  [        R                  " U R                  U R                  S[        R
                  S9U R                  /5        g r,   )r1   r   r2   r   r   collide_circler   r'   s    r   "test_collide_circle__no_radius_set4SpriteCollideTest.test_collide_circle__no_radius_setY   s@      %&:O:O WWI		
r   c           
          U R                  [        R                  " U R                  U R                  S[        R
                  " S5      S9U R                  /5        g rC   )r1   r   r2   r   r   collide_circle_ratior   r'   s    r   5test_collide_circle_ratio__no_radius_and_ratio_of_oneGSpriteCollideTest.test_collide_circle_ratio__no_radius_and_ratio_of_oneb   sH      44S9	 WWI	
r   c           	         [         R                  " S5      n[        U R                  R	                  5       [
        S9n[        [         R                  " U R                  U R                  SUS9[
        S9nU R                  X#5        g rH   )	r   r[   rL   r   rM   rN   r2   r   rO   rP   s       r   8test_collide_circle_ratio__no_radius_and_ratio_of_twentyJSpriteCollideTest.test_collide_circle_ratio__no_radius_and_ratio_of_twentyn   sl    33D9!$(("2"2"4"=!  %- 	
 	-@r   c           	      .   [         R                  " S5      n[         R                  " U R                  U R                  SUS9  U R                  [         R                  " U R                  U R                  S[         R                  S9U R                  /5        g )NrI   Fr-   )r   r[   r2   r   r   r1   rW   r   )r(   rQ   s     r   7test_collide_circle__radius_set_by_collide_circle_ratioISpriteCollideTest.test_collide_circle__radius_set_by_collide_circle_ratio|   sn    
 33D9TWWdhhu}U  %&:O:O WWI		
r   c           	      .   [         R                  " S5      n[        [         R                  " U R                  U R
                  SUS9[        S9n[        [         R                  " U R                  U R
                  SUS9[        S9nU R                  X#5        g )Ng       @Fr-   rJ   )r   r[   rL   r2   r   r   rN   rO   rP   s       r   ;test_collide_circle_ratio__no_radius_and_ratio_of_two_twiceMSpriteCollideTest.test_collide_circle_ratio__no_radius_and_ratio_of_two_twice   s     33C8
 "  %- 	
 "  %- 	
 	-@r   c           	      f   SU R                   l        SU R                  l        SU R                  l        [        R
                  n[        U R                  R                  5       [        S9n[        [        R                  " U R                   U R                  SUS9[        S9nU R                  X#5        g )Nr   r     rJ   Fr-   )r   radiusr   r   r   rW   rL   r   rM   rN   r2   rO   rP   s       r   #test_collide_circle__with_radii_set5SpriteCollideTest.test_collide_circle__with_radii_set   s    --!$(("2"2"4"=!  %- 	
 	-@r   c           	      r   SU R                   l        SU R                  l        SU R                  l        [        R
                  " S5      n[        U R                  R                  5       [        S9n[        [        R                  " U R                   U R                  SUS9[        S9nU R                  X#5        g )Nr   r   rh   g      ?rJ   Fr-   )r   ri   r   r   r   r[   rL   r   rM   rN   r2   rO   rP   s       r   )test_collide_circle_ratio__with_radii_set;SpriteCollideTest.test_collide_circle_ratio__with_radii_set   s    33C8!$(("2"2"4"=!  %- 	
 	-@r   c           	         U R                   R                  R                  S5        U R                  R                  R                  S5        U R                  R                  R                  S5        U R                  [        R                  " U R                   U R                  S[        R                  S9U R                  /5        [        R                  R                  U R                   R                  5      U R                   l        [        R                  R                  U R                  R                  5      U R                  l        [        R                  R                  U R                  R                  5      U R                  l        U R                  [        R                  " U R                   U R                  S[        R                  S9U R                  /5        g )N)   rp   rp   rp   Fr-   )r   r#   fillr   r   r1   r   r2   r   collide_maskr    maskfrom_surfacer'   s    r   test_collide_mask__opaque+SpriteCollideTest.test_collide_mask__opaque   s/   /0/0/0 	  %&:M:M WWI		
 {{//>{{//>{{//> 	  %&:M:M WWI		
r   c           	         U R                   R                  R                  S5        U R                  R                  R                  S5        U R                  R                  R                  S5        [
        R                  R                  U R                   R                  S5      U R                   l        [
        R                  R                  U R                  R                  S5      U R                  l        [
        R                  R                  U R                  R                  S5      U R                  l        U R                  [        R                  " U R                   U R                  S[        R                  S95        g )N)rp   rp   rp   r   rp   Fr-   )r   r#   rq   r   r   r    rs   rt   assertFalser   r2   r   rr   r'   s    r   test_collide_mask__transparent0SpriteCollideTest.test_collide_mask__transparent   s    -.-.-.{{//sC{{//sC{{//sC  %&:M:M	
r   c                 ,   U R                   n[        R                  " U R                  U R                  5      nU R                  X!5        U R                   R                  R                  SS5        [        R                  " U R                  U R                  5      nU R                  U5        U R                  R                  R                  SS5        U R                  n[        R                  " U R                  U R                  5      nU R                  X!5        U R                   R                  R                  SS5        U R                  R                  5       n[        R                  " U R                  U R                  5      nU R                  X#5        g )Nr   r   ii)r   r   spritecollideanyr   r   r1   r%   r&   assertIsNoner   rM   assertIn)r(   expected_spritecollided_spriteexpected_sprite_choicess       r   0test_spritecollideany__without_collided_callbackBSpriteCollideTest.test_spritecollideany__without_collided_callback   s    '' 11$''488D: 	Q# 11$''488D/* 	T4('' 11$''488D: 	Q$"&(("2"2"4 11$''488Do?r   c                 >   0 n0 nS/nUUU4S jnU R                   R                  5       n[        R                  " U R                  U R                   U5      nU R                  Xe5        U R                  [        U5      S5        U R                  XR                     S5        U R                  [        U5      S5        U R                  [        UR                  5       5      S   S5        U R                  U R                  U;   =(       d    U R                  U;   5        UR                  5         UR                  5         SUS'   [        R                  " U R                  U R                   U5      nU R                  U5        U R                  [        U5      S5        U R                  XR                     [        U R                   5      5        U R                  [        U5      [        U R                   5      5        U R                    H  nU R                  X'   S5        M     g )NTc                 p    UR                  U S5      nSU-   X '   UR                  US5      nSU-   X1'   US   $ )Nr   r9   )get)spr_aspr_b
arg_dict_a
arg_dict_breturn_containercounts         r   collided_callbackZSpriteCollideTest.test_spritecollideany__with_collided_callback.<locals>.collided_callback$  sG     NN5!,E !E	JNN5!,E !E	J#A&&r   r9   r   F)r   rM   r   r|   r   r~   r1   lenlistvalues
assertTruer   r   clearr}   )r(   r   r   r   r   r   r   ss           r   -test_spritecollideany__with_collided_callback?SpriteCollideTest.test_spritecollideany__with_collided_callback  s    

 6 "!-	'" #'(("2"2"4 11$''488EVWo? 	Z!,GG,a0
 	Z!,j//1215q9:-FJ1FG# !11$''488EVW/* 	Z!,GG,c$((m<Z#dhh-8 AZ]A. r   c                    U R                   U R                  /0n[        R                  R	                  U R
                  U R                  SS5      nU R                  X5        [        R                  R	                  U R
                  U R                  SS5      nU R                  X5        [        R                  R	                  U R
                  U R                  SS5      nU R                  X5        0 n[        R                  R	                  U R
                  U R                  SS5      nU R                  X5        U R                  R                  R                  SS5        U R                   U R                  /0n[        R                  R	                  U R
                  U R                  SS5      nU R                  X5        0 n[        R                  R	                  U R
                  U R                  SS5      nU R                  X5        g )NFTi)r   r   r    r   groupcollider   r   assertDictEqualr   r%   r&   )r(   expected_dictcrasheds      r   ,test_groupcollide__without_collided_callback>SpriteCollideTest.test_groupcollide__without_collided_callbackZ  sr   
 477),--,,TWWdhhuM]4--,,TWWdhhuM]4 --,,TWWdhhtL]4--,,TWWdhhuM]4 	T4(477),--,,TWWdhheL]4--,,TWWdhhuM]4r   c                    S nS n0 n[         R                  R                  U R                  U R                  SSU5      nU R                  X45        U R                  [        U R                  R                  5       [        S90n[         R                  R                  U R                  U R                  SSU5      nUR                  5        H  nUR                  [        S9  M     U R                  X45        [         R                  R                  U R                  U R                  SSU5      nUR                  5        H  nUR                  [        S9  M     U R                  X45        0 n[         R                  R                  U R                  U R                  SSU5      nU R                  X45        U R                  [        U R                  R                  5       [        S90n[         R                  R                  U R                  U R                  SSU5      nUR                  5        H  nUR                  [        S9  M     U R                  X45        0 n[         R                  R                  U R                  U R                  SSU5      nU R                  X45        U R                  R                  U R                  5        U R                  R                  U R                  5        0 n[         R                  R                  U R                  U R                  SSU5      nU R                  X45        U R                  U R                  /U R                  U R                  /0n[         R                  R                  U R                  U R                  SSU5      nU R                  X45        0 n[         R                  R                  U R                  U R                  SSU5      nU R                  X45        g )Nc                     g)NTr   r   r   s     r   <lambda>MSpriteCollideTest.test_groupcollide__with_collided_callback.<locals>.<lambda>  s    dr   c                     g)NFr   r   s     r   r   r     s    ur   FrJ   T)r    r   r   r   r   r   r   rL   rM   rN   r   sortaddr   r   )r(   collided_callback_truecollided_callback_falser   r   values         r   )test_groupcollide__with_collided_callback;SpriteCollideTest.test_groupcollide__with_collided_callback~  s   !:"< --,,GGTXXue-D
 	]4&)9)9);"DE--,,GGTXXue-C
 ^^%EJJ2J & 	]4 --,,GGTXXue-C
 ^^%EJJ2J & 	]4 --,,GGTXXud,C
 	]4&)9)9);"DE--,,GGTXXud,B
 ^^%EJJ2J & 	]4--,,GGTXXud,B
 	]4 	DGGTWW--,,GGTXXtU,C
 	]4477)TWWtwwi@--,,GGTXXtU,B
 	]4--,,GGTXXtU,B
 	]4r   c                    U R                  [        R                  R                  U R                  U R
                  5      5        U R                  [        R                  R                  U R
                  U R                  5      5        U R                  R                  R                  U R
                  R                  l        U R                  [        R                  R                  U R
                  U R                  5      5        U R                  [        R                  R                  U R                  U R
                  5      5        U R
                  R                  R                  SS5        U R                  [        R                  R                  U R
                  U R                  5      5        U R                  [        R                  R                  U R                  U R
                  5      5        U R                  R                  R                  U R                  R                  R                  4U R
                  R                  l        U R                  [        R                  R                  U R                  U R
                  5      5        U R                  [        R                  R                  U R
                  U R                  5      5        U R                  [        R                  R                  U R                  U R                  5      5        U R                  [        R                  R                  U R                  U R                  5      5        g Nr   )r   r    r   r?   r   r   r   r%   center
inflate_iprightbottomrx   r'   s    r   test_collide_rect#SpriteCollideTest.test_collide_rect  s   22477DGGDE22477DGGDE #ggll1122477DGGDE22477DGGDE 	B'22477DGGDE22477DGGDE  $ww||11477<<3F3FG22477DGGDE22477DGGDE 	33DGGTWWEF33DGGTWWEFr   )r   r   r   r   r   N)r   r	   r
   r   r)   r3   r6   r<   r@   rE   rT   rX   r\   r_   rb   re   rj   rm   ru   ry   r   r   r   r   r   r   r   r   r   r   r      sx    '"




A


A
 A0A"A"
4
 !@FE/N"5HL5\Gr   r   c                   b    \ 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g)AbstractGroupTypeTesti  c                    [         R                  " 5       U l        [         R                  " 5       U l        [         R                  " U R                  5      U l        [         R                  " U R                  5      U l        [         R                  " U R                  5      U l        [         R                  " U R                  5      U l        [        R                  " S5      U R
                  l        U R
                  R                  R                  [        R                  " S5      5        U R
                  R                  R                  5       U R
                  l        [        R                  " S5      U R                  l        U R                  R                  R                  [        R                  " S5      5        U R                  R                  R                  5       U R                  l        SU R                  R                  l        [        R                  " S5      U R                  l        U R                  R                  R                  [        R                  " S5      5        U R                  R                  R                  5       U R                  l        SU R                  R                  l        [        R                  " S5      U R                  l        U R                  R                  R                  [        R                  " S5      5        U R                  R                  R                  5       U R                  l        SU R                  R                  l        SU R                  R                  l        [        R                  " S5      U l        [        R                  " S5      U l        U R&                  R                  [        R                  " S5      5        g )	Nr   redgreenr   bluewhite)r   r   grey)r   r   r   r   r   r   r   r   s4r    r!   r#   rq   Colorr$   r%   lefttopbgscrr'   s    r   r)   AbstractGroupTypeTest.setUp  s'   &&('')--(--(--)--)x06<<./ww}}--/x06<<01ww}}--/x06<</0ww}}--/x06<<01ww}}--/..*>>(+fll6*+r   c           
      *   U R                  SU R                  U R                  ;   5        U R                  SU R                  R                  U R                  5      5        U R                  SU R                  R                  U R                  U R                  /5      5        U R                  SU R                  R                  U R                  U R                  U R                  /5      5        U R                  SU R                  R                  U R                  U R                  U R                  5      5        U R                  SU R                  R                  U R                  [        R                  " U R                  U R                  5      5      5        U R                  SU R                  R                  U R                  U R                  U R                  /5      5        U R                  U R                  R                  " / 6 5        U R                  U R                  R                  / 5      5        U R                  U R                  R                  / /5      5        U R                  SU R                  R                  U R                  5      5        g)z-See if AbstractGroup.has() works as expected.TN)r1   r   r   hasr   assertNotEqualr   r   Grouprx   r   r'   s    r   test_hasAbstractGroupTypeTest.test_has  s    	tww$''12tww{{47734tww{{DGGTWW+=>? 	D$''++tww.I"JKD$''++dggtww"HID$''++dggv||DGGTWW7U"VWD$''++dgg7I"JK 	b)*R)bT*+ 	txx||DGG45r   c                 V   [         R                  " 5       nU R                  U R                  U R                  U R
                  4nU H  nU R                  X15        M     UR                  U R                  U R                  /U R                  5        U H  nU R                  X15        M     g N)
r   r   r   r   r   r   assertNotInr   r   r~   )r(   ag3rM   r   s       r   test_addAbstractGroupTypeTest.test_add#  s|    ""$77DGGTWWdgg6AQ$  	$''DHH-AMM!! r   c                     U R                  U R                  U R                  5        U R                  R                  U R                  5        U R	                  U R                  U R                  5        g r   )r   r   r   add_internalr~   r'   s    r   test_add_internal'AbstractGroupTypeTest.test_add_internal/  sF    $((+dgg&dggtxx(r   c                 Z   U R                   R                  U R                  5        U R                   R                  U R                  U R                  5        U R                  SU R                  R                  S5      5        U R                  SU R                  R                  S5      5        g )N)r   r   r   rp      r      r   )r   drawr   r   r   r1   get_atr'   s    r   
test_clear AbstractGroupTypeTest.test_clear6  sj    TXXdhh()@A)ABr   c           	      "   U R                   R                  U R                  5        U R                  SU R                  R	                  S5      5        U R                  SU R                  R	                  S5      5        U R                  U R                   R
                  U R                     [        R                  " SSSS5      5        U R                  U R                   R
                  U R                     [        R                  " SSSS5      5        g )N)rp   r   r   rp   r   )r   rp   r   rp   r   r   r   )
r   r   r   r1   r   
spritedictr   r    Rectr   r'   s    r   	test_drawAbstractGroupTypeTest.test_draw<  s    TXX)488??6+BC)488??7+CD++DGG4fkk!QB6OP++DGG4fkk"aR6PQr   c                     U R                   R                  5         U R                  U R                  U R                   ;   5        U R                  U R                  U R                   ;   5        g r   )r   emptyrx   r   r   r'   s    r   
test_empty AbstractGroupTypeTest.test_emptyD  sE    DGG+,DGG+,r   c                     U R                  U R                  R                  U R                  5      5        U R	                  U R                  R                  U R
                  5      5        g r   )r   r   has_internalr   rx   r   r'   s    r   test_has_internal'AbstractGroupTypeTest.test_has_internalI  sB    ,,TWW56--dgg67r   c                    U R                   R                  U R                  5        U R                  U R                   U R                  R	                  5       ;   5        U R                  U R                   R                  U R                  5      5        U R                  R                  U R                  U R                  5        U R                  U R                  U R                  R	                  5       ;   5        U R                  U R                  U R                  R	                  5       ;   5        U R                  U R                  R                  U R                  U R                  5      5        U R                   R                  U R                  U R                  U R                  5        U R                  R                  U R                  U R                  5        [        R                  " U R                  5      nU R                   R                  U R                  U/U R                  5        U R                  U R                   U R                  R	                  5       ;   5        U R                  U R                   U R                  R	                  5       ;   5        U R                  U R                   U R                  R	                  5       ;   5        U R                  U R                   U R                  R	                  5       ;   5        U R                  U R                   R                  U R                  U R                  U R                  U R                  5      5        g r   )r   remover   rx   groupsr   r   r   r   r   r   r   r   r(   gs     r   test_remove!AbstractGroupTypeTest.test_removeM  s   twwDGGNN$445TWW-. 	)TWW^^%556TWW^^%556dggtww78 	DGGTWWdgg.TWWdgg&LL!|TXX.DGGNN$445DGGNN$445DGGNN$445DGGNN$445TWWdggtwwHIr   c                     U R                   R                  U R                  5        U R                  U R                   R	                  U R                  5      5        g r   )r   remove_internalr   rx   r   r'   s    r   test_remove_internal*AbstractGroupTypeTest.test_remove_internale  s9    (--dgg67r   c                     [        U R                  U R                  4[        S9n[        U R                  R                  5       [        S9nU R                  X!5        g NrJ   )rL   r   r   rN   r   rM   rO   )r(   rR   sprite_lists      r   test_sprites"AbstractGroupTypeTest.test_spritesi  sA    !477DGG"4"=TWW__.B7[;r   c                      " S S[         R                  R                  5      nU" U R                  5      nU R                  R	                  SSS5        U R                  UR                  / SQ5        g )Nc                   $    \ rS rSr/ rS rS rSrg)6AbstractGroupTypeTest.test_update.<locals>.test_spriteip  c                 Z    [         R                  R                  R                  " U /UQ76   g r   r    r   r   __init__r(   r   s     r   r   ?AbstractGroupTypeTest.test_update.<locals>.test_sprite.__init__s      $$--d<V<r   c                 .    U =R                   U-  sl         g r   sinkr(   argss     r   update=AbstractGroupTypeTest.test_update.<locals>.test_sprite.updatev      		T!	r   r   Nr   r	   r
   r   r  r   r  r   r   r   r   test_spriter   p      D="r   r
  r9         r9   r  r  )r    r   r   r   r  r1   r  r(   r
  r   s      r   test_update!AbstractGroupTypeTest.test_updateo  sR    	"&--.. 	"  q!Q))95r   c                 "    " S S[         R                  R                  5      nU" U R                  5      nU R                  R	                  SSSSSS9  U R                  UR                  / S	Q5        U R                  UR                  SSS.5        g )
Nc                   (    \ rS rSr/ r0 rS rS rSrg)BAbstractGroupTypeTest.test_update_with_kwargs.<locals>.test_spritei  c                 Z    [         R                  R                  R                  " U /UQ76   g r   r   r   s     r   r   KAbstractGroupTypeTest.test_update_with_kwargs.<locals>.test_sprite.__init__  r   r   c                 d    U =R                   U-  sl         U R                  R                  U5        g r   )r  sink_kwargsr  r(   r  kwargss      r   r  IAbstractGroupTypeTest.test_update_with_kwargs.<locals>.test_sprite.update  s$    		T!	  ''/r   r   N)	r   r	   r
   r   r  r  r   r  r   r   r   r   r
  r    s    DK=0r   r
  r9   r  r     r   foobarr  )r    r   r   r   r  r1   r  r  r  s      r   test_update_with_kwargs-AbstractGroupTypeTest.test_update_with_kwargs~  ss    		0&--.. 		0  q!QA1-))9500!A2FGr   )r   r   r   r   r   r   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     sH    ,@6.
")CR-
8J08<6Hr   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 g) LayeredGroupBasei  c                    SnU R                  5       nU R                  R                  X!S9  U R                  R                  U5      nU R	                  [        U R                  R                  5      S5        U R	                  X0R                  R                  U5      5        U R	                  X15        U R	                  X0R                  R                  U   5        g )Ni  layerr9   )r   LGr   get_layer_of_spriter1   r   _spritelist_spritelayersr(   expected_layersprr&  s       r   test_get_layer_of_sprite)LayeredGroupBase.test_get_layer_of_sprite  s    kkmC.++C0TWW00115 ; ;C @A/ 5 5c :;r   c                 <   U R                   R                  nU R                  5       nU R                   R                  U5        U R                   R	                  U5      nU R                  [        U R                   R                  5      S5        U R                  X15        g Nr9   )r'  _default_layerr   r   r(  r1   r   r)  r+  s       r   r   LayeredGroupBase.test_add  sm    //kkmC++C0TWW00115/r   c                     SnU R                  5       nXl        U R                  R                  U5        U R                  R	                  U5      nU R                  [        U R                  R                  5      S5        U R                  X15        g )Nr   r9   r   _layerr'  r   r(  r1   r   r)  r+  s       r   %test_add__sprite_with_layer_attribute6LayeredGroupBase.test_add__sprite_with_layer_attribute  sh    kkm#
C++C0TWW00115/r   c                    SnU R                  5       nU R                  R                  X!S9  U R                  R                  U5      nU R	                  [        U R                  R                  5      S5        U R	                  X15        g )Nr   r%  r9   )r   r'  r   r(  r1   r   r)  r+  s       r   test_add__passing_layer_keyword0LayeredGroupBase.test_add__passing_layer_keyword  se    kkmC.++C0TWW00115/r   c                    SnU R                  5       nSUl        U R                  R                  X!S9  U R                  R	                  U5      nU R                  [        U R                  R                  5      S5        U R                  X15        g )N   r   r%  r9   r5  r+  s       r   &test_add__overriding_sprite_layer_attr7LayeredGroupBase.test_add__overriding_sprite_layer_attr  sl    kkm
C.++C0TWW00115/r   c                     U R                  5       n[         R                  " U5      nUR                  nUR                  U   nU R	                  [        UR                  5      S5        U R	                  XC5        g r1  )r   LayeredUpdatesr2  r*  r1   r   r)  )r(   r-  lrg2r,  r&  s        r   test_add__adding_sprite_on_init0LayeredGroupBase.test_add__adding_sprite_on_init  sa    kkm$$S),,""3'T--.2/r   c                     SnU R                  5       nXl        [         R                  " U5      nUR                  U   nU R	                  [        UR                  5      S5        U R	                  XA5        g )Nr   r9   r   r6  rA  r*  r1   r   r)  r(   r,  r-  rB  r&  s        r    test_add__sprite_init_layer_attr1LayeredGroupBase.test_add__sprite_init_layer_attr  s`    kkm#
$$S)""3'T--.2/r   c                     SnU R                  5       n[         R                  " X!S9nUR                  U   nU R                  [	        UR
                  5      S5        U R                  XA5        g )N!   r%  r9   )r   rA  r*  r1   r   r)  rG  s        r   #test_add__sprite_init_passing_layer4LayeredGroupBase.test_add__sprite_init_passing_layer  s[    kkm$$S?""3'T--.2/r   c                     SnU R                  5       nSUl        [         R                  " X!S9nUR                  U   nU R	                  [        UR                  5      S5        U R	                  XA5        g )NrK  7   r%  r9   rF  rG  s        r   %test_add__sprite_init_overiding_layer6LayeredGroupBase.test_add__sprite_init_overiding_layer  sb    kkm
$$S?""3'T--.2/r   c                    U R                   R                  nSn[        U5       Vs/ s H  o0R                  5       PM     nnU R                   R	                  U5        U R                  [        U R                   R                  5      U5        [        U5       H1  nU R                   R                  XE   5      nU R                  Xa5        M3     g s  snf r   )	r'  r2  ranger   r   r1   r   r)  r(  r(   r,  sprite_count_rM   ir&  s          r   test_add__spritelist%LayeredGroupBase.test_add__spritelist  s    //*/*=>*=Q;;=*=>GTWW001<@|$AGG//
;EU3 % ?s   Cc                    / nSn[        U5       H+  nUR                  U R                  5       5        X1S   l        M-     U R                  R                  U5        U R                  [        U R                  R                  5      U5        [        U5       H1  nU R                  R                  X   5      nU R                  XC5        M3     g )Nr   )
rS  appendr   r6  r'  r   r1   r   r)  r(  )r(   rM   sprite_and_layer_countrW  r&  s        r   $test_add__spritelist_with_layer_attr5LayeredGroupBase.test_add__spritelist_with_layer_attr  s    !#-.ANN4;;=)!"BK / 	GTWW0013IJ-.AGG//
;EU& /r   c                 v   SnSn[        U5       Vs/ s H  o0R                  5       PM     nnU R                  R                  XAS9  U R	                  [        U R                  R                  5      U5        [        U5       H1  nU R                  R                  XE   5      nU R	                  Xa5        M3     g s  snf )NrK  r   r%  )rS  r   r'  r   r1   r   r)  r(  rT  s          r   "test_add__spritelist_passing_layer3LayeredGroupBase.test_add__spritelist_passing_layer  s    */*=>*=Q;;=*=>G2TWW001<@|$AGG//
;EU3 % ?s   B6c                    Sn/ nSn[        U5       H+  nUR                  U R                  5       5        XBS   l        M-     U R                  R                  X!S9  U R                  [        U R                  R                  5      U5        [        U5       H1  nU R                  R                  X$   5      nU R                  XQ5        M3     g )NrK  r   r[  r%  )
rS  r\  r   r&  r'  r   r1   r   r)  r(  )r(   r,  rM   r]  rW  r&  s         r   %test_add__spritelist_overriding_layer6LayeredGroupBase.test_add__spritelist_overriding_layer  s    !#-.ANN4;;=) !BK / 	G2TWW0013IJ-.AGG//
;EU3 /r   c                 \   Sn[        U5       Vs/ s H  o R                  5       PM     nn[        R                  " U5      nUR                  nU R	                  [        UR                  5      U5        [        U5       H'  nUR                  X6   5      nU R	                  Xu5        M)     g s  snf r   )rS  r   rA  r2  r1   r   r)  r(  )r(   rU  rV  rM   rB  r,  rW  r&  s           r   test_add__spritelist_init*LayeredGroupBase.test_add__spritelist_init+  s    */*=>*=Q;;=*=>$$W-,,T--.=|$A,,WZ8EU3 % ?s   B)c                    / nSn[        U5       H@  nUR                  U R                  5       5        [        R                  " S5      US   l        MB     U R                  R                  U5        U R                  [        U R                  R                  5      U5        [        U5       H   nU R                  R                  X   5        M"     U R                  [        U R                  R                  5      S5        g )Nr   )r   r   r   r   r[  r   )rS  r\  r   r    r   r%   r'  r   r1   r   r)  r   )r(   rM   rU  rW  s       r   test_remove__sprite$LayeredGroupBase.test_remove__sprite9  s    |$ANN4;;=)%{{<8GBK % 	GTWW001<@|$AGGNN7:& % 	TWW00115r   c                    / nSn[        USS5       H+  nUR                  U R                  5       5        X1S   l        M-     U R                  R                  U5        U R                  [        U R                  R                  5      U5        [        [        U5      5      nU R                  R                  5       nU R                  XT5        g )Nr   r   r[  )rS  r\  r   r6  r'  r   r1   r   r)  r   reversedrM   rO   )r(   rM   r]  rW  rR   actual_spritess         r   r   LayeredGroupBase.test_spritesI  s    !#-q"5ANN4;;=)!"BK 6 	GTWW0013IJ   12*^>r   c                 V   / n/ nSn[        U5       HN  nUR                  U5        [        S5       H+  nUR                  U R                  5       5        XAS   l        M-     MP     U R                  R                  U5        U R                  R                  5       nU R                  Xb5        g )Nr   r   r[  )rS  r\  r   r6  r'  r   layersrO   )r(   rM   expected_layerslayer_countrW  jrq  s          r   test_layersLayeredGroupBase.test_layers[  s    {#A""1%1Xt{{}-%&"  $
 	G!V5r   c                 D   / SQnU H+  nU R                   R                  U R                  5       US9  M-     UR                  5         [	        U R                   R                  5       5       H4  u  p4U R                   R                  U5      nU R                  XQU   5        M6     g )N)r9   r        r  rx  r  rx  r  r   rx  r9   r   	      rx  6   ry  r  +   rx  r9   r%  )r'  r   r   r   	enumeraterM   r(  r1   )r(   rq  layidxr-  r&  s         r   test_add__layers_are_correct-LayeredGroupBase.test_add__layers_are_correctj  sv    UCGGKKSK1 !$''//"34HCGG//4EU3K0 5r   c                    SnU R                  5       nU R                  R                  X!S9  U R                  U R                  R                  U   U5        SnU R                  R                  X!5        U R                  U R                  R                  U   U5        SnU R                  5       nSUl        U R                  R                  U5        U R                  R                  X15        U R                  UR                  U5        g )Nc   r%  ,   M   rO  )r   r'  r   r1   r*  change_layerr&  )r(   r,  r-  spr2s       r   test_change_layer"LayeredGroupBase.test_change_layeru  s    kkmC...s3^DS1..s3^D{{}
DT2^4r   c                 z   / n/ n[        S5       Ha  nU R                  5       n[        R                  " US-  US-  SS5      Ul        UR                  U5        US:  d  MP  UR                  U5        Mc     U R                  R                  U5        U R                  R                  S5      nU R                  XR5        g )Nr  r   r   r  r   r   )
rS  r   r    r   r%   r\  r'  r   get_sprites_atr1   )r(   rM   rR   rW  r-  results         r   test_get_sprites_at$LayeredGroupBase.test_get_sprites_at  s    qA++-C{{1r61r63<CHNN31u '',  	G''12r   c                 "   / SQnU H+  nU R                   R                  U R                  5       US9  M-     U R                   R                  5       nU R	                  X0R                   R                  5       5        U R	                  U[        U5      5        U R	                  U[        U R                   R                  R                  5       5      5        U R	                  X0R                   R                  U R                   R                  S      5        g )N
r9   r   r  ry  r  r   r  X      r   r%  r[  )	r'  r   r   get_top_layerr1   maxr*  r   r)  )r(   rq  rW  	top_layers       r   test_get_top_layer#LayeredGroupBase.test_get_top_layer  s    1AGGKKQK/ GG))+	GG$9$9$;<CK0C(=(=(D(D(F$GHGG$9$9$'':M:Mb:Q$RSr   c                 "   / SQnU H+  nU R                   R                  U R                  5       US9  M-     U R                   R                  5       nU R	                  X0R                   R                  5       5        U R	                  U[        U5      5        U R	                  U[        U R                   R                  R                  5       5      5        U R	                  X0R                   R                  U R                   R                  S      5        g )Nr  r%  r   )	r'  r   r   get_bottom_layerr1   minr*  r   r)  )r(   rq  rW  bottom_layers       r   test_get_bottom_layer&LayeredGroupBase.test_get_bottom_layer  s    1AGGKKQK/ ww//1ww'?'?'ABs6{3s477+@+@+G+G+I'JKww'<'<TWW=P=PQR=S'TUr   c                    / SQnU H+  nU R                   R                  U R                  5       US9  M-     U R                  5       nU R                   R                  USS9  U R                  X0R                   R                  S   5        U R                   R                  U5        U R                  X0R                   R                  S   5        g )Nr  r%  r  r[  )r'  r   r   r   r)  move_to_frontr1   r(   rq  rW  r-  s       r   test_move_to_front#LayeredGroupBase.test_move_to_front  s    1AGGKKQK/ kkmCq!C!4!4R!89c"gg11"56r   c                    / SQnU H+  nU R                   R                  U R                  5       US9  M-     U R                  5       nU R                   R                  USS9  U R                  X0R                   R                  S   5        U R                   R                  U5        U R                  X0R                   R                  S   5        g )Nr  r%  rO  r   )r'  r   r   r   r)  move_to_backr1   r  s       r   test_move_to_back"LayeredGroupBase.test_move_to_back  s    1AGGKKQK/ kkmCr"C!4!4Q!78S!gg11!45r   c                 *   / SQnU H+  nU R                   R                  U R                  5       US9  M-     U R                   R                  5       nU R                   R	                  U R                   R                  5       5      nU R                  XC5        g )Nr  r%  )r'  r   r   r  r(  get_top_spriter1   )r(   rq  rW  r,  r&  s        r   test_get_top_sprite$LayeredGroupBase.test_get_top_sprite  sl    1AGGKKQK/ ..0++DGG,B,B,DE/r   c                    0 n/ SQnU HP  nU R                  5       nX4l        U R                  R                  U5        X1;  a  / X'   X   R	                  U5        MR     U R                  R                  5        Ha  nU R                  R                  U5       H?  nU R                  XAU   5        X   R                  U5        [        X   5      S:X  d  M=  X	 MA     Mc     U R                  [        UR                  5       5      S5        g )N) r9   r  r   rx  r  r{  ry  r  r9   r  r  r   rx  r{  ry  rz  r9   r  r  r  r   rx  r{  ry  rz  r   r9   rx  r   r  r  r  r   )r   r6  r'  r   r\  rq  get_sprites_from_layerr~   r   r   r1   r   )r(   rM   rq  r  r-  s        r   test_get_sprites_from_layer,LayeredGroupBase.test_get_sprites_from_layer  s    !
D C++-CJGGKK!!L$  77>>#Cww55c:c3<0##C(w|$) ; $ 	W^^-.2r   c                    / n/ n/ SQnU H^  nU R                  5       nXEl        U R                  R                  U5        US:X  a  UR	                  U5        MM  UR	                  U5        M`     UR                  [        S9  UR                  [        S9  [        U R                  R                  S5      [        S9n[        U R                  R                  S5      [        S9nU R                  X5        U R                  X'5        U R                  [        U R                  5      [        U5      [        U5      -   5        U R                  R                  SS5        [        U R                  R                  S5      [        S9n[        U R                  R                  S5      [        S9nU R                  X5        U R                  X&5        U R                  [        U R                  5      [        U5      [        U5      -   5        g )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  rJ   r  )r   r6  r'  r   r\  r   rN   rL   r  rO   r1   r   switch_layer)r(   sprites1sprites2rq  r  r-  layer2_spriteslayer3_spritess           r   test_switch_layer"LayeredGroupBase.test_switch_layer  sz   VC++-CJGGKKax$$  	"" > >q ArJ > >q ArJX6X6TWWs8}s8}'DEQ" > >q ArJ > >q ArJX6X6TWWs8}s8}'DEr   c                 n   U R                   R                  U R                  5       5        U R                   R                  5       S   nU R                   R	                  5       nU R                  U[        U R                   5      5        U R                  X5        U R                  X!R                  5       5        g )Nr   )	r'  r   r   rM   copyassertIsInstancetyper~   r   )r(   r-  lg_copys      r   	test_copyLayeredGroupBase.test_copy#  sr    DKKM"ggoo"'',,.gtDGG}5c#gzz|,r   r   N)!r   r	   r
   r   r.  r   r7  r:  r>  rC  rH  rL  rP  rX  r^  ra  rd  rg  rj  r   ru  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r#  r#    s    	<000000004' 44"46 ?$6	15(3	T	V76043lF<-r   r#  c                   2    \ rS rSr\R
                  rS rSrg)"LayeredUpdatesTypeTest__SpriteTesti0  c                 8    [         R                  " 5       U l        g r   r   rA  r'  r'   s    r   r)   (LayeredUpdatesTypeTest__SpriteTest.setUp3      '')r   r'  N)r   r	   r
   r   r   r   r)   r   r   r   r   r  r  0  s    ]]F*r   r  c                   2    \ rS rSr\R
                  rS rSrg)#LayeredUpdatesTypeTest__DirtySpritei7  c                 8    [         R                  " 5       U l        g r   r  r'   s    r   r)   )LayeredUpdatesTypeTest__DirtySprite.setUp:  r  r   r  N)r   r	   r
   r   r   DirtySpriter)   r   r   r   r   r  r  7  s    F*r   r  c                   T    \ rS rSr\R
                  rS rS rS rS
S jr	S r
S rSrg	)!LayeredDirtyTypeTest__DirtySpritei>  c                 8    [         R                  " 5       U l        g r   )r   LayeredDirtyr'  r'   s    r   r)   'LayeredDirtyTypeTest__DirtySprite.setUpA  s    %%'r   c                     U R                   n[        R                  " S5      nUR                  [        R                  " SSSS5      5        UR                  U5        g N)r   r   r   r   )r'  r    r!   repaint_rectr   r   r(   groupsurfaces      r   test_repaint_rect3LayeredDirtyTypeTest__DirtySprite.test_repaint_rectD  sB    ..,6;;q!S#67

7r   c                 
   U R                   n[        R                  " S5      nUR                  [        R                  " SSSS5      5        UR                  [        R                  " SSSS5      5        UR                  U5        g r  )r'  r    r!   set_clipr   r  r   r  s      r   test_repaint_rect_with_clip=LayeredDirtyTypeTest__DirtySprite.test_repaint_rect_with_clipK  s]    ..,v{{1ac236;;q!S#67

7r   c                    [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nUR                  U5        Sn[         R                  " SS5      n[         R                  " S	S
5      n	[         R                  " S5      n
U
R                  U5        U
R                  X(5        U
R                  X95        [         R
                  R                  U R                  5      nU(       a  Xl        [         R                  " XyR                  S-
  U	R                  S-
  45      Ul        Xl        UR                  R                  u  pXR                  R                  -   nXR                  R                  -   nOkU
R                  U	5      Ul        [         R                  " XyR                  5      Ul        UR                  R                  u  pUR                  R                   u  p[         R
                  R                  U R                  5      nU
Ul        [         R                  " XxR                  5      Ul        UUl        SUl        [%        S5       H:  nUR                  R'                  SS5        U R                  R)                  U5        M<     UR+                  5          [%        X5       Hh  n[%        X5       HV  nUR                  R-                  UU5      (       a  UnOUnUR/                  UU45      nU R1                  UUSU SU S35        MX     Mj     UR3                  5         g ! UR3                  5         f = f)Nr   r   r   yellow)<   P   r   )-   r   )r   r  )r   r   )r   r   r  r{  r  r  r9   zpos=(z, ))r    r   r!   rq   r   r   r  r'  r#   whr%   source_recttopleft
subsurfacesizebottomrightdirtyrS  r&   r   lockcollidepointr   r1   unlock)r(   use_source_rectREDBLUEWHITEYELLOWr  	start_posred_sprite_sourceblue_sprite_sourceimage_sourceblue_spritestart_xstart_yend_xend_y
red_spriterV  yxexpected_colorcolors                         r   _nondirty_intersections_redrawnALayeredDirtyTypeTest__DirtySprite._nondirty_intersections_redrawnS  s   ( ll5!||F#W%h'..*U	 #KK8#[[(; ~~h/&!#1$3
 mm//8 ,  &{{00146H6J6JQ6NO K '9#*//77G55777E55777E , 7 78J KK%{{96M6MNK*//77G&++77LE ]]..tww7
'
 ++i1G1GH
!2

 qAOO##Aq) GGLL!	  		7*w.A!33Aq99),)-#NNAq62E$$UNeA3b1<MN / + NNGNNs   A7M% %M7c                 $    U R                  5         g)zWEnsure non-dirty sprites are correctly redrawn
when dirty sprites intersect with them.
Nr  r'   s    r   #test_nondirty_intersections_redrawnELayeredDirtyTypeTest__DirtySprite.test_nondirty_intersections_redrawn  s     	,,.r   c                 &    U R                  S5        g)zEnsure non-dirty sprites using source_rects are correctly redrawn
when dirty sprites intersect with them.

Related to issue #898.
TNr  r'   s    r   5test_nondirty_intersections_redrawn__with_source_rectWLayeredDirtyTypeTest__DirtySprite.test_nondirty_intersections_redrawn__with_source_rect  s     	,,T2r   r  N)F)r   r	   r
   r   r   r  r)   r  r  r  r  r  r   r   r   r   r  r  >  s-    F([z/3r   r  c                   V    \ 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g)
SpriteBasei  c                     / U l         U R                   H#  nU R                   R                  U" 5       5        M%     U R                  5       U l        g r   )r   Groupsr\  r   r   )r(   r   s     r   r)   SpriteBase.setUp  s:    [[EKKuw' ! kkmr   c                     U R                    H  nU R                  R                  U5        M      U R                    H,  nU R                  XR                  R                  5       5        M.     g r   )r   r   r   r~   r   s     r   r   SpriteBase.test_add_internal  sK    AKK$$Q'  AMM![[//12 r   c                 8   U R                    H  nU R                  R                  U5        M      U R                    H  nU R                  R                  U5        M      U R                    H.  nU R	                  XR                  R                  5       ;   5        M0     g r   )r   r   r   r   rx   r   s     r   r   SpriteBase.test_remove_internal  sr    AKK$$Q'  AKK''*  AQ++"4"4"667 r   c                      " S S[         R                  R                  5      nU" 5       nUR                  SSS5        U R	                  UR
                  / SQ5        g )Nc                   $    \ rS rSr/ rS rS rSrg)+SpriteBase.test_update.<locals>.test_spritei  c                 Z    [         R                  R                  R                  " U /UQ76   g r   r   r   s     r   r   4SpriteBase.test_update.<locals>.test_sprite.__init__  r   r   c                 .    U =R                   U-  sl         g r   r  r  s     r   r  2SpriteBase.test_update.<locals>.test_sprite.update  r  r   r   Nr	  r   r   r   r
  r    r  r   r
  r9   r  r  r  )r    r   r   r  r1   r  r  s      r   r  SpriteBase.test_update  sG    	"&--.. 	" M	Aq))95r   c                      " S S[         R                  R                  5      nU" 5       nUR                  SSSSSS9  U R	                  UR
                  / S	Q5        U R	                  UR                  SSS.5        g )
Nc                   (    \ rS rSr/ r0 rS rS rSrg)7SpriteBase.test_update_with_kwargs.<locals>.test_spritei  c                 Z    [         R                  R                  R                  " U /UQ76   g r   r   r   s     r   r   @SpriteBase.test_update_with_kwargs.<locals>.test_sprite.__init__  r   r   c                 d    U =R                   U-  sl         U R                  R                  U5        g r   )r  	sink_dictr  r  s      r   r  >SpriteBase.test_update_with_kwargs.<locals>.test_sprite.update  s"    		T!	%%f-r   r   N)	r   r	   r
   r   r  r!  r   r  r   r   r   r   r
  r    s    DI=.r   r
  r9   r  r  r  r   r  r  )r    r   r   r  r1   r  r!  r  s      r   r   "SpriteBase.test_update_with_kwargs  sh    		.&--.. 		. M	AqaQ'))95..!0DEr   c                     [        U R                  [        S9nU R                  U R                  5      n[        UR                  " 5       [        S9nU R	                  X15        g r   )rL   r   rN   r   rO   )r(   expected_groupsr   r   s       r   %test___init____added_to_groups_passed0SpriteBase.test___init____added_to_groups_passed  sD     "5T[[)R0V5r   c                     [        U R                  [        S9nU R                  R	                  U R                  5        [        U R                  R                  5       [        S9nU R                  X!5        g r   )rL   r   rN   r   r   rO   )r(   r%  r   s      r   r   SpriteBase.test_add  sM     "5$**,"5V5r   c                     U R                  U R                  R                  5       S5        U R                  R                  U R                  5        U R                  U R                  R                  5       5        g )Nz*Sprite should not be alive if in no groups)rx   r   aliver   r   r   r'   s    r   
test_aliveSpriteBase.test_alive  sR    KK!M	
 	$))+,r   c                     [        U R                  5       Hu  u  p[        U R                  S US-    [        S9nU R                  R                  U5        [        U R                  R                  5       [        S9nU R                  XC5        Mw     g )Nr9   rJ   )r~  r   rL   rN   r   r   rO   )r(   rW  r   r%  r   s        r   test_groupsSpriteBase.test_groups  si    dkk*DA$T[[1q5%9rBOKKOOADKK..0b9F  9 +r   c                 z   U R                   R                  U R                  5        U R                  U R                   R	                  5       5        U R                   R                  5         U R                  U R                   R                  5       / 5        U R                  U R                   R	                  5       5        g r   )r   r   r   r   r+  killrO   rx   r'   s    r   	test_killSpriteBase.test_kill  sw    $))+,T[[//126**,-r   c                     U R                   R                  U R                  5        U R                   R                  U R                  5        U R	                  U R                   R                  5       / 5        g r   )r   r   r   r   rO   r'   s    r   r   SpriteBase.test_remove(  sI    $4;;'T[[//126r   )r   r   N)r   r	   r
   r   r)   r   r   r  r   r&  r   r,  r/  r3  r   r   r   r   r   r  r    s:    $386 F$66-:.7r   r  c                       \ rS rSr\R
                  r\R                  \R                  \R                  \R                  /r
Srg)SpriteTypeTesti2  r   N)r   r	   r
   r   r   r   r   rA  RenderUpdatesOrderedUpdatesr  r   r   r   r   r8  r8  2  s6    ]]F 		Fr   r8  c                       \ rS rSr\R
                  r\R                  \R                  \R                  \R                  \R                  /rSrg)DirtySpriteTypeTesti=  r   N)r   r	   r
   r   r   r  r   r   rA  r9  r:  r  r  r   r   r   r   r<  r<  =  sA    F 	Fr   r<  c                   2    \ rS rSr\R
                  rS rSrg)WeakSpriteTypeTestiI  c                     SSK nU R                   Vs/ s H	  o"" 5       PM     nnU R                  R                  U5        AUR	                  5         U R                  U R                  R                  5       5        gs  snf )zq
We create a list of groups, add them to the sprite.
When we then delete the groups, the sprite should be "dead"
r   N)gcr  r   r   collectrx   r+  )r(   r@  r   r   s       r   test_weak_group_ref&WeakSpriteTypeTest.test_weak_group_refL  s]    
 	'+{{3{e%'{3


**,-	 4s   A;r   N)	r   r	   r
   r   r   
WeakSpriter   rB  r   r   r   r   r>  r>  I  s    F.r   r>  c                   ,    \ rS rSr\R
                  rSrg)DirtyWeakSpriteTypeTestiZ  r   N)r   r	   r
   r   r   WeakDirtySpriter   r   r   r   r   rF  rF  Z  s    ##Fr   rF  c                       \ rS rSrS rSrg)SingleGroupBugsTestia  c                    SS K nSS Kn " S S[        R                  5      n[        R                  " 5       n[
        R                  " SSS5      nU" 5       nUR                  U5      nXdl        AUR                  5         U R                  U" 5       5        UR                  5         UR                  U5        U" 5       Ul        UR                  5         U R                  U" 5       5        g )Nr   c                       \ rS rSrS rSrg)9SingleGroupBugsTest.test_memoryleak_bug.<locals>.MySpriteii  c                     [         R                  R                  " U /UQ70 UD6  [        R                  " SSS5      U l        U R
                  R                  5       U l        g )N)r  r  r      )r   r   r   r    r!   r#   r$   r%   r  s      r   r   BSingleGroupBugsTest.test_memoryleak_bug.<locals>.MySprite.__init__j  sF    &&t=d=f=#^^FAr:
 JJ//1	r   )r#   r%   N)r   r	   r
   r   r   r   r   r   r   MySpriterL  i  s    2r   rP  )r  ry  rN  )weakrefr@  r   r   GroupSingler    r!   refrA  assertIsNotNoner  r   r}   )r(   rQ  r@  rP  r   screenr   rs           r   test_memoryleak_bug'SingleGroupBugsTest.test_memoryleak_bugb  s     		2v}} 	2  2.JKKN


QS!	
	v:


!#r   r   N)r   r	   r
   r   rW  r   r   r   r   rI  rI  a  s    r   rI  __main__)unittestr    r   TestCaser   r   r   r#  r  r  r  r  r8  r<  r>  rF  rI  r   mainr   r   r   <module>r]     s     	x(( 	QG)) QGncHH-- cHVT- T-t*)98;L;L ***:H<M<M *~3(8(:K:K ~3Lh7 h7\Z!2!2 	*h&7&7 	. ."$13E $(++ D zMMO r   