
    Jf                         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                  u        ! y )Nr   advisory_testingmodule)zope.interface.testsr   moduleLevelFrameInfoassertEqual__dict__
assertTrue
my_globalsselfr   kindr   f_locals	f_globalsds          [/var/www/cs2snipe.com/venv/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OOA!1!<!<<=	>    c                     ddl m} |j                  j                  \  }}}}| j	                  |d       |j
                  |fD ]  }| j                  ||j                  u        ! y )Nr   r   class)r	   r   NewStyleClassclassLevelFrameInfor   r   r   r   r   s          r   test_w_classzFrameInfoTest.test_w_class*   sf    9 '44HH				w')+ 	>AOOA!1!<!<<=	>r   c                 b   ddl m}  |t        j                               \  }}}}| j	                  |d       t        j                         }| j	                  ||j
                         | j	                  |t                      |j                  |fD ]  }| j                  |t               u         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OOAN+	,r   c                     ddl m} d|i}i }t        t        ||       | j	                  |d   d       | j                  |d   |u        | j                  |d   d u        | j                  |d   |u        y )	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   sv    6"L1[(G,&1
+w67)T12,89r   N)__name__
__module____qualname__r   r   r&   r,    r   r   r   r       s    >	>
,: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y)Test_isClassAdvisorc                     ddl m}  ||i |S )Nr   )isClassAdvisor)r    r4   )r   argskwr4   s       r   _callFUTzTest_isClassAdvisor._callFUTT   s    8t*r**r   c                 F    | j                  | j                  |       d       y )NFr   r7   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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3r   c                 j    d }t               |_        | j                  | j                  |      d       y )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   s,    	( !'s+T2r   N)r-   r.   r/   r7   r;   rC   rI   r0   r   r   r2   r2   R   s    +543r   r2   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    rM   )r   r5   r6   rM   s       r   r7   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.   r/   r0   r   r   MetarP   s       r   rR   r0   typer   r7   r   rR   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>.MetaNrQ   r0   r   r   rR   rZ   z   rS   r   rR   rT   rV   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>.MetametaNrQ   r0   r   r   Metametar^      rS   r   r_   c                       e Zd Zy)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|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_ANrQ   r0   r   r   Meta_Arg      rS   r   rh   c                       e Zd Zy)GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrQ   r0   r   r   Meta_Brj      rS   r   rk   c                       e Zd Zy)BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrQ   r0   r   r   Arm      rS   r   rn   rb   c                       e Zd Zy)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   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_ANrQ   r0   r   r   rh   rv      rS   r   rh   c                       e Zd Zy)KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrQ   r0   r   r   rk   rx      rS   r   rk   c                       e Zd Zy)FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrQ   r0   r   r   rn   rz      rS   r   rn   rb   c                       e Zd Zy)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   sR    	T 		T 		 		 	 	)T]]QF;r   N)	r-   r.   r/   r7   rW   r[   rd   rs   r   r0   r   r   rK   rK   k   s!    /87@8 <r   rK   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   r7   zTest_minimalBases._callFUT   s    6G$$r   c                 F    | j                  | j                  g       g        y r>   r9   r:   s    r   
test_emptyzTest_minimalBases.test_empty   s    r*B/r   c                 Z    | j                  | j                  t        g      t        g       y r>   )r   r7   rU   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>.CNrQ   r0   r   r   Cr      rS   r   r   r9   )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>.ANrQ   r0   r   r   rn   r      rS   r   rn   c                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrQ   r0   r   r   rq   r      rS   r   rq   c                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrQ   r0   r   r   r   r      rS   r   r   c                       e Zd Zy)@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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>.ANrQ   r0   r   r   rn   r      rS   r   rn   c                       e Zd Zy)@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1Aq6:r   N)	r-   r.   r/   r7   r   r   r   r   r   r0   r   r   r   r      s     %082;(;r   r   )	__doc__r!   unittestTestCaser   r)   r2   rK   r   r0   r   r   <module>r      sc     ):H%% ):X3(++ 32<<h// <<~/;)) /;r   