
    i>                         d dl Z d dlZd dlZd dlZd dlZej                  j
                  Z G d dej                        Z G d dej                        Ze	dk(  r ej                          yy)    Nc                      e Zd ZdgZd Zd Zd Zd Z ej                   e
j                         dk(  d       ej                  ej                  j                  dd	      d
      d               Z ej                   e
j                         dk(  d       ej                  ej                  j                  dd	      d
      d               Zd Zy	)ClockTypeTesttimingc                 <    t               }| j                  |d       y)z$Ensure a Clock object can be createdzClock cannot be constructedN)Clock
assertTrue)selfcs     `/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/time_test.pytest_constructionzClockTypeTest.test_construction   s    G89    c                 ,   t               }| j                  |j                         d       | j                  t	        |j                               t
        k(         d}| j                  |d|       | j                  |d|       | j                  |d|       y)z(test_get_fps tests pygame.time.get_fps()r   333333?d   <      N)r   assertEqualget_fpsr   typefloat	_fps_test)r	   r
   deltas      r   test_get_fpszClockTypeTest.test_get_fps   sr     Ga(QYY[)U23q#u%q"e$q"e$r   c                     d|z  }t        |      D ]'  }|j                          t        j                  |       ) | j	                  |j                         |||z         y)z>ticks fps times each second, hence get_fps() should return fpsg      ?r   N)rangeticktimesleepassertAlmostEqualr   )r	   clockfpsr   delay_per_framefs         r   r   zClockTypeTest._fps_test!   sT    )s 	(AJJLJJ'	( 	u}}3;Gr   c                    d}d}|dz  }d}d}t               }| j                  |j                         d       t        |      D ]L  }t	        j
                  |       |j                  |       |j                         }| j                  |||       N t        |      D ][  }t	        j
                  |       |j                          |j                         }|j                         }	| j                  ||	|       ] y )N
   皙?     2   r   r   )	r   r   get_rawtimer   r   r   r   r    get_time)
r	   
iterationsdelaydelay_milisecondsframerate_limitr   r
   r$   c1c2s
             r   test_get_rawtimezClockTypeTest.test_get_rawtime*   s    
!UO G!, z" 	GAJJuFF?#B""#4b"F		G z" 	8AJJuFFHBB""2r"7	8r   s390xFails on s390xCIN'CI can have variable time slices, slow.c                 2   d}|dz  }d}d}t               }| j                  |j                         d       t        |      D ]K  }t	        j
                  |       |j                          |j                         }| j                  |||       M t        |      D ]{  }t	        j                         }t	        j
                  |       |j                          t	        j                         }	|j                         }|	|z
  dz  }
| j                  |
||       } y )Nr'   r(   r&   r*   r   r   )r   r   r,   r   r   r   r   r    )r	   r.   r/   r-   r   r
   ir1   t0t1d0s              r   test_get_timezClockTypeTest.test_get_timeD   s     !UO
 Gq) z" 	GAJJuFFHB""#4b"F		G z" 		8ABJJuFFHBBr'B ""2r"7		8r   c                    	 d}d}d}d}d}g }t               }|j                          t        d      D ]9  }t        j                  |dz         |j                  |j                                ; t        |      t        |      fD ]  }	|	|k7  s	|j                  |	        t        t        |            t        |      z  }
| j                  |
||       t               }g }t        j                         }t        |      D ]"  }|j                  |j                  |             $ t        |      t        |      fD ]%  }	|	t        d|z        k7  s|j                  |	       ' t        j                         }| j                  ||z
  d	|       t        t        |            t        |      z  }| j                  d|z  ||       y
)zTests time.Clock.tick()r)   r      r   g      @r   r(   r      N)r   r   r   r   r   appendminmaxremover   sumlenr    round)r	   epsilonepsilon2epsilon3testing_frameratemilliseconds
collectionr
   r9   outlieraverage_timestartendaverage_tick_times                 r   	test_tickzClockTypeTest.test_tickf   s   	  
G 	
s 	(AJJ|d*+affh'	(
 JZ9 	+G,&!!'*	+ S_-J? 	|\I G
		() 	9Aaff%678	9 JZ9 	+G%'8 899!!'*	+ iik
 	sU{AX>!#j/2S_D$$&7x 	 	
r   c                 D   t               }d}d}d}| j                  |j                  |      ||z  |z
         t        j                  j                  d       | j                  |j                  |      ||z  |z
         t        j                  j                  d       | j                  |j                  |      ||z  |z
         d}| j                  |j                  |      ||z  |z
         d}| j                  |j                  |      ||z  |z
         d}t        ||z        }| j                  |j                  |      ||z
         d}	t        ||	z        }
| j                  |j                  |	      |
|z
         d	}| j                  |j                  |      d	       d
}| j                  |j                  |      d	       d}t        ||z        }| j                  |j                  |      ||z
         d}| j                  |j                  |      ||z  |z
         y)zTest tick_busy_loopr(   r@   (   r&      i  #   i  r   g     `@@TN)r   assertGreaterEqualtick_busy_looppygamer   waitintr   )r	   r
   second_lengthshortfall_tolerance
sample_fpshigh_fpslow_fpslow_non_factor_fps#frame_length_without_decimal_placeshigh_non_factor_fps%frame_length_without_decimal_places_2zero_fpsnegative_fpsfractional_fps%frame_length_without_decimal_places_3bool_fpss                   r   test_tick_busy_loopz!ClockTypeTest.test_tick_busy_loop   sY    G 
Z(Z'+>>	
 	Z(Z'+>>	
 	Z(Z'+>>	

 X&)AEX(X	
 W%(?CV'V	
  .1../
+ 	/0/2EE	

 "03//1
- 	0114GG	

 ))(3Q7 )),7;03MN4R0S-^,14GG	

 X&)AEX(X	
r   )__name__
__module____qualname____tags__r   r   r   r3   unittestskipIfplatformmachineosenvirongetr=   rS   rl    r   r   r   r   
   s    zH:%H84 X__%X%%'724DEX__


tT"$M8 F8< X__%X%%'724DEX__


tT"$M@
 F@
DK
r   r   c                      e Zd ZdgZ ej
                   ej                         dk(  d       ej
                  ej                  j                  dd      d      d               Zd Z ej
                   ej                         dk(  d       ej
                  ej                  j                  dd      d      d	               Zd
 Zd Zd Zy)TimeModuleTestr   r4   r5   r6   Nr7   c                     d}d}d}| j                  t        j                  j                  |||       | j	                  t        j                  j                         y)zTests time.delay() function.r*   r?      N)_wait_delay_checkr[   r   r.   _type_error_checksr	   millisr-   r   s       r   
test_delayzTimeModuleTest.test_delay   sI     
v{{00&*eL 1 12r   c                    	 d}d}d}| j                  t        t        j                  j	                               t
        k(         t        |      D ]  }t        j                  j	                         }t        j                         }t        j                  j                  |       t        t        j                         |z
  dz        }t        j                  j	                         |z
  }| j                  |||        y)zTests time.get_ticks()r?   r*      r(   r   N)
r   r   r[   r   	get_ticksr]   r   r.   rG   r    )	r	   r-   r   r   r9   
curr_ticks	curr_time	time_diff
ticks_diffs	            r   test_get_tickszTimeModuleTest.test_get_ticks  s    	 
V[[2245<=z" 	GA..0J		IKKf%tyy{Y6$>?I..0:=J"":y"F	Gr   c                 
   	 t        j                          t         j                  j                         }t         j                  j	                  |      }d}d}d}d}t         j                  j                          t         j                  j                  ||       t         j                  j                         }|||z  z   |z   }||k  rVt         j                  j                         D ]  }	|	|k(  s	|dz  } t         j                  j                         |kD  rn||k  rVt         j                  j                  |d       t         j                  j                         }
| j                  ||       | j                  ||z  |
|z
  |       t         j                  j                  d       | j                  |t         j                  j                                t         j                  j                  ||       t         j                  j                  t        |dz               | j                  t         j                  j                         j                  |      d	       t         j                  j                  ||d
z         t         j                  j                  |dz         | j                  |t         j                  j                                t         j                  j                  ||d	z         t         j                  j                  |dz         | j                  t         j                  j                         j                  |      d       t         j                  j                  ||       t         j                  j                  t        |dz               | j                  t         j                  j                         j                  |      d       t         j                  j                  |d
d       t         j                  j                  d       | j                  t         j                  j                         j                  |      d       t         j                  j	                  |      t         j                  j	                  |ddddg      t         j                  j	                  t         j                   t         j"                  d      g}d	}d}|D ]  }t         j                  j                  |||       t         j                  j                  d|z  |z         | j                  t         j                  j                         j                  |      |        t        j$                          y)zTests time.set_timer()r*   r      r   r@   r   rV   g      @   r&   r)         g      @TrU   9gwz5   |   )"    )foobazlola)keyunicode)loopsN)r[   initeventcustom_typeEventclearr   	set_timerr   rw   r   r    r.   assertNotInr]   countKEYDOWNK_aquit)r	   TIMER_EVENT_TYPEtimer_eventr   timer_delaytest_numbereventsr;   max_test_timer   t2events_to_testrepeatr   es                  r   test_set_timerzTimeModuleTest.test_set_timer   s   	 	!<<335ll(()9:.< [[""$[;66>{"))+  K'aKF 
 {{$$&6 {" 	.2[[""$-{[8"r'O 	#fll&6&6&89 	.<#kC/01))+11+>B.b0@A+/*fll&6&6&89.a@+/*))+11+>B.<#kC/01))+11+>B 	.D9"))+11+>B LL/0LL g2C?   LLv~~6::sK
  	BAKK!!!V6!:KKa&j612V\\--/55a8&A	B 	r   c                     d}d}d}| j                  t        j                  j                  |||       | j	                  t        j                  j                         y)zTests time.wait() function.r   r&   r*   N)r}   r[   r   r\   r~   r   s       r   	test_waitzTimeModuleTest.test_waitp  sG    
v{{//UK 0 01r   c                     t        j                          }t        |      D ]  } ||      }| j                  |||         t        j                          }t        ||z
  dz        }	| j                  |	|z  ||       y)a}   "
        call func_to_check(millis) "iterations" times and check each time if
        function "waited" for given millisecond (+- delta). At the end, take
        average time for each call (whole_duration/iterations), which should
        be equal to millis (+- delta - acceptable margin of error).
        *Created to avoid code duplication during delay and wait tests
        r   r(   N)r   r   r    rG   )
r	   func_to_checkr   r-   r   
start_timer9   	wait_time	stop_timedurations
             r   r}   z TimeModuleTest._wait_delay_checkz  s     YY[
z" 	CA%f-I""9fE"B	C IIK	)j0D89x*4fEJr   c                     	 | j                  t        |d       | j                  t        t        j                  j                  d       | j                  t        t        j                  j                  d       y)z?Checks 3 TypeError (float, tuple, string) for the func_to_checkr'   )r   r@   10N)assertRaises	TypeErrorr[   r   r.   )r	   r   s     r   r~   z!TimeModuleTest._type_error_checks  sO    =)]C8)V[[%6%6?)V[[%6%6=r   )rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   r   r   r   r   r}   r~   rx   r   r   rz   rz      s    zHX__%X%%'724DEX__


tT"$M3 F3G* X__%X%%'724DEX__


tT"$MJ FJX2K(>r   rz   __main__)ru   rs   rq   r[   r   r   TestCaser   rz   rm   mainrx   r   r   <module>r      sg    	    m
H%% m
`Z>X&& Z>~ zHMMO r   