
    Vh                         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y)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y)FrameInfoTestc                     ddl m} |j                  \  }}}}| j                  |d       |j                  ||fD ]  }| j                  ||j                           y )Nr   advisory_testingmodule)zope.interface.testsr   moduleLevelFrameInfoassertEqual__dict__assertIs
my_globalsselfr   kindr   f_locals	f_globalsds          P/home/dcms/DCMS/lib/python3.12/site-packages/zope/interface/tests/test_advice.pytest_w_modulezFrameInfoTest.test_w_module"   s[    9 0 E E	v	9x((I5 	:AMM!-889	:    c                     ddl m} |j                  j                  \  }}}}| j	                  |d       |j
                  |fD ]  }| j                  ||j                           y )Nr   r   class)r	   r   NewStyleClassclassLevelFrameInfor   r   r   r   r   s          r   test_w_classzFrameInfoTest.test_w_class*   sc    9 '44HH				w')+ 	:AMM!-889	:r   c                 `   ddl m}  |t        j                               \  }}}}| j	                  |d       t        j                         }| j	                  ||j
                         | j	                  |t                      |j                  |fD ]  }| j                  |t                       y )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,8,I)fh	/5>>268,)+ 	(AMM!WY'	(r   c                     ddl m} d|i}i }t        t        ||       | j	                  |d   d       | j                  |d   |       | j                  |d          | j                  |d   |       y )	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   sm    6"L1[(G,&1gj)73'(+,gk*H5r   N)__name__
__module____qualname__r   r   r&   r-    r   r   r   r       s    :	:
(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y)Test_isClassAdvisorc                     ddl m}  ||i |S )Nr   )isClassAdvisor)r    r5   )r   argskwr5   s       r   _callFUTzTest_isClassAdvisor._callFUTT   s    8t*r**r   c                 F    | j                  | j                  |       d       y )NFr   r8   r   s    r   test_w_non_functionz'Test_isClassAdvisor.test_w_non_functionX   s    t,e4r   c                 L    d }| j                  | j                  |      d       y )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3r   c                 j    d }t               |_        | j                  | j                  |      d       y )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   s,    	( !'s+T2r   N)r.   r/   r0   r8   r<   rD   rJ   r1   r   r   r3   r3   R   s    +543r   r3   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)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                 f     G d dt               }| j                  | j                  d|      |       y )Nc                       e Zd Zy)DTest_determineMetaclass.test_empty_w_explicit_metatype.<locals>.MetaNr.   r/   r0   r1   r   r   MetarQ   s       r   rS   r1   typer   r8   r   rS   s     r   test_empty_w_explicit_metatypez6Test_determineMetaclass.test_empty_w_explicit_metatypeq   s+    	4 	 	r40$7r   c                 n     G d dt               }| j                  | j                  |f      t                y )Nc                       e Zd Zy)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   s+    	4 	 	w/6r   c                      G d dt               } G d dt         |      }| j                  | j                  |t         f      |       y )Nc                       e Zd Zy)<Test_determineMetaclass.test_meta_of_class.<locals>.MetametaNrR   r1   r   r   Metametar_      rT   r   r`   c                       e Zd Zy)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|4h?r   c                      G d dt               } G d d|      } G d dt         |      } G d d	t         |      }| j                  | j                  ||f      |       y )
Nc                       e Zd Zy)GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_ANrR   r1   r   r   Meta_Arh      rT   r   ri   c                       e Zd Zy)GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrR   r1   r   r   Meta_Brk      rT   r   rl   c                       e Zd Zy)BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrR   r1   r   r   Arn      rT   r   ro   rc   c                       e Zd Zy)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   sU    	T 		V 		 		 	 	1v.7r   c                      G d dt               } G d dt               } G d dt         |      } G d d	t         |      }| j                  t        | j                  ||f       y )
Nc                       e Zd Zy)KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_ANrR   r1   r   r   ri   rw      rT   r   ri   c                       e Zd Zy)KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrR   r1   r   r   rl   ry      rT   r   rl   c                       e Zd Zy)FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrR   r1   r   r   ro   r{      rT   r   ro   rc   c                       e Zd Zy)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   sR    	T 		T 		 		 	 	)T]]QF;r   N)	r.   r/   r0   r8   rX   r\   re   rt   r   r1   r   r   rL   rL   k   s!    /87@8 <r   rL   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Test_minimalBasesc                     ddl m}  ||      S )Nr   )minimalBases)r    r   )r   klassesr   s      r   r8   zTest_minimalBases._callFUT   s    6G$$r   c                 F    | j                  | j                  g       g        y r?   r:   r;   s    r   
test_emptyzTest_minimalBases.test_empty   s    r*B/r   c                 Z    | j                  | j                  t        g      t        g       y r?   )r   r8   rV   r;   s    r   test_w_newstyle_metaz&Test_minimalBases.test_w_newstyle_meta   s    v.7r   c                 ^     G d d      }| j                  | j                  |g      |g       y )Nc                       e Zd Zy)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   s+    	 	 	s+aS1r   c                     G d d      } G d d|      } G d d|      } G d d      }| j                  | j                  |||g      |g       | j                  | j                  ||g      |g       | j                  | j                  ||g      |g       | j                  | j                  ||g      |g       | j                  | j                  |||g      ||g       y )	Nc                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.ANrR   r1   r   r   ro   r      rT   r   ro   c                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrR   r1   r   r   rr   r      rT   r   rr   c                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrR   r1   r   r   r   r      rT   r   r   c                       e Zd Zy)@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1A371v.41v.41v.41ay1Aq6:r   c                 x     G d d      } G d d      }| j                  | j                  |||g      ||g       y )Nc                       e Zd Zy)@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.ANrR   r1   r   r   ro   r      rT   r   ro   c                       e Zd Zy)@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1Aq6:r   N)	r.   r/   r0   r8   r   r   r   r   r   r1   r   r   r   r      s     %082;(;r   r   )	__doc__r!   unittestTestCaser   r)   r3   rL   r   r1   r   r   <module>r      sc     )6H%% )6X3(++ 32<<h// <<~/;)) /;r   