
    ij                     (   d dl Z d dlZd dlmZ  G d de j                        Z G d de j                        Z G d de j                        Z G d	 d
      Z G d dee j                        Z G d dee j                        Z	 G d dee j                        Z
 G d d      Z G d dee j                        Z G d dee j                        Z G d de      Z G d dee      Z G d de j                        Zedk(  r e j$                          yy)    N)spritec                       e Zd Zy)SpriteModuleTestN)__name__
__module____qualname__     b/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/sprite_test.pyr   r      s    r
   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)SpriteCollideTestc                 B   t        j                         | _        t        j                         | _        t        j                  | j                        | _        t        j                  | j                        | _        t        j                  | j                        | _        t        j                  dt        j                  d      | j
                  _        t        j                  dt        j                  d      | j                  _        t        j                  dt        j                  d      | j                  _        | j
                  j                  j                         | j
                  _        | j                  j                  j                         | j                  _        | j                  j                  j                         | j                  _        | j                  j                  j                  dd       | j                  j                  j                  dd       y )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   setUpzSpriteCollideTest.setUp   s6   &&('')--(--)--)x"Ex"Ex"Eww}}--/ww}}--/ww}}--/R#S#&r
   c                     | j                  t        j                  | j                  | j                  dd       | j
                  g       y NFdokillcollidedassertEqualr   spritecollider   r   r   r#   s    r   0test_spritecollide__works_if_collided_cb_is_NonezBSpriteCollideTest.test_spritecollide__works_if_collided_cb_is_None&   s5      $((54PWWI	
r
   c                     | j                  t        j                  | j                  | j                  d      | j
                  g       y )NF)r)   r+   r#   s    r   3test_spritecollide__works_if_collided_cb_not_passedzESpriteCollideTest.test_spritecollide__works_if_collided_cb_not_passed-   s2      $((5ADGG9	
r
   c                 ~    | j                  t        t        j                  | j                  | j
                  dd       y )NF   r(   )assertRaises	TypeErrorr   r-   r   r   r#   s    r   /test_spritecollide__collided_must_be_a_callablezASpriteCollideTest.test_spritecollide__collided_must_be_a_callable3   s1    v++TWWdhhuWX 	 	
r
   c                     | j                  t        j                  | j                  | j                  dt        j
                        | j                  g       y r'   )r,   r   r-   r   r   collide_rectr   r#   s    r   5test_spritecollide__collided_defaults_to_collide_rectzGSpriteCollideTest.test_spritecollide__collided_defaults_to_collide_rect9   s@      %&:M:M WWI		
r
   c           
          | j                  t        j                  | j                  | j                  dt        j
                  d            | j                  g       y NFg      ?r(   )r,   r   r-   r   r   collide_rect_ratior   r#   s    r   2test_collide_rect_ratio__ratio_of_one_like_defaultzDSpriteCollideTest.test_collide_rect_ratio__ratio_of_one_like_defaultB   sF      %&:S:STW:X WWI		
r
   c                    t        j                  d      }t        | j                  j	                         t
              }t        t        j                  | j                  | j                  d|      t
              }| j                  ||       y N      4@keyFr(   )	r   r;   sortedr   spritesidr-   r   assertListEqualr$   collided_funcexpected_spritescollided_spritess       r   8test_collide_rect_ratio__collides_all_at_ratio_of_twentyzJSpriteCollideTest.test_collide_rect_ratio__collides_all_at_ratio_of_twentyK   so    11$7!$(("2"2"4"=!  %- 	
 	-/?@r
   c                     | j                  t        j                  | j                  | j                  dt        j
                        | j                  g       y r'   )r,   r   r-   r   r   collide_circler   r#   s    r   "test_collide_circle__no_radius_setz4SpriteCollideTest.test_collide_circle__no_radius_setY   s@      %&:O:O WWI		
r
   c           
          | j                  t        j                  | j                  | j                  dt        j
                  d            | j                  g       y r:   )r,   r   r-   r   r   collide_circle_ratior   r#   s    r   5test_collide_circle_ratio__no_radius_and_ratio_of_onezGSpriteCollideTest.test_collide_circle_ratio__no_radius_and_ratio_of_oneb   sH      44S9	 WWI	
r
   c                    t        j                  d      }t        | j                  j	                         t
              }t        t        j                  | j                  | j                  d|      t
              }| j                  ||       y r>   )	r   rO   rB   r   rC   rD   r-   r   rE   rF   s       r   8test_collide_circle_ratio__no_radius_and_ratio_of_twentyzJSpriteCollideTest.test_collide_circle_ratio__no_radius_and_ratio_of_twentyn   so    33D9!$(("2"2"4"=!  %- 	
 	-/?@r
   c                 4   t        j                  d      }t        j                  | j                  | j                  d|       | j                  t        j                  | j                  | j                  dt         j                        | j                  g       y )Nr?   Fr(   )r   rO   r-   r   r   r,   rL   r   )r$   rG   s     r   7test_collide_circle__radius_set_by_collide_circle_ratiozISpriteCollideTest.test_collide_circle__radius_set_by_collide_circle_ratio|   sn    
 33D9TWWdhhu}U  %&:O:O WWI		
r
   c                 B   t        j                  d      }t        t        j                  | j                  | j
                  d|      t              }t        t        j                  | j                  | j
                  d|      t              }| j                  ||       y )Ng       @Fr(   r@   )r   rO   rB   r-   r   r   rD   rE   rF   s       r   ;test_collide_circle_ratio__no_radius_and_ratio_of_two_twicezMSpriteCollideTest.test_collide_circle_ratio__no_radius_and_ratio_of_two_twice   s     33C8
 "  %- 	
 "  %- 	
 	-/?@r
   c                 x   d| j                   _        d| j                  _        d| j                  _        t        j
                  }t        | j                  j                         t              }t        t	        j                  | j                   | j                  d|      t              }| j                  ||       y )Nr   r     r@   Fr(   )r   radiusr   r   r   rL   rB   r   rC   rD   r-   rE   rF   s       r   #test_collide_circle__with_radii_setz5SpriteCollideTest.test_collide_circle__with_radii_set   s    --!$(("2"2"4"=!  %- 	
 	-/?@r
   c                    d| j                   _        d| j                  _        d| j                  _        t	        j
                  d      }t        | j                  j                         t              }t        t	        j                  | j                   | j                  d|      t              }| j                  ||       y )Nr   r   rX   g      ?r@   Fr(   )r   rY   r   r   r   rO   rB   r   rC   rD   r-   rE   rF   s       r   )test_collide_circle_ratio__with_radii_setz;SpriteCollideTest.test_collide_circle_ratio__with_radii_set   s    33C8!$(("2"2"4"=!  %- 	
 	-/?@r
   c                    | j                   j                  j                  d       | j                  j                  j                  d       | j                  j                  j                  d       | j                  t        j                  | j                   | j                  dt        j                        | j                  g       t        j                  j                  | j                   j                        | j                   _        t        j                  j                  | j                  j                        | j                  _        t        j                  j                  | j                  j                        | j                  _        | j                  t        j                  | j                   | j                  dt        j                        | j                  g       y )N)   r^   r^   r^   Fr(   )r   r   fillr   r   r,   r   r-   r   collide_maskr   maskfrom_surfacer#   s    r   test_collide_mask__opaquez+SpriteCollideTest.test_collide_mask__opaque   s/   /0/0/0 	  %&:M:M WWI		
 {{//>{{//>{{//> 	  %&:M:M WWI		
r
   c                    | j                   j                  j                  d       | j                  j                  j                  d       | j                  j                  j                  d       t
        j                  j                  | j                   j                  d      | j                   _        t
        j                  j                  | j                  j                  d      | j                  _        t
        j                  j                  | j                  j                  d      | j                  _        | j                  t        j                  | j                   | j                  dt        j                               y )N)r^   r^   r^   r   r^   Fr(   )r   r   r_   r   r   r   ra   rb   assertFalser   r-   r   r`   r#   s    r   test_collide_mask__transparentz0SpriteCollideTest.test_collide_mask__transparent   s    -.-.-.{{//sC{{//sC{{//sC  %&:M:M	
r
   c                 *   | j                   }t        j                  | j                  | j                        }| j                  ||       | j                   j                  j                  dd       t        j                  | j                  | j                        }| j                  |       | j                  j                  j                  dd       | j                  }t        j                  | j                  | j                        }| j                  ||       | j                   j                  j                  dd       | j                  j                         }t        j                  | j                  | j                        }| j                  ||       y )Nr   r   ii)r   r   spritecollideanyr   r   r,   r!   r"   assertIsNoner   rC   assertIn)r$   expected_spritecollided_spriteexpected_sprite_choicess       r   0test_spritecollideany__without_collided_callbackzBSpriteCollideTest.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                 .   i }i }dg}|||fd}| j                   j                         }t        j                  | j                  | j                   |      }| j                  ||       | j                  t        |      d       | j                  || j                     d       | j                  t        |      d       | j                  t        |j                               d   d       | j                  | j                  |v xs | j                  |v        |j                          |j                          d|d<   t        j                  | j                  | j                   |      }| j                  |       | j                  t        |      d       | j                  || j                     t        | j                                | j                  t        |      t        | j                                | j                   D ]  }| j                  ||   d        y )NTc                 t    |j                  | d      }d|z   || <   |j                  |d      }d|z   ||<   |d   S )Nr   r2   )get)spr_aspr_b
arg_dict_a
arg_dict_breturn_containercounts         r   collided_callbackzZSpriteCollideTest.test_spritecollideany__with_collided_callback.<locals>.collided_callback$  sK     NN5!,E !E	JuNN5!,E !E	Ju#A&&r
   r2   r   F)r   rC   r   rh   r   rj   r,   lenlistvalues
assertTruer   r   clearri   )r$   rt   ru   rv   rx   rm   rl   ss           r   -test_spritecollideany__with_collided_callbackz?SpriteCollideTest.test_spritecollideany__with_collided_callback  s    

 6 "!-	'" #'(("2"2"4 11$''488EVWo'>? 	Z!,DGG,a0
 	Z!,j//1215q9:-FJ1FG# !11$''488EVW/* 	Z!,DGG,c$((m<Z#dhh-8  	/AZ]A.	/r
   c                    | j                   | j                  gi}t        j                  j	                  | j
                  | j                  dd      }| j                  ||       t        j                  j	                  | j
                  | j                  dd      }| j                  ||       t        j                  j	                  | j
                  | j                  dd      }| j                  ||       i }t        j                  j	                  | j
                  | j                  dd      }| j                  ||       | j                  j                  j                  dd       | j                   | j                  gi}t        j                  j	                  | j
                  | j                  dd      }| j                  ||       i }t        j                  j	                  | j
                  | j                  dd      }| j                  ||       y )NFTi)r   r   r   r   groupcollider   r   assertDictEqualr   r!   r"   )r$   expected_dictcrasheds      r   ,test_groupcollide__without_collided_callbackz>SpriteCollideTest.test_groupcollide__without_collided_callbackZ  s~   
 477),--,,TWWdhhuM]G4--,,TWWdhhuM]G4 --,,TWWdhhtL]G4--,,TWWdhhuM]G4 	T4(477),--,,TWWdhheL]G4--,,TWWdhhuM]G4r
   c                    d }d }i }t         j                  j                  | j                  | j                  dd|      }| j                  ||       | j                  t        | j                  j                         t              i}t         j                  j                  | j                  | j                  dd|      }|j                         D ]  }|j                  t                | j                  ||       t         j                  j                  | j                  | j                  dd|      }|j                         D ]  }|j                  t                | j                  ||       i }t         j                  j                  | j                  | j                  dd|      }| j                  ||       | j                  t        | j                  j                         t              i}t         j                  j                  | j                  | j                  dd|      }|j                         D ]  }|j                  t                | j                  ||       i }t         j                  j                  | j                  | j                  dd|      }| j                  ||       | j                  j                  | j                         | j                  j                  | j                         i }t         j                  j                  | j                  | j                  dd|      }| j                  ||       | j                  | j                  g| j                  | j                  gi}t         j                  j                  | j                  | j                  dd|      }| j                  ||       i }t         j                  j                  | j                  | j                  dd|      }| j                  ||       y )Nc                      y)NTr	   rr   rs   s     r   <lambda>zMSpriteCollideTest.test_groupcollide__with_collided_callback.<locals>.<lambda>      r
   c                      y)NFr	   r   s     r   r   zMSpriteCollideTest.test_groupcollide__with_collided_callback.<locals>.<lambda>  r   r
   Fr@   T)r   r   r   r   r   r   r   rB   rC   rD   r{   sortaddr   r   )r$   collided_callback_truecollided_callback_falser   r   values         r   )test_groupcollide__with_collided_callbackz;SpriteCollideTest.test_groupcollide__with_collided_callback~  s9   !:"< --,,GGTXXue-D
 	]G4&)9)9);"DE--,,GGTXXue-C
 ^^% 	EJJ2J	 	]G4 --,,GGTXXue-C
 ^^% 	EJJ2J	 	]G4 --,,GGTXXud,C
 	]G4&)9)9);"DE--,,GGTXXud,B
 ^^% 	EJJ2J	 	]G4--,,GGTXXud,B
 	]G4 	DGGTWW--,,GGTXXtU,C
 	]G4477)TWWtwwi@--,,GGTXXtU,B
 	]G4--,,GGTXXtU,B
 	]G4r
   c                    | j                  t        j                  j                  | j                  | j
                               | j                  t        j                  j                  | j
                  | j                               | j                  j                  j                  | j
                  j                  _        | j                  t        j                  j                  | j
                  | j                               | j                  t        j                  j                  | j                  | j
                               | j
                  j                  j                  dd       | j                  t        j                  j                  | j
                  | j                               | j                  t        j                  j                  | j                  | j
                               | j                  j                  j                  | j                  j                  j                  f| j
                  j                  _        | j                  t        j                  j                  | j                  | j
                               | j                  t        j                  j                  | j
                  | j                               | j                  t        j                  j                  | j                  | j                               | j                  t        j                  j                  | j                  | j                               y Nr   )r|   r   r   r7   r   r   r   r!   center
inflate_iprightbottomre   r#   s    r   test_collide_rectz#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
   N)r   r   r   r%   r.   r0   r5   r8   r<   rJ   rM   rP   rR   rT   rV   rZ   r\   rc   rf   rn   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                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)AbstractGroupTypeTestc                    t        j                         | _        t        j                         | _        t        j                  | j                        | _        t        j                  | j                        | _        t        j                  | j                        | _        t        j                  | j                        | _        t        j                  d      | j
                  _        | j
                  j                  j                  t        j                  d             | j
                  j                  j                         | j
                  _        t        j                  d      | j                  _        | j                  j                  j                  t        j                  d             | j                  j                  j                         | j                  _        d| j                  j                  _        t        j                  d      | j                  _        | j                  j                  j                  t        j                  d             | j                  j                  j                         | j                  _        d| j                  j                  _        t        j                  d      | j                  _        | j                  j                  j                  t        j                  d             | j                  j                  j                         | j                  _        d| j                  j                  _        d| j                  j                  _        t        j                  d      | _        t        j                  d      | _        | j&                  j                  t        j                  d             y )	Nr   redgreenr   bluewhite)   r   grey)r   r   r   r   r   r   r   r   s4r   r   r   r_   Colorr    r!   lefttopbgscrr#   s    r   r%   z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           
      &   | j                  d| j                  | j                  v        | j                  d| j                  j                  | j                               | j                  d| j                  j                  | j                  | j                  g             | j                  d| j                  j                  | j                  | j                  | j                  g             | j                  d| j                  j                  | j                  | j                  | j                               | j                  d| j                  j                  | j                  t        j                  | j                  | j                                     | j                  d| j                  j                  | j                  | j                  | j                  g             | j                   | j                  j                  g         | j                  | j                  j                  g              | j                  | j                  j                  g g             | j                  d| j                  j                  | j                               y)z-See if AbstractGroup.has() works as expected.TN)r,   r   r   hasr   assertNotEqualr   r   Groupre   r   r#   s    r   test_hasz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                 P   t        j                         }| j                  | j                  | j                  | j
                  f}|D ]  }| j                  ||        |j                  | j                  | j                  g| j                         |D ]  }| j                  ||        y N)
r   r   r   r   r   r   assertNotInr   r   rj   )r$   ag3rC   r~   s       r   test_addzAbstractGroupTypeTest.test_add#  s    ""$77DGGTWWdgg6 	%AQ$	% 	$''DHH- 	"AMM!S!	"r
   c                     | j                  | j                  | j                         | j                  j                  | j                         | j	                  | j                  | j                         y r   )r   r   r   add_internalrj   r#   s    r   test_add_internalz'AbstractGroupTypeTest.test_add_internal/  sF    $((+dgg&dggtxx(r
   c                 Z   | j                   j                  | j                         | j                   j                  | j                  | j                         | j                  d| j                  j                  d             | j                  d| j                  j                  d             y )N)r   r   r   r^      r      r   )r   drawr   r}   r   r,   get_atr#   s    r   
test_clearz AbstractGroupTypeTest.test_clear6  sj    TXXdhh()@A)ABr
   c           	         | j                   j                  | j                         | j                  d| j                  j	                  d             | j                  d| j                  j	                  d             | j                  | j                   j
                  | j                     t        j                  dddd             | j                  | j                   j
                  | j                     t        j                  dddd             y )N)r^   r   r   r^   r   )r   r^   r   r^   r   r   r   )
r   r   r   r,   r   
spritedictr   r   Rectr   r#   s    r   	test_drawzAbstractGroupTypeTest.test_draw<  s    TXX)488??6+BC)488??7+CD++DGG4fkk!QB6OP++DGG4fkk"aR6PQr
   c                     | j                   j                          | j                  | j                  | j                   v        | j                  | j                  | j                   v        y r   )r   emptyre   r   r   r#   s    r   
test_emptyz AbstractGroupTypeTest.test_emptyD  sE    DGG+,DGG+,r
   c                     | j                  | j                  j                  | j                               | j	                  | j                  j                  | j
                               y r   )r|   r   has_internalr   re   r   r#   s    r   test_has_internalz'AbstractGroupTypeTest.test_has_internalI  sB    ,,TWW56--dgg67r
   c                    | j                   j                  | j                         | j                  | j                   | j                  j	                         v        | j                  | j                   j                  | j                               | j                  j                  | j                  | j                         | j                  | j                  | j                  j	                         v        | j                  | j                  | j                  j	                         v        | j                  | j                  j                  | j                  | j                               | j                   j                  | j                  | j                  | j                         | j                  j                  | j                  | j                         t        j                  | j                        }| j                   j                  | j                  |g| j                         | j                  | j                   | j                  j	                         v        | j                  | j                   | j                  j	                         v        | j                  | j                   | j                  j	                         v        | j                  | j                   | j                  j	                         v        | j                  | j                   j                  | j                  | j                  | j                  | j                               y r   )r   remover   re   groupsr   r   r   r   r   r   r   r   r$   gs     r   test_removez!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                     | j                   j                  | j                         | j                  | j                   j	                  | j                               y r   )r   remove_internalr   re   r   r#   s    r   test_remove_internalz*AbstractGroupTypeTest.test_remove_internale  s9    (--dgg67r
   c                     t        | j                  | j                  ft              }t        | j                  j                         t              }| j                  ||       y Nr@   )rB   r   r   rD   r   rC   rE   )r$   rH   sprite_lists      r   test_spritesz"AbstractGroupTypeTest.test_spritesi  sD    !477DGG"4"=TWW__.B7[*:;r
   c                      G d dt         j                  j                        } || j                        }| j                  j	                  ddd       | j                  |j                  g d       y )Nc                       e Zd Zg Zd Zd Zy)6AbstractGroupTypeTest.test_update.<locals>.test_spritec                 X    t        j                  j                  j                  | g|  y r   r   r   r   __init__r$   r   s     r   r   z?AbstractGroupTypeTest.test_update.<locals>.test_sprite.__init__s      $$--d<V<r
   c                 .    | xj                   |z  c_         y r   sinkr$   argss     r   updatez=AbstractGroupTypeTest.test_update.<locals>.test_sprite.updatev      		T!	r
   Nr   r   r   r   r   r   r	   r
   r   test_spriter   p      D="r
   r   r2         r2   r   r   )r   r   r   r   r   r,   r   r$   r   r~   s      r   test_updatez!AbstractGroupTypeTest.test_updateo  sR    	"&--.. 	"  q!Q))95r
   c                 (    G d dt         j                  j                        } || j                        }| j                  j	                  ddddd       | j                  |j                  g d	       | j                  |j                  ddd       y )
Nc                        e Zd Zg Zi Zd Zd Zy)BAbstractGroupTypeTest.test_update_with_kwargs.<locals>.test_spritec                 X    t        j                  j                  j                  | g|  y r   r   r   s     r   r   zKAbstractGroupTypeTest.test_update_with_kwargs.<locals>.test_sprite.__init__  r   r
   c                 d    | xj                   |z  c_         | j                  j                  |       y r   )r   sink_kwargsr   r$   r   kwargss      r   r   zIAbstractGroupTypeTest.test_update_with_kwargs.<locals>.test_sprite.update  s$    		T!	  ''/r
   N)r   r   r   r   r   r   r   r	   r
   r   r   r     s    DK=0r
   r   r2   r   r      r   foobarr   )r   r   r   r   r   r,   r   r   r   s      r   test_update_with_kwargsz-AbstractGroupTypeTest.test_update_with_kwargs~  ss    		0&--.. 		0  q!QA1-))9500!A2FGr
   N)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                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)LayeredGroupBasec                    d}| j                         }| j                  j                  ||       | j                  j                  |      }| j	                  t        | j                  j                        d       | j	                  || j                  j                  |             | j	                  ||       | j	                  || j                  j                  |          y )Ni  layerr2   )r   LGr   get_layer_of_spriter,   ry   _spritelist_spritelayersr$   expected_layersprr   s       r   test_get_layer_of_spritez)LayeredGroupBase.test_get_layer_of_sprite  s    kkmC~.++C0TWW00115 ; ;C @A/ 5 5c :;r
   c                 >   | j                   j                  }| j                         }| j                   j                  |       | j                   j	                  |      }| j                  t        | j                   j                        d       | j                  ||       y Nr2   )r   _default_layerr   r   r   r,   ry   r   r  s       r   r   zLayeredGroupBase.test_add  so    //kkmC++C0TWW00115/r
   c                 $   d}| j                         }||_        | j                  j                  |       | j                  j	                  |      }| j                  t        | j                  j                        d       | j                  ||       y )Nr   r2   r   _layerr   r   r   r,   ry   r   r  s       r   %test_add__sprite_with_layer_attributez6LayeredGroupBase.test_add__sprite_with_layer_attribute  sl    kkm#
C++C0TWW00115/r
   c                    d}| j                         }| j                  j                  ||       | j                  j                  |      }| j	                  t        | j                  j                        d       | j	                  ||       y )Nr   r   r2   )r   r   r   r   r,   ry   r   r  s       r   test_add__passing_layer_keywordz0LayeredGroupBase.test_add__passing_layer_keyword  si    kkmC~.++C0TWW00115/r
   c                 (   d}| j                         }d|_        | j                  j                  ||       | j                  j	                  |      }| j                  t        | j                  j                        d       | j                  ||       y )N   r   r   r2   r	  r  s       r   &test_add__overriding_sprite_layer_attrz7LayeredGroupBase.test_add__overriding_sprite_layer_attr  sp    kkm
C~.++C0TWW00115/r
   c                     | j                         }t        j                  |      }|j                  }|j                  |   }| j	                  t        |j                        d       | j	                  ||       y r  )r   LayeredUpdatesr  r   r,   ry   r   )r$   r  lrg2r  r   s        r   test_add__adding_sprite_on_initz0LayeredGroupBase.test_add__adding_sprite_on_init  sc    kkm$$S),,""3'T--.2/r
   c                     d}| j                         }||_        t        j                  |      }|j                  |   }| j	                  t        |j                        d       | j	                  ||       y )Nr   r2   r   r
  r  r   r,   ry   r   r$   r  r  r  r   s        r    test_add__sprite_init_layer_attrz1LayeredGroupBase.test_add__sprite_init_layer_attr  sd    kkm#
$$S)""3'T--.2/r
   c                     d}| j                         }t        j                  ||      }|j                  |   }| j                  t	        |j
                        d       | j                  ||       y )N!   r   r2   )r   r  r   r,   ry   r   r  s        r   #test_add__sprite_init_passing_layerz4LayeredGroupBase.test_add__sprite_init_passing_layer  s_    kkm$$S?""3'T--.2/r
   c                     d}| j                         }d|_        t        j                  ||      }|j                  |   }| j	                  t        |j                        d       | j	                  ||       y )Nr  7   r   r2   r  r  s        r   %test_add__sprite_init_overiding_layerz6LayeredGroupBase.test_add__sprite_init_overiding_layer  sf    kkm
$$S?""3'T--.2/r
   c                    | j                   j                  }d}t        |      D cg c]  }| j                          }}| j                   j	                  |       | j                  t        | j                   j                        |       t        |      D ]2  }| j                   j                  ||         }| j                  ||       4 y c c}w r   )	r   r  ranger   r   r,   ry   r   r   r$   r  sprite_count_rC   ir   s          r   test_add__spritelistz%LayeredGroupBase.test_add__spritelist  s    //*/*=>Q4;;=>>GTWW001<@|$ 	4AGG//
;EUN3	4 ?s   C
c                    g }d}t        |      D ]+  }|j                  | j                                ||d   _        - | j                  j                  |       | j                  t        | j                  j                        |       t        |      D ]2  }| j                  j                  ||         }| j                  ||       4 y )Nr   )
r   appendr   r
  r   r   r,   ry   r   r   )r$   rC   sprite_and_layer_countr$  r   s        r   $test_add__spritelist_with_layer_attrz5LayeredGroupBase.test_add__spritelist_with_layer_attr  s    !#-. 	#ANN4;;=)!"GBK	# 	GTWW0013IJ-. 	'AGG//
;EUA&	'r
   c                 z   d}d}t        |      D cg c]  }| j                          }}| j                  j                  ||       | j	                  t        | j                  j                        |       t        |      D ]2  }| j                  j                  ||         }| j	                  ||       4 y c c}w )Nr  r   r   )r   r   r   r   r,   ry   r   r   r!  s          r   "test_add__spritelist_passing_layerz3LayeredGroupBase.test_add__spritelist_passing_layer  s    */*=>Q4;;=>>G>2TWW001<@|$ 	4AGG//
;EUN3	4 ?s   B8c                    d}g }d}t        |      D ]+  }|j                  | j                                ||d   _        - | j                  j                  ||       | j                  t        | j                  j                        |       t        |      D ]2  }| j                  j                  ||         }| j                  ||       4 y )Nr  r   r'  r   )
r   r(  r   r   r   r   r,   ry   r   r   )r$   r  rC   r)  r$  r   s         r   %test_add__spritelist_overriding_layerz6LayeredGroupBase.test_add__spritelist_overriding_layer  s    !#-. 	"ANN4;;=) !GBK	" 	G>2TWW0013IJ-. 	4AGG//
;EUN3	4r
   c                 V   d}t        |      D cg c]  }| j                          }}t        j                  |      }|j                  }| j	                  t        |j                        |       t        |      D ](  }|j                  ||         }| j	                  ||       * y c c}w r   )r   r   r  r  r,   ry   r   r   )r$   r"  r#  rC   r  r  r$  r   s           r   test_add__spritelist_initz*LayeredGroupBase.test_add__spritelist_init+  s    */*=>Q4;;=>>$$W-,,T--.=|$ 	4A,,WQZ8EUN3	4 ?s   B&c                    g }d}t        |      D ]>  }|j                  | j                                t        j                  d      |d   _        @ | j                  j                  |       | j                  t        | j                  j                        |       t        |      D ]   }| j                  j                  ||          " | j                  t        | j                  j                        d       y )Nr   )r   r   r   r   r'  r   )r   r(  r   r   r   r!   r   r   r,   ry   r   r   )r$   rC   r"  r$  s       r   test_remove__spritez$LayeredGroupBase.test_remove__sprite9  s    |$ 	9ANN4;;=)%{{<8GBK	9 	GTWW001<@|$ 	'AGGNN71:&	' 	TWW00115r
   c                    g }d}t        |dd      D ]+  }|j                  | j                                ||d   _        - | j                  j                  |       | j                  t        | j                  j                        |       t        t        |            }| j                  j                         }| j                  ||       y )Nr   r   r'  )r   r(  r   r
  r   r   r,   ry   r   rz   reversedrC   rE   )r$   rC   r)  r$  rH   actual_spritess         r   r   zLayeredGroupBase.test_spritesI  s    !#-q"5 	#ANN4;;=)!"GBK	# 	GTWW0013IJ   12*^-=>r
   c                 R   g }g }d}t        |      D ]L  }|j                  |       t        d      D ]+  }|j                  | j                                ||d   _        - N | j                  j                  |       | j                  j                         }| j                  ||       y )Nr   r   r'  )r   r(  r   r
  r   r   layersrE   )r$   rC   expected_layerslayer_countr$  jr7  s          r   test_layerszLayeredGroupBase.test_layers[  s    {# 	'A""1%1X 't{{}-%&"'	'
 	G!V_5r
   c                 F   g d}|D ]-  }| j                   j                  | j                         |       / |j                          t	        | j                   j                               D ]5  \  }}| j                   j                  |      }| j                  |||          7 y )N)r2   r         r   r=  r   r=  r   r   r=  r2   r   	      r=  6   r>  r   +   r=  r2   r   )r   r   r   r   	enumeraterC   r   r,   )r$   r7  layidxr  r   s         r   test_add__layers_are_correctz-LayeredGroupBase.test_add__layers_are_correctj  s    U 	2CGGKKSK1	2!$''//"34 	1HCGG//4EUF3K0	1r
   c                    d}| j                         }| j                  j                  ||       | j                  | j                  j                  |   |       d}| j                  j                  ||       | j                  | j                  j                  |   |       d}| j                         }d|_        | j                  j                  |       | j                  j                  ||       | j                  |j                  |       y )Nc   r   ,   M   r  )r   r   r   r,   r   change_layerr   )r$   r  r  spr2s       r   test_change_layerz"LayeredGroupBase.test_change_layeru  s    kkmC~...s3^DS.1..s3^D{{}
DT>2^4r
   c                 r   g }g }t        d      D ]]  }| j                         }t        j                  |dz  |dz  dd      |_        |j                  |       |dk  sM|j                  |       _ | j                  j                  |       | j                  j                  d      }| j                  ||       y )Nr   r   r   r   r   r   )
r   r   r   r   r!   r(  r   r   get_sprites_atr,   )r$   rC   rH   r$  r  results         r   test_get_sprites_atz$LayeredGroupBase.test_get_sprites_at  s    q 	-A++-C{{1r61r63<CHNN31u '',	- 	G''1!12r
   c                 (   g d}|D ]-  }| j                   j                  | j                         |       / | j                   j                         }| j	                  || j                   j                                | j	                  |t        |             | j	                  |t        | j                   j                  j                                      | j	                  || j                   j                  | j                   j                  d             y )N
r2   r   r   r>  r   r   r   X      r   r   r'  )	r   r   r   get_top_layerr,   maxr   r{   r   )r$   r7  r$  	top_layers       r   test_get_top_layerz#LayeredGroupBase.test_get_top_layer  s    1 	0AGGKKQK/	0GG))+	DGG$9$9$;<CK0C(=(=(D(D(F$GHDGG$9$9$'':M:Mb:Q$RSr
   c                 (   g d}|D ]-  }| j                   j                  | j                         |       / | j                   j                         }| j	                  || j                   j                                | j	                  |t        |             | j	                  |t        | j                   j                  j                                      | j	                  || j                   j                  | j                   j                  d             y )NrT  r   r   )	r   r   r   get_bottom_layerr,   minr   r{   r   )r$   r7  r$  bottom_layers       r   test_get_bottom_layerz&LayeredGroupBase.test_get_bottom_layer  s    1 	0AGGKKQK/	0ww//1tww'?'?'ABs6{3s477+@+@+G+G+I'JKtww'<'<TWW=P=PQR=S'TUr
   c                    g d}|D ]-  }| j                   j                  | j                         |       / | j                         }| j                   j                  |d       | j                  || j                   j                  d          | j                   j                  |       | j                  || j                   j                  d          y )NrT  r   r   r'  )r   r   r   r   r   move_to_frontr,   r$   r7  r$  r  s       r   test_move_to_frontz#LayeredGroupBase.test_move_to_front  s    1 	0AGGKKQK/	0kkmCq!C!4!4R!89c"dgg11"56r
   c                    g d}|D ]-  }| j                   j                  | j                         |       / | j                         }| j                   j                  |d       | j                  || j                   j                  d          | j                   j                  |       | j                  || j                   j                  d          y )NrT  r   r  r   )r   r   r   r   r   move_to_backr,   rb  s       r   test_move_to_backz"LayeredGroupBase.test_move_to_back  s    1 	0AGGKKQK/	0kkmCr"C!4!4Q!78S!dgg11!45r
   c                 .   g d}|D ]-  }| j                   j                  | j                         |       / | j                   j                         }| j                   j	                  | j                   j                               }| j                  ||       y )NrT  r   )r   r   r   rW  r   get_top_spriter,   )r$   r7  r$  r  r   s        r   test_get_top_spritez$LayeredGroupBase.test_get_top_sprite  ss    1 	0AGGKKQK/	0..0++DGG,B,B,DE/r
   c                    i }g d}|D ]Q  }| j                         }||_        | j                  j                  |       ||vrg ||<   ||   j	                  |       S | j                  j                         D ]`  }| j                  j                  |      D ]@  }| j                  |||          ||   j                  |       t        ||         dk(  s>||= B b | j                  t        |j                               d       y )N) r2   r   r   r=  r   r@  r>  r   r2   r   r   r   r=  r@  r>  r?  r2   r   r   r   r   r=  r@  r>  r?  r   r2   r=  r   r   r   r   r   )r   r
  r   r   r(  r7  get_sprites_from_layerrj   r   ry   r,   r{   )r$   rC   r7  rD  r  s        r   test_get_sprites_from_layerz,LayeredGroupBase.test_get_sprites_from_layer  s    !
D  	%C++-CCJGGKK'!!CL$	% 77>># 	%Cww55c: %c73<0##C(ws|$)%	% 	W^^-.2r
   c                 .   g }g }g d}|D ]\  }| j                         }||_        | j                  j                  |       |dk(  r|j	                  |       L|j	                  |       ^ |j                  t               |j                  t               t        | j                  j                  d      t              }t        | j                  j                  d      t              }| j                  ||       | j                  ||       | j                  t        | j                        t        |      t        |      z          | j                  j                  dd       t        | j                  j                  d      t              }t        | j                  j                  d      t              }| j                  ||       | j                  ||       | j                  t        | j                        t        |      t        |      z          y )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@   r   )r   r
  r   r   r(  r   rD   rB   rk  rE   r,   ry   switch_layer)r$   sprites1sprites2r7  rD  r  layer2_spriteslayer3_spritess           r   test_switch_layerz"LayeredGroupBase.test_switch_layer  s   V 	%C++-CCJ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                 r   | j                   j                  | j                                | j                   j                         d   }| j                   j	                         }| j                  |t        | j                                | j                  ||       | j                  ||j                                y )Nr   )	r   r   r   rC   copyassertIsInstancetyperj   r   )r$   r  lg_copys      r   	test_copyzLayeredGroupBase.test_copy#  sv    DKKM"ggoo"'',,.gtDGG}5c7#gszz|,r
   N)r   r   r   r  r   r  r  r  r  r  r  r  r%  r*  r,  r.  r0  r2  r   r;  rF  rM  rR  rZ  r_  rc  rf  ri  rl  rs  ry  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                   *    e Zd Zej                  Zd Zy)"LayeredUpdatesTypeTest__SpriteTestc                 6    t        j                         | _        y r   r   r  r   r#   s    r   r%   z(LayeredUpdatesTypeTest__SpriteTest.setUp3      '')r
   N)r   r   r   r   r   r%   r	   r
   r   r{  r{  0  s    ]]F*r
   r{  c                   *    e Zd Zej                  Zd Zy)#LayeredUpdatesTypeTest__DirtySpritec                 6    t        j                         | _        y r   r}  r#   s    r   r%   z)LayeredUpdatesTypeTest__DirtySprite.setUp:  r~  r
   N)r   r   r   r   DirtySpriter%   r	   r
   r   r  r  7  s    F*r
   r  c                   J    e Zd Zej                  Zd Zd Zd ZddZd Z	d Z
y)	!LayeredDirtyTypeTest__DirtySpritec                 6    t        j                         | _        y r   )r   LayeredDirtyr   r#   s    r   r%   z'LayeredDirtyTypeTest__DirtySprite.setUpA  s    %%'r
   c                     | j                   }t        j                  d      }|j                  t        j                  dddd             |j                  |       y N)r   r   r   r   )r   r   r   repaint_rectr   r   r$   groupsurfaces      r   test_repaint_rectz3LayeredDirtyTypeTest__DirtySprite.test_repaint_rectD  sB    ..,6;;q!S#67

7r
   c                    | j                   }t        j                  d      }|j                  t        j                  dddd             |j                  t        j                  dddd             |j                  |       y r  )r   r   r   set_clipr   r  r   r  s      r   test_repaint_rect_with_clipz=LayeredDirtyTypeTest__DirtySprite.test_repaint_rect_with_clipK  s]    ..,v{{1ac236;;q!S#67

7r
   c                    t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }|j                  |       d}t        j                  dd      }t        j                  d	d
      }	t        j                  d      }
|
j                  |       |
j                  ||       |
j                  ||	       t         j
                  j                  | j                        }|r|
|_        t        j                  ||	j                  dz
  |	j                  dz
  f      |_        |	|_        |j                  j                  \  }}||j                  j                  z   }||j                  j                  z   }nm|
j                  |	      |_        t        j                  ||	j                        |_        |j                  j                  \  }}|j                  j                   \  }}t         j
                  j                  | j                        }|
|_        t        j                  ||j                        |_        ||_        d|_        t%        d      D ]9  }|j                  j'                  dd       | j                  j)                  |       ; |j+                          	 t%        ||      D ]a  }t%        ||      D ]P  }|j                  j-                  ||      r|}n|}|j/                  ||f      }| j1                  ||d| d| d       R c 	 |j3                          y # |j3                          w xY w)Nr   r   r   yellow)<   P   r   )-   r   )r   r   )r   r   )r   r   rO  r@  r   r   r2   zpos=(z, ))r   r   r   r_   r   r   r  r   r   whr!   source_recttopleft
subsurfacesizebottomrightdirtyr   r"   r   lockcollidepointr   r,   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_spriter#  yxexpected_colorcolors                         r   _nondirty_intersections_redrawnzALayeredDirtyTypeTest__DirtySprite._nondirty_intersections_redrawnS  s   ( ll5!||F#W%h'..*U	 #KK8#[[(; ~~h/&!#01$ 23
 mm//8 ,K  &{{.00146H6J6JQ6NO K '9K#*//77GWk55777Ek55777E , 7 78J KK%{{96H6M6MNK*//77GW&++77LE5 ]]..tww7
'
 ++i1B1G1GH
!2

 q 	"AOO##Aq) GGLL!		" 		7E* 	Ow. OA!33Aq9),)-#NNAq62E$$UNeA3b1<MNO	O NNGNNs   A0M M+c                 $    | j                          y)zgEnsure non-dirty sprites are correctly redrawn
        when dirty sprites intersect with them.
        Nr  r#   s    r   #test_nondirty_intersections_redrawnzELayeredDirtyTypeTest__DirtySprite.test_nondirty_intersections_redrawn  s     	,,.r
   c                 &    | j                  d       y)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_rectzWLayeredDirtyTypeTest__DirtySprite.test_nondirty_intersections_redrawn__with_source_rect  s     	,,T2r
   N)F)r   r   r   r   r  r%   r  r  r  r  r  r	   r
   r   r  r  >  s-    F([z/3r
   r  c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)
SpriteBasec                     g | _         | j                  D ]"  }| j                   j                   |              $ | j                         | _        y r   )r   Groupsr(  r   r   )r$   r   s     r   r%   zSpriteBase.setUp  s?    [[ 	(EKKuw'	( kkmr
   c                     | j                   D ]  }| j                  j                  |        | j                   D ],  }| j                  || j                  j                                . y r   )r   r   r   rj   r   s     r   r   zSpriteBase.test_add_internal  sW     	(AKK$$Q'	(  	3AMM!T[[//12	3r
   c                 ,   | j                   D ]  }| j                  j                  |        | j                   D ]  }| j                  j                  |        | j                   D ]-  }| j	                  || j                  j                         v        / y r   )r   r   r   r   re   r   s     r   r   zSpriteBase.test_remove_internal  s     	(AKK$$Q'	(  	+AKK''*	+  	8AQ$++"4"4"667	8r
   c                      G d dt         j                  j                        } |       }|j                  ddd       | j	                  |j
                  g d       y )Nc                       e Zd Zg Zd Zd Zy)+SpriteBase.test_update.<locals>.test_spritec                 X    t        j                  j                  j                  | g|  y r   r   r   s     r   r   z4SpriteBase.test_update.<locals>.test_sprite.__init__  r   r
   c                 .    | xj                   |z  c_         y r   r   r   s     r   r   z2SpriteBase.test_update.<locals>.test_sprite.update  r   r
   Nr   r	   r
   r   r   r    r   r
   r   r2   r   r   r   )r   r   r   r   r,   r   r   s      r   r   zSpriteBase.test_update  sG    	"&--.. 	" M	Aq))95r
   c                      G d dt         j                  j                        } |       }|j                  ddddd       | j	                  |j
                  g d	       | j	                  |j                  ddd       y )
Nc                        e Zd Zg Zi Zd Zd Zy)7SpriteBase.test_update_with_kwargs.<locals>.test_spritec                 X    t        j                  j                  j                  | g|  y r   r   r   s     r   r   z@SpriteBase.test_update_with_kwargs.<locals>.test_sprite.__init__  r   r
   c                 d    | xj                   |z  c_         | j                  j                  |       y r   )r   	sink_dictr   r   s      r   r   z>SpriteBase.test_update_with_kwargs.<locals>.test_sprite.update  s"    		T!	%%f-r
   N)r   r   r   r   r  r   r   r	   r
   r   r   r    s    DI=.r
   r   r2   r   r   r   r   r   r   )r   r   r   r   r,   r   r  r   s      r   r   z"SpriteBase.test_update_with_kwargs  sh    		.&--.. 		. M	AqaQ'))95..!0DEr
   c                     t        | j                  t              }| j                  | j                        }t         |j                         t              }| j	                  ||       y r   )rB   r   rD   r   rE   )r$   expected_groupsr   r   s       r   %test___init____added_to_groups_passedz0SpriteBase.test___init____added_to_groups_passed  sH     "5T[[)R0V_5r
   c                     t        | j                  t              }| j                  j	                  | j                         t        | j                  j                         t              }| j                  ||       y r   )rB   r   rD   r   r   rE   )r$   r  r   s      r   r   zSpriteBase.test_add  sO     "5$**,"5V_5r
   c                     | j                  | j                  j                         d       | j                  j                  | j                         | j                  | j                  j                                y )Nz*Sprite should not be alive if in no groups)re   r   aliver   r   r|   r#   s    r   
test_alivezSpriteBase.test_alive  sR    KK!M	
 	$))+,r
   c                 ,   t        | j                        D ]|  \  }}t        | j                  d |dz    t              }| j                  j                  |       t        | j                  j                         t              }| j                  ||       ~ y )Nr2   r@   )rC  r   rB   rD   r   r   rE   )r$   r$  r   r  r   s        r   test_groupszSpriteBase.test_groups  sr    dkk* 	:DAq$T[[1q5%9rBOKKOOADKK..0b9F  9	:r
   c                 z   | j                   j                  | j                         | j                  | j                   j	                                | j                   j                          | j                  | j                   j                         g        | j                  | j                   j	                                y r   )r   r   r   r|   r  killrE   re   r#   s    r   	test_killzSpriteBase.test_kill  sw    $))+,T[[//126**,-r
   c                     | j                   j                  | j                         | j                   j                  | j                         | j	                  | j                   j                         g        y r   )r   r   r   r   rE   r#   s    r   r   zSpriteBase.test_remove(  sI    $4;;'T[[//126r
   N)r   r   r   r%   r   r   r   r   r  r   r  r  r  r   r	   r
   r   r  r    s:    $386 F$66-:.7r
   r  c                       e Zd Zej                  Zej
                  ej                  ej                  ej                  gZ	y)SpriteTypeTestN)
r   r   r   r   r   r   r  RenderUpdatesOrderedUpdatesr  r	   r
   r   r  r  2  s6    ]]F 		Fr
   r  c                       e Zd Zej                  Zej                  ej                  ej                  ej                  ej                  gZy)DirtySpriteTypeTestN)r   r   r   r   r  r   r   r  r  r  r  r  r	   r
   r   r  r  =  sA    F 	Fr
   r  c                   *    e Zd Zej                  Zd Zy)WeakSpriteTypeTestc                     ddl }| j                  D cg c]	  } |        }}| j                  j                  |       ~|j	                          | j                  | j                  j                                yc c}w )z
        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   collectre   r  )r$   r  r   r   s       r   test_weak_group_refz&WeakSpriteTypeTest.test_weak_group_refL  s\    
 	'+{{3e%'33


**,-	 4s   A9N)r   r   r   r   
WeakSpriter   r  r	   r
   r   r  r  I  s    F.r
   r  c                   $    e Zd Zej                  Zy)DirtyWeakSpriteTypeTestN)r   r   r   r   WeakDirtySpriter   r	   r
   r   r  r  Z  s    ##Fr
   r  c                       e Zd Zd Zy)SingleGroupBugsTestc                    dd l }dd l} G d dt        j                        }t        j                         }t        j                  ddd      } |       }|j                  |      }||_        ~|j                          | j                   |              |j                          |j                  |        |       |_        |j                          | j                   |              y )Nr   c                       e Zd Zd Zy)9SingleGroupBugsTest.test_memoryleak_bug.<locals>.MySpritec                     t        j                  j                  | g|i | t        j                  ddd      | _        | j
                  j                         | _        y )N)r   r   r      )r   r   r   r   r   r   r    r!   r   s      r   r   zBSingleGroupBugsTest.test_memoryleak_bug.<locals>.MySprite.__init__j  sF    &&t=d=f=#^^FAr:
 JJ//1	r
   N)r   r   r   r   r	   r
   r   MySpriter  i  s    2r
   r  )r   r>  r  )weakrefr  r   r   GroupSingler   r   refr  assertIsNotNoner   r   ri   )r$   r  r  r  r   screenr~   rs           r   test_memoryleak_bugz'SingleGroupBugsTest.test_memoryleak_bugb  s     		2v}} 	2  2.JKKN


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


!#r
   N)r   r   r   r  r	   r
   r   r  r  a  s    r
   r  __main__)unittestr   r   TestCaser   r   r   r   r{  r  r  r  r  r  r  r  r  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HMMO r
   