
    &h                         S SK r S SKrS SK7  S SKJr   " S S\ R                  5      r " S S\ R                  5      r\S:X  a  \ R                  " 5         gg)	    N)*)timec                        \ rS rSrS rS rSrg)BlitTest	   c                    [         R                  " S[        S5      nUR                  S5        [         R                  " S[        S5      nUR                  S5        UR	                  US5        U R                  UR                  S5      UR                  S5      5        [         R                  " S[        S5      nUR                  S5        [         R                  " S[        S5      nUR                  S5        [         R                  " S[        S5      nUR                  S5        UR	                  US5        U R                  UR                  S5      UR                  S5      5        g)	zSRCALPHA tests.   r
          r   r   r   r   r   r   r   r   r   ){   r   r   r   )
   r   r   r   N)pygameSurfaceSRCALPHAfillblitassertEqualget_at)selfsds1s       N/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/blit_test.pytest_SRCALPHABlitTest.test_SRCALPHA
   s     NN68R0	!"NN68R0	 	q&&)188F+;< NN68R0	 ^^FHb1
 !NN68R0	}	q&&)299V+<=    c                    [         R                  " S[        S5      nUR                  S5        [         R                  " S[        S5      nUR                  S5        UR	                  USS[
        5        UR	                  USS[        5        U R                  UR                  S5      S   S5        UR                  S	5        UR                  S
5        UR	                  USS[
        5        U R                  UR                  S5      S   S5        UR                  S	5        UR                  S
5        UR	                  USS[        5        U R                  UR                  S5      S   S5        UR                  S	5        UR                  S5        UR	                  USS[        5        U R                  UR                  S5      S   S5        g)zBLEND_ tests.r	   r   r   r   r   N   r   )   r   r   r   )r   r   r   r      r   r   )   r   r   r   )
r   r   r   r   r   	BLEND_ADDBLEND_RGBA_ADDr   r   	BLEND_SUB)r   r   r   s      r   
test_BLENDBlitTest.test_BLEND%   sj    NN68R0	!"NN68R0	 	q&$	* 	
q&$/&)!,c2 	
 !	 !	q&$	*&)!,c2 	
 !	 !	q&$	*&)!,b1 	
 !	 !	q&$	*&)!,a0r     N)__name__
__module____qualname____firstlineno__r   r)   __static_attributes__r+   r    r   r   r   	   s    >6%1r    r   c                   Z    \ 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)	BlitsTestM   zTests for pygame.Surface.blitsc                     SU l         SU l        [        R                  " U R                   S-  S4[        S5      U l        U R
                  R                  S5        U R                  U R                   5      U l        g )Nr   r   r   r   )   r5   r5   )		NUM_SURFSPRINT_TIMINGr   r   r   dstr   make_blit_list	blit_list)r   s    r   setUpBlitsTest.setUpP   sY    >>4>>B#6";XrJo&,,T^^<r    c                     / n[        U5       HW  nUS-  S4n[        R                  " S[        S5      nUS-  US-  US-  4nUR	                  U5        UR                  XT45        MY     U$ )zMGenerate a list of tuples representing surfaces and destinations
for blittingr   r   r   r   r   r
   )ranger   r   r   r   append)r   	num_surfsr:   idestsurfcolors          r   r9   BlitsTest.make_blit_listW   ss     	y!AFA;D>>(Hb9DUAE1q5)EIIed\* " r    c                 P    U H   u  p#U R                   R                  X#5        M"     g)zjCustom blits method that manually iterates over the blit_list and blits
each surface onto the destination.N)r8   r   )r   r:   surfacerC   s       r   custom_blitsBlitsTest.custom_blitsd   s      'MGHHMM'( 'r    c                     [        5       nU R                  U R                  5      n[        5       nU R                  (       a  [	        SX1-
   35        gg)z2Checks time performance of the custom blits methodzpython blits: N)r   rI   r:   r7   printr   t0resultst1s       r   test_custom_blits_performance'BlitsTest.test_custom_blits_performancek   sE     V##DNN3VN27),- r    c                 .   [        5       nU R                  R                  U R                  5      n[        5       nU R                  (       a  [        SX1-
   35        [        5       nU R                  R                  U R                  SS9n[        5       nU R                  (       a  [        SX1-
   35        [        5       nU R                  R                  S U R                   5       5      n[        5       nU R                  (       a  [        SX1-
   35        gg)z Checks time performance of blitszSurface.blits: r   doreturnzSurface.blits doreturn=0: c              3   ,   #    U  H
  u  pX4v   M     g 7f)Nr+   ).0rD   rC   s      r   	<genexpr>3BlitsTest.test_blits_performance.<locals>.<genexpr>   s     !P:44,s   zSurface.blits generator: N)r   r8   blitsr:   r7   rL   rM   s       r   test_blits_performance BlitsTest.test_blits_performancet   s     V((..0VOBG9-. V((..!.<V.rwi89 V((..!P!PQV-bgY78 r    c                    U R                   R                  U R                  5      n[        U R                  5       Ht  nUS-  US-  US-  4nU R                  U R                   R                  US-  S45      U5        U R                  U R                   R                  US-  S-   S45      U5        Mv     U R                  [        U5      U R                  5        g)zChecks the correctness of the colors on the destination
after blitting and tests that the length of the results list
matches the number of surfaces blitted.r
   r   r      N)r8   rZ   r:   r?   r6   r   r   len)r   rO   rB   rE   s       r   test_blits_correctness BlitsTest.test_blits_correctness   s    
 ((..0t~~&AUAE1q5)ETXX__a"fa[95ATXX__q2vlA->?G '
 	Wt~~6r    c                 p    U R                   R                  U R                  SS9nU R                  US5        g)z+Tests that when doreturn=0, it returns Noner   rT   N)r8   rZ   r:   r   )r   rO   s     r   test_blits_doreturnBlitsTest.test_blits_doreturn   s.     ((..!.<$'r    c                     [         R                  " S[        S5      nU R                  [        5         UR                  S5        SSS5        g! , (       d  f       g= f)zXTests that calling blits with an invalid non-sequence None argument
raises a ValueError.d   r   r   Nr   r   r   assertRaises
ValueErrorrZ   r   r8   s     r   test_blits_not_sequence!BlitsTest.test_blits_not_sequence   s;     nnY"5z*IIdO +**s   A
Ac                     [         R                  " S[        S5      nU R                  [        5         UR                  [         R                  " S[        S5      /5        SSS5        g! , (       d  f       g= f)zzTests that calling blits with an invalid sequence containing a single surface
(without a destination) raises a ValueError.rf   r   r>   Nrh   rk   s     r   test_blits_wrong_length!BlitsTest.test_blits_wrong_length   sL     nnY"5z*IIv~~h"=>? +**s   -A((
A6c                     [         R                  " S[        S5      nU R                  [        5         UR                  S/5        SSS5        g! , (       d  f       g= f)zjTests that calling blits with a sequence containing an invalid tuple of
None arguments raises a TypeError.rf   r   )NNNr   r   r   ri   	TypeErrorrZ   rk   s     r   test_blits_bad_surf_args"BlitsTest.test_blits_bad_surf_args   s>     nnY"5y)II|n% *))s   A
Ac                     [         R                  " S[        S5      nU R                  [        5         UR                  [         R                  " S[        S5      S4/5        SSS5        g! , (       d  f       g= f)zsTests that calling blits with a sequence containing an invalid tuple with a
destination of None raises a TypeError.rf   r   r>   Nrr   rk   s     r   test_blits_bad_destBlitsTest.test_blits_bad_dest   sQ     nnY"5y)IIx2>EFG *))s   /A**
A8)r6   r7   r:   r8   N)r,   r-   r.   r/   __doc__r;   r9   rI   rQ   r[   r`   rc   rl   ro   rt   rw   r0   r+   r    r   r2   r2   M   s>    (=).9.7(@&Hr    r2   __main__)	unittestr   pygame.localsr   TestCaser   r2   r,   mainr+   r    r   <module>r      sU       A1x   A1HoH!! oHd zMMO r    