
    Of                         d Z ddlZddlZ G d dej                  ZdZ G d dej                  Z G d d	ej                  Z G d
 dej                  ZdS )as  Tests for advice

This module was adapted from 'protocols.tests.advice', part of the Python
Enterprise Application Kit (PEAK).  Please notify the PEAK authors
(pje@telecommunity.com and tsarna@sarna.org) if bugs are found or
Zope-specific changes are required, so that the PEAK version of this module
can be kept in sync.

PEAK is a Python application framework that interoperates with (but does
not require) Zope 3 and Twisted.  It provides tools for manipulating UML
models, object-relational persistence, aspect-oriented programming, and more.
Visit the PEAK home page at http://peak.telecommunity.com for more information.
    Nc                   &    e Zd Zd Zd Zd Zd ZdS )FrameInfoTestc                     ddl m} |j        \  }}}}|                     |d           |j        ||fD ]}|                     ||j        u            d S )Nr   advisory_testingmodule)zope.interface.testsr   moduleLevelFrameInfoassertEqual__dict__
assertTrue
my_globalsselfr   kindr   f_locals	f_globalsds          R/var/www/html/env/lib/python3.11/site-packages/zope/interface/tests/test_advice.pytest_w_modulezFrameInfoTest.test_w_module"   s~    999999 0 E	v	9x((((I5 	> 	>AOOA!1!<<====	> 	>    c                     ddl m} |j        j        \  }}}}|                     |d           |j        |fD ]}|                     ||j        u            d S )Nr   r   class)r	   r   NewStyleClassclassLevelFrameInfor   r   r   r   r   s          r   test_w_classzFrameInfoTest.test_w_class*   s    999999 '4H				w''')+ 	> 	>AOOA!1!<<====	> 	>r   c                 ~   ddl m}  |t          j                              \  }}}}|                     |d           t          j                    }|                     ||j                   |                     |t                                 |j        |fD ]%}|                     |t                      u            &d S )Nr   getFrameInfozfunction call)
zope.interface.advicer   sys	_getframer   r   localsr   r   globals)r   r   r   r   r   r   framer   s           r   test_inside_function_callz'FrameInfoTest.test_inside_function_call5   s    666666,8L,I,I)fh	///5>222688,,,)+ 	, 	,AOOAN++++	, 	,r   c                 0   ddl m} d|i}i }t          t          ||           |                     |d         d           |                     |d         |u            |                     |d         d u            |                     |d         |u            d S )	Nr   r   r   r   execr   r   r   )r    r   r(   _FUNKY_EXECr   r   )r   r   _globals_localss       r   test_inside_execzFrameInfoTest.test_inside_execA   s    666666"L1[(G,,,&111
+w6777)T1222,899999r   N)__name__
__module____qualname__r   r   r&   r,    r   r   r   r       sP        > > >	> 	> 	>
, 
, 
,: : : : :r   r   zMimport sys
kind, module, f_locals, f_globals = getFrameInfo(sys._getframe())
c                   &    e Zd Zd Zd Zd Zd ZdS )Test_isClassAdvisorc                     ddl m}  ||i |S )Nr   )isClassAdvisor)r    r4   )r   argskwr4   s       r   _callFUTzTest_isClassAdvisor._callFUTT   s)    888888~t*r***r   c                 X    |                      |                     |           d           d S )NFr   r7   r   s    r   test_w_non_functionz'Test_isClassAdvisor.test_w_non_functionX   s*    t,,e44444r   c                 ^    d }|                      |                     |          d           d S )Nc                      t                      NNotImplementedErrorr0   r   r   fooz7Test_isClassAdvisor.test_w_normal_function.<locals>.foo]       %'''r   Fr9   )r   rA   s     r   test_w_normal_functionz*Test_isClassAdvisor.test_w_normal_function[   s;    	( 	( 	( 	s++U33333r   c                     d }t                      |_        |                     |                     |          d           d S )Nc                      t                      r>   r?   r0   r   r   barz8Test_isClassAdvisor.test_w_advisor_function.<locals>.bard   rB   r   T)objectpreviousMetaclassr   r7   )r   rF   s     r   test_w_advisor_functionz+Test_isClassAdvisor.test_w_advisor_functionb   sG    	( 	( 	( !'s++T22222r   N)r-   r.   r/   r7   r;   rC   rI   r0   r   r   r2   r2   R   sP        + + +5 5 54 4 43 3 3 3 3r   r2   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Test_determineMetaclassc                     ddl m}  ||i |S )Nr   )determineMetaclass)r    rM   )r   r5   r6   rM   s       r   r7   z Test_determineMetaclass._callFUTm   s*    <<<<<<!!4.2...r   c                      G d dt                     }|                     |                     d|          |           d S )Nc                       e Zd ZdS )DTest_determineMetaclass.test_empty_w_explicit_metatype.<locals>.MetaNr-   r.   r/   r0   r   r   MetarP   s           Dr   rR   r0   typer   r7   r   rR   s     r   test_empty_w_explicit_metatypez6Test_determineMetaclass.test_empty_w_explicit_metatypeq   sX    	 	 	 	 	4 	 	 	 	r400$77777r   c                      G d dt                     }|                     |                     |f          t                      d S )Nc                       e Zd ZdS )1Test_determineMetaclass.test_single.<locals>.MetaNrQ   r0   r   r   rR   rZ   z   rS   r   rR   rT   rV   s     r   test_singlez#Test_determineMetaclass.test_singlex   sX    	 	 	 	 	4 	 	 	 	w//66666r   c                      G d dt                     } G d dt           |          }|                     |                     |t           f          |           d S )Nc                       e Zd ZdS )<Test_determineMetaclass.test_meta_of_class.<locals>.MetametaNrQ   r0   r   r   Metametar^      rS   r   r_   c                       e Zd ZdS )8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNrQ   r0   r   r   rR   ra      rS   r   rR   	metaclassrT   )r   r_   rR   s      r   test_meta_of_classz*Test_determineMetaclass.test_meta_of_class   s    	 	 	 	 	t 	 	 		 	 	 	 	48 	 	 	 	 	d|44h?????r   c                      G d dt                     } G d d|          } G d dt           |          } G d d	t           |          }|                     |                     ||f          |           d S )
Nc                       e Zd ZdS )GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_ANrQ   r0   r   r   Meta_Arg      rS   r   rh   c                       e Zd ZdS )GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrQ   r0   r   r   Meta_Brj      rS   r   rk   c                       e Zd ZdS )BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrQ   r0   r   r   Arm      rS   r   rn   rb   c                       e Zd ZdS )BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNrQ   r0   r   r   Brp      rS   r   rq   rT   r   rh   rk   rn   rq   s        r   test_multiple_in_hierarchy_py3kz7Test_determineMetaclass.test_multiple_in_hierarchy_py3k   s    	 	 	 	 	T 	 	 		 	 	 	 	V 	 	 		 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	1v..77777r   c                      G d dt                     } G d dt                     } G d dt           |          } G d d	t           |          }|                     t          | j        ||f           d S )
Nc                       e Zd ZdS )KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_ANrQ   r0   r   r   rh   rv      rS   r   rh   c                       e Zd ZdS )KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrQ   r0   r   r   rk   rx      rS   r   rk   c                       e Zd ZdS )FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrQ   r0   r   r   rn   rz      rS   r   rn   rb   c                       e Zd ZdS )FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNrQ   r0   r   r   rq   r|      rS   r   rq   )rU   assertRaises	TypeErrorr7   rr   s        r   #test_multiple_not_in_hierarchy_py3kz;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3k   s    	 	 	 	 	T 	 	 		 	 	 	 	T 	 	 		 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	)T]QF;;;;;r   N)	r-   r.   r/   r7   rW   r[   rd   rs   r   r0   r   r   rK   rK   k   sq        / / /8 8 87 7 7@ @ @8 8 8 < < < < <r   rK   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Test_minimalBasesc                 $    ddl m}  ||          S )Nr   )minimalBases)r    r   )r   klassesr   s      r   r7   zTest_minimalBases._callFUT   s$    666666|G$$$r   c                 X    |                      |                     g           g            d S r>   r9   r:   s    r   
test_emptyzTest_minimalBases.test_empty   s*    r**B/////r   c                 p    |                      |                     t          g          t          g           d S r>   )r   r7   rU   r:   s    r   test_w_newstyle_metaz&Test_minimalBases.test_w_newstyle_meta   s.    v..77777r   c                 v     G d d          }|                      |                     |g          |g           d S )Nc                       e Zd ZdS )2Test_minimalBases.test_w_newstyle_class.<locals>.CNrQ   r0   r   r   Cr      rS   r   r   r9   )r   r   s     r   test_w_newstyle_classz'Test_minimalBases.test_w_newstyle_class   sX    	 	 	 	 	 	 	 	 	s++aS11111r   c                 0    G d d          } G d d|          } G d d|          } G d d          }|                      |                     |||g          |g           |                      |                     ||g          |g           |                      |                     ||g          |g           |                      |                     ||g          |g           |                      |                     |||g          ||g           d S )	Nc                       e Zd ZdS )@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.ANrQ   r0   r   r   rn   r      rS   r   rn   c                       e Zd ZdS )@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrQ   r0   r   r   rq   r      rS   r   rq   c                       e Zd ZdS )@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrQ   r0   r   r   r   r      rS   r   r   c                       e Zd ZdS )@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNrQ   r0   r   r   Dr      rS   r   r   r9   )r   rn   rq   r   r   s        r   #test_simple_hierarchy_skips_impliedz5Test_minimalBases.test_simple_hierarchy_skips_implied   s|   	 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	1ay11A37771v..4441v..4441v..4441ay11Aq6:::::r   c                      G d d          } G d d          }|                      |                     |||g          ||g           d S )Nc                       e Zd ZdS )@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.ANrQ   r0   r   r   rn   r      rS   r   rn   c                       e Zd ZdS )@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNrQ   r0   r   r   rq   r      rS   r   rq   r9   )r   rn   rq   s      r   #test_repeats_kicked_to_end_of_queuez5Test_minimalBases.test_repeats_kicked_to_end_of_queue   s    	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	1ay11Aq6:::::r   N)	r-   r.   r/   r7   r   r   r   r   r   r0   r   r   r   r      sn        % % %0 0 08 8 82 2 2; ; ;(; ; ; ; ;r   r   )	__doc__r!   unittestTestCaser   r)   r2   rK   r   r0   r   r   <module>r      s     


 ): ): ): ): ):H% ): ): ):X3 3 3 3 3(+ 3 3 32<< << << << <<h/ << << <<~/; /; /; /; /;) /; /; /; /; /;r   