
    eJ                         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          B/usr/lib/python3/dist-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                    ddl m}  |t        j                               \  }}}}| j	                  |d       | j                  |t               u        |j                  |fD ]  }| j                  |t               u         y )Nr   getFrameInfozfunction call)	zope.interface.advicer   sys	_getframer   r   localsr   globals)r   r   r   r   r   r   r   s          r   test_inside_function_callz'FrameInfoTest.test_inside_function_call5   sk    6,8,I)fh	/FH,-)+ 	,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_exec=   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    r3   )r   argskwr3   s       r   _callFUTzTest_isClassAdvisor._callFUTO   s    8t*r**r   c                 F    | j                  | j                  |       d       y )NFr   r6   r   s    r   test_w_non_functionz'Test_isClassAdvisor.test_w_non_functionS   s    t,e4r   c                 L    d }| j                  | j                  |      d       y )Nc                      t               NNotImplementedErrorr/   r   r   fooz7Test_isClassAdvisor.test_w_normal_function.<locals>.fooW       %''r   Fr8   )r   r@   s     r   test_w_normal_functionz*Test_isClassAdvisor.test_w_normal_functionV   s     	(s+U3r   c                 j    d }t               |_        | j                  | j                  |      d       y )Nc                      t               r=   r>   r/   r   r   barz8Test_isClassAdvisor.test_w_advisor_function.<locals>.bar\   rA   r   T)objectpreviousMetaclassr   r6   )r   rE   s     r   test_w_advisor_functionz+Test_isClassAdvisor.test_w_advisor_function[   s*    	( &s+T2r   N)r,   r-   r.   r6   r:   rB   rH   r/   r   r   r1   r1   M   s    +54
3r   r1   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    rL   )r   r4   r5   rL   s       r   r6   z Test_determineMetaclass._callFUTd   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.   r/   r   r   MetarO   i       r   rQ   r/   typer   r6   r   rQ   s     r   test_empty_w_explicit_metatypez6Test_determineMetaclass.test_empty_w_explicit_metatypeh   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>.MetaNrP   r/   r   r   rQ   rY   n   rR   r   rQ   rS   rU   s     r   test_singlez#Test_determineMetaclass.test_singlem   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>.MetametaNrP   r/   r   r   Metametar]   s   rR   r   r^   c                       e Zd Zy)8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNrP   r/   r   r   rQ   r`   u   rR   r   rQ   	metaclassrS   )r   r^   rQ   s      r   test_meta_of_classz*Test_determineMetaclass.test_meta_of_classr   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_ANrP   r/   r   r   Meta_Arf   {   rR   r   rg   c                       e Zd Zy)GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrP   r/   r   r   Meta_Bri   ~   rR   r   rj   c                       e Zd Zy)BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrP   r/   r   r   Arl      rR   r   rm   ra   c                       e Zd Zy)BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNrP   r/   r   r   Bro      rR   r   rp   rS   r   rg   rj   rm   rp   s        r   test_multiple_in_hierarchy_py3kz7Test_determineMetaclass.test_multiple_in_hierarchy_py3kz   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_ANrP   r/   r   r   rg   ru      rR   r   rg   c                       e Zd Zy)KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrP   r/   r   r   rj   rw      rR   r   rj   c                       e Zd Zy)FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrP   r/   r   r   rm   ry      rR   r   rm   ra   c                       e Zd Zy)FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNrP   r/   r   r   rp   r{      rR   r   rp   )rT   assertRaises	TypeErrorr6   rq   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.   r6   rV   rZ   rc   rr   r~   r/   r   r   rJ   rJ   b   s!    /8
7
@8 <r   rJ   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   r6   zTest_minimalBases._callFUT   s    6G$$r   c                 F    | j                  | j                  g       g        y r=   r8   r9   s    r   
test_emptyzTest_minimalBases.test_empty   s    r*B/r   c                 Z    | j                  | j                  t        g      t        g       y r=   )r   r6   rT   r9   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>.CNrP   r/   r   r   Cr      rR   r   r   r8   )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>.ANrP   r/   r   r   rm   r      rR   r   rm   c                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrP   r/   r   r   rp   r      rR   r   rp   c                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrP   r/   r   r   r   r      rR   r   r   c                       e Zd Zy)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNrP   r/   r   r   Dr      rR   r   r   r8   )r   rm   rp   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>.ANrP   r/   r   r   rm   r      rR   r   rm   c                       e Zd Zy)@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNrP   r/   r   r   rp   r      rR   r   rp   r8   )r   rm   rp   s      r   #test_repeats_kicked_to_end_of_queuez5Test_minimalBases.test_repeats_kicked_to_end_of_queue   s9    	 		 	1ay1Aq6:r   N)	r,   r-   r.   r6   r   r   r   r   r   r/   r   r   r   r      s     %082
;;r   r   )	__doc__unittestr!   TestCaser   r(   r1   rJ   r   r/   r   r   <module>r      sc     
%:H%% %:P
3(++ 3*5<h// 5<p%;)) %;r   