a
    äzeM  ã                   @   s˜   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 G dd„ deƒZ
G dd„ dejƒZd	d
„ Zi Zded< ded< ded< edkr”eƒ  dS )é    N)ÚProfileTestÚregenerate_expected_output)Úassert_python_failure)Úsupportc                   @   s:   e Zd ZejZeZdZdd„ Zdd„ Z	dd„ Z
dd	„ Zd
S )ÚCProfileTestz{built-in method builtins.max}c                 C   s   t S ©N)Ú_ProfileOutput)Úself© r
   ú(/usr/lib/python3.9/test/test_cprofile.pyÚget_expected_output   s    z CProfileTest.get_expected_outputc                 C   st   dd l }t ¡ P}| dd„ ¡}| ¡  | d¡}| ¡  | ¡  |  |jj	t
¡ W d   ƒ n1 sf0    Y  d S )Nr   c                   S   s   t S r   )Úintr
   r
   r
   r   Ú<lambda>   ó    z>CProfileTest.test_bad_counter_during_dealloc.<locals>.<lambda>é   )Ú_lsprofr   Zcatch_unraisable_exceptionZProfilerÚenableÚdisableÚclearZassertEqualZ
unraisableÚexc_typeÚ	TypeError)r	   r   ÚcmÚobjr
   r
   r   Útest_bad_counter_during_dealloc   s    

z,CProfileTest.test_bad_counter_during_deallocc                 C   sH   |   ¡ }|  |j¡ | ¡  |  t ¡ |¡ | ¡  |  t ¡ d ¡ d S r   )ÚprofilerclassÚ
addCleanupr   r   ÚassertIsÚsysÚ
getprofile)r	   Úprofr
   r
   r   Útest_profile_enable_disable"   s    z(CProfileTest.test_profile_enable_disablec                 C   sh   |   ¡ }|  |j¡ |,}|  ||¡ |  t ¡ |¡ W d   ƒ n1 sJ0    Y  |  t ¡ d ¡ d S r   )r   r   r   r   r   r   )r	   r   Z"_CProfileTest__enter__return_valuer
   r
   r   Útest_profile_as_context_manager-   s    .z,CProfileTest.test_profile_as_context_managerN)Ú__name__Ú
__module__Ú__qualname__ÚcProfileZProfiler   ZprofilermoduleZexpected_max_outputr   r   r    r!   r
   r
   r
   r   r      s   r   c                   @   s   e Zd Zdd„ ZdS )ÚTestCommandLinec                 C   s0   t ddddƒ\}}}|  |d¡ |  d|¡ d S )Nz-mr%   z-sÚdemor   s!   option -s: invalid choice: 'demo')r   ZassertGreaterZassertIn)r	   ÚrcÚoutÚerrr
   r
   r   Ú	test_sort>   s    zTestCommandLine.test_sortN)r"   r#   r$   r+   r
   r
   r
   r   r&   =   s   r&   c                   C   s"   dt jvrt ¡  n
tttƒ d S )Nz-r)r   ÚargvÚunittestÚmainr   Ú__file__r   r
   r
   r
   r   r.   D   s    

r.   aƒ         28    0.028    0.001    0.028    0.001 profilee.py:110(__getattr__)
        1    0.270    0.270    1.000    1.000 profilee.py:25(testfunc)
     23/3    0.150    0.007    0.170    0.057 profilee.py:35(factorial)
       20    0.020    0.001    0.020    0.001 profilee.py:48(mul)
        2    0.040    0.020    0.600    0.300 profilee.py:55(helper)
        4    0.116    0.029    0.120    0.030 profilee.py:73(helper1)
        2    0.000    0.000    0.140    0.070 profilee.py:84(helper2_indirect)
        8    0.312    0.039    0.400    0.050 profilee.py:88(helper2)
        8    0.064    0.008    0.080    0.010 profilee.py:98(subhelper)Zprint_statsa“  profilee.py:110(__getattr__)                      <-      16    0.016    0.016  profilee.py:98(subhelper)
profilee.py:25(testfunc)                          <-       1    0.270    1.000  <string>:1(<module>)
profilee.py:35(factorial)                         <-       1    0.014    0.130  profilee.py:25(testfunc)
                                                        20/3    0.130    0.147  profilee.py:35(factorial)
                                                           2    0.006    0.040  profilee.py:84(helper2_indirect)
profilee.py:48(mul)                               <-      20    0.020    0.020  profilee.py:35(factorial)
profilee.py:55(helper)                            <-       2    0.040    0.600  profilee.py:25(testfunc)
profilee.py:73(helper1)                           <-       4    0.116    0.120  profilee.py:55(helper)
profilee.py:84(helper2_indirect)                  <-       2    0.000    0.140  profilee.py:55(helper)
profilee.py:88(helper2)                           <-       6    0.234    0.300  profilee.py:55(helper)
                                                           2    0.078    0.100  profilee.py:84(helper2_indirect)
profilee.py:98(subhelper)                         <-       8    0.064    0.080  profilee.py:88(helper2)
{built-in method builtins.hasattr}                <-       4    0.000    0.004  profilee.py:73(helper1)
                                                           8    0.000    0.008  profilee.py:88(helper2)
{built-in method sys.exc_info}                    <-       4    0.000    0.000  profilee.py:73(helper1)
{method 'append' of 'list' objects}               <-       4    0.000    0.000  profilee.py:73(helper1)Zprint_callersa;  <string>:1(<module>)                              ->       1    0.270    1.000  profilee.py:25(testfunc)
profilee.py:110(__getattr__)                      ->
profilee.py:25(testfunc)                          ->       1    0.014    0.130  profilee.py:35(factorial)
                                                           2    0.040    0.600  profilee.py:55(helper)
profilee.py:35(factorial)                         ->    20/3    0.130    0.147  profilee.py:35(factorial)
                                                          20    0.020    0.020  profilee.py:48(mul)
profilee.py:48(mul)                               ->
profilee.py:55(helper)                            ->       4    0.116    0.120  profilee.py:73(helper1)
                                                           2    0.000    0.140  profilee.py:84(helper2_indirect)
                                                           6    0.234    0.300  profilee.py:88(helper2)
profilee.py:73(helper1)                           ->       4    0.000    0.004  {built-in method builtins.hasattr}
profilee.py:84(helper2_indirect)                  ->       2    0.006    0.040  profilee.py:35(factorial)
                                                           2    0.078    0.100  profilee.py:88(helper2)
profilee.py:88(helper2)                           ->       8    0.064    0.080  profilee.py:98(subhelper)
profilee.py:98(subhelper)                         ->      16    0.016    0.016  profilee.py:110(__getattr__)
{built-in method builtins.hasattr}                ->      12    0.012    0.012  profilee.py:110(__getattr__)Zprint_calleesÚ__main__)r   r-   r%   Ztest.test_profiler   r   Ztest.support.script_helperr   Útestr   r   ZTestCaser&   r.   r   r"   r
   r
   r
   r   Ú<module>   s   0	
