
    i                         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                   d S )Nr   advisory_testingmodule)zope.interface.testsr   moduleLevelFrameInfoassertEqual__dict__assertIs
my_globalsselfr   kindr   f_locals	f_globalsds          K/usr/local/lib/python3.11/dist-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MM!-89999	: 	:    c                     ddl m} |j        j        \  }}}}|                     |d           |j        |fD ]}|                     ||j                   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MM!-89999	: 	:r   c                 |   ddl m}  |t          j                              \  }}}}|                     |d           t          j                    }|                     ||j                   |                     |t                                 |j        |fD ]$}|                     |t                                 %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MM!WYY''''	( 	(r   c                 (   ddl m} d|i}i }t          t          ||           |                     |d         d           |                     |d         |           |                     |d                    |                     |d         |           d S )	Nr   r   r   r   execr   r   r   )r    r   r(   _FUNKY_EXECr   r   assertIsNone)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gj)7333'(+,,,gk*H55555r   N)__name__
__module____qualname__r   r   r&   r-    r   r   r   r       sP        : : :	: 	: 	:
( 
( 
(6 6 6 6 6r   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    r5   )r   argskwr5   s       r   _callFUTzTest_isClassAdvisor._callFUTT   s)    888888~t*r***r   c                 X    |                      |                     |           d           d S )NFr   r8   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NotImplementedErrorr1   r   r   fooz7Test_isClassAdvisor.test_w_normal_function.<locals>.foo]       %'''r   Fr:   )r   rB   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@   r1   r   r   barz8Test_isClassAdvisor.test_w_advisor_function.<locals>.bard   rC   r   T)objectpreviousMetaclassr   r8   )r   rG   s     r   test_w_advisor_functionz+Test_isClassAdvisor.test_w_advisor_functionb   sG    	( 	( 	( !'s++T22222r   N)r.   r/   r0   r8   r<   rD   rJ   r1   r   r   r3   r3   R   sP        + + +5 5 54 4 43 3 3 3 3r   r3   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    rN   )r   r6   r7   rN   s       r   r8   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/   r0   r1   r   r   MetarQ   s           Dr   rS   r1   typer   r8   r   rS   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>.MetaNrR   r1   r   r   rS   r[   z   rT   r   rS   rU   rW   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>.MetametaNrR   r1   r   r   Metametar_      rT   r   r`   c                       e Zd ZdS )8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNrR   r1   r   r   rS   rb      rT   r   rS   	metaclassrU   )r   r`   rS   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_ANrR   r1   r   r   Meta_Arh      rT   r   ri   c                       e Zd ZdS )GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrR   r1   r   r   Meta_Brk      rT   r   rl   c                       e Zd ZdS )BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrR   r1   r   r   Arn      rT   r   ro   rc   c                       e Zd ZdS )BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNrR   r1   r   r   Brq      rT   r   rr   rU   r   ri   rl   ro   rr   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_ANrR   r1   r   r   ri   rw      rT   r   ri   c                       e Zd ZdS )KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrR   r1   r   r   rl   ry      rT   r   rl   c                       e Zd ZdS )FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrR   r1   r   r   ro   r{      rT   r   ro   rc   c                       e Zd ZdS )FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNrR   r1   r   r   rr   r}      rT   r   rr   )rV   assertRaises	TypeErrorr8   rs   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/   r0   r8   rX   r\   re   rt   r   r1   r   r   rL   rL   k   sq        / / /8 8 87 7 7@ @ @8 8 8 < < < < <r   rL   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   r8   zTest_minimalBases._callFUT   s$    666666|G$$$r   c                 X    |                      |                     g           g            d S r?   r:   r;   s    r   
test_emptyzTest_minimalBases.test_empty   s*    r**B/////r   c                 p    |                      |                     t          g          t          g           d S r?   )r   r8   rV   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>.CNrR   r1   r   r   Cr      rT   r   r   r:   )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>.ANrR   r1   r   r   ro   r      rT   r   ro   c                       e Zd ZdS )@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrR   r1   r   r   rr   r      rT   r   rr   c                       e Zd ZdS )@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrR   r1   r   r   r   r      rT   r   r   c                       e Zd ZdS )@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNrR   r1   r   r   Dr      rT   r   r   r:   )r   ro   rr   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>.ANrR   r1   r   r   ro   r      rT   r   ro   c                       e Zd ZdS )@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNrR   r1   r   r   rr   r      rT   r   rr   r:   )r   ro   rr   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/   r0   r8   r   r   r   r   r   r1   r   r   r   r      sn        % % %0 0 08 8 82 2 2; ; ;(; ; ; ; ;r   r   )	__doc__r!   unittestTestCaser   r)   r3   rL   r   r1   r   r   <module>r      s     


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