o
    tPf                     @   sd   d Z ddlZddlZG dd dejZdZG dd dejZG dd	 d	ejZG d
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d Zdd Zdd Zdd Zd	S )
FrameInfoTestc                 C   sL   ddl m} |j\}}}}| |d |j||fD ]
}| ||ju  qd S )Nr   advisory_testingmodule)zope.interface.testsr   moduleLevelFrameInfoassertEqual__dict__
assertTrue
my_globalsselfr   kindr   f_locals	f_globalsd r   a/var/www/html/humari/django-venv/lib/python3.10/site-packages/zope/interface/tests/test_advice.pytest_w_module"   s   zFrameInfoTest.test_w_modulec                 C   sL   ddl m} |jj\}}}}| |d |j|fD ]
}| ||ju  qd S )Nr   r   class)r   r   NewStyleClassclassLevelFrameInfor	   r
   r   r   r   r   r   r   test_w_class*   s   zFrameInfoTest.test_w_classc                 C   st   ddl m} |t \}}}}| |d t }| ||j | |t  |j|fD ]
}| |t	 u  q-d S )Nr   getFrameInfozfunction call)
zope.interface.advicer   sys	_getframer	   r   localsr
   r   globals)r   r   r   r   r   r   framer   r   r   r   test_inside_function_call5   s   z'FrameInfoTest.test_inside_function_callc                 C   sn   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_localsr   r   r   test_inside_execA   s   zFrameInfoTest.test_inside_execN)__name__
__module____qualname__r   r   r"   r'   r   r   r   r   r       s
    r   zMimport sys
kind, module, f_locals, f_globals = getFrameInfo(sys._getframe())
c                   @   r   )
Test_isClassAdvisorc                 O      ddl m} ||i |S )Nr   )isClassAdvisor)r   r-   )r   argskwr-   r   r   r   _callFUTS      zTest_isClassAdvisor._callFUTc                 C   s   |  | | d d S )NFr	   r0   r   r   r   r   test_w_non_functionW      z'Test_isClassAdvisor.test_w_non_functionc                 C   s   dd }|  | |d d S )Nc                   S      t  NNotImplementedErrorr   r   r   r   foo[      z7Test_isClassAdvisor.test_w_normal_function.<locals>.fooFr2   )r   r:   r   r   r   test_w_normal_functionZ   s   z*Test_isClassAdvisor.test_w_normal_functionc                 C   s&   dd }t  |_| | |d d S )Nc                   S   r6   r7   r8   r   r   r   r   bar`   r;   z8Test_isClassAdvisor.test_w_advisor_function.<locals>.barT)objectpreviousMetaclassr	   r0   )r   r=   r   r   r   test_w_advisor_function_   s   z+Test_isClassAdvisor.test_w_advisor_functionN)r(   r)   r*   r0   r4   r<   r@   r   r   r   r   r+   Q   s
    r+   c                   @   <   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Test_determineMetaclassc                 O   r,   )Nr   )determineMetaclass)r   rC   )r   r.   r/   rC   r   r   r   r0   h   r1   z Test_determineMetaclass._callFUTc                 C   s(   G dd dt }| | d|| d S )Nc                   @      e Zd ZdS )zDTest_determineMetaclass.test_empty_w_explicit_metatype.<locals>.MetaNr(   r)   r*   r   r   r   r   Metam       rF   r   typer	   r0   r   rF   r   r   r   test_empty_w_explicit_metatypel      z6Test_determineMetaclass.test_empty_w_explicit_metatypec                 C   s(   G dd dt }| | |ft  d S )Nc                   @   rD   )z1Test_determineMetaclass.test_single.<locals>.MetaNrE   r   r   r   r   rF   r   rG   rF   rH   rJ   r   r   r   test_singleq   rL   z#Test_determineMetaclass.test_singlec                 C   s>   G dd dt }G dd dt |d}| | |t f| d S )Nc                   @   rD   )z<Test_determineMetaclass.test_meta_of_class.<locals>.MetametaNrE   r   r   r   r   Metametaw   rG   rN   c                   @   rD   )z8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNrE   r   r   r   r   rF   y   rG   rF   	metaclassrH   )r   rN   rF   r   r   r   test_meta_of_classv   s   z*Test_determineMetaclass.test_meta_of_classc                 C   sb   G dd dt }G dd d|}G dd dt |d}G dd	 d	t |d}| | ||f| d S )
Nc                   @   rD   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_ANrE   r   r   r   r   Meta_A   rG   rR   c                   @   rD   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrE   r   r   r   r   Meta_B   rG   rS   c                   @   rD   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrE   r   r   r   r   A   rG   rT   rO   c                   @   rD   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNrE   r   r   r   r   B   rG   rU   rH   r   rR   rS   rT   rU   r   r   r   test_multiple_in_hierarchy_py3k~   s
   z7Test_determineMetaclass.test_multiple_in_hierarchy_py3kc                 C   s`   G dd dt }G dd dt }G dd dt |d}G dd	 d	t |d}| t| j||f d S )
Nc                   @   rD   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_ANrE   r   r   r   r   rR      rG   rR   c                   @   rD   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrE   r   r   r   r   rS      rG   rS   c                   @   rD   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrE   r   r   r   r   rT      rG   rT   rO   c                   @   rD   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNrE   r   r   r   r   rU      rG   rU   )rI   assertRaises	TypeErrorr0   rV   r   r   r   #test_multiple_not_in_hierarchy_py3k   s
   z;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3kN)	r(   r)   r*   r0   rK   rM   rQ   rW   rZ   r   r   r   r   rB   f   s    rB   c                   @   rA   )Test_minimalBasesc                 C   s   ddl m} ||S )Nr   )minimalBases)r   r\   )r   klassesr\   r   r   r   r0      s   zTest_minimalBases._callFUTc                 C   s   |  | g g  d S r7   r2   r3   r   r   r   
test_empty   r5   zTest_minimalBases.test_emptyc                 C   s   |  | tgtg d S r7   )r	   r0   rI   r3   r   r   r   test_w_newstyle_meta   s   z&Test_minimalBases.test_w_newstyle_metac                 C   s(   G dd d}|  | |g|g d S )Nc                   @   rD   )z2Test_minimalBases.test_w_newstyle_class.<locals>.CNrE   r   r   r   r   C   rG   r`   r2   )r   r`   r   r   r   test_w_newstyle_class   s   z'Test_minimalBases.test_w_newstyle_classc                 C   s   G dd d}G dd d|}G dd d|}G dd d}|  | |||g|g |  | ||g|g |  | ||g|g |  | ||g|g |  | |||g||g d S )	Nc                   @   rD   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.ANrE   r   r   r   r   rT      rG   rT   c                   @   rD   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrE   r   r   r   r   rU      rG   rU   c                   @   rD   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrE   r   r   r   r   r`      rG   r`   c                   @   rD   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNrE   r   r   r   r   D   rG   rb   r2   )r   rT   rU   r`   rb   r   r   r   #test_simple_hierarchy_skips_implied   s    z5Test_minimalBases.test_simple_hierarchy_skips_impliedc                 C   s<   G dd d}G dd d}|  | |||g||g d S )Nc                   @   rD   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.ANrE   r   r   r   r   rT      rG   rT   c                   @   rD   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNrE   r   r   r   r   rU      rG   rU   r2   )r   rT   rU   r   r   r   #test_repeats_kicked_to_end_of_queue   s    z5Test_minimalBases.test_repeats_kicked_to_end_of_queueN)	r(   r)   r*   r0   r^   r_   ra   rc   rd   r   r   r   r   r[      s    r[   )	__doc__r   unittestTestCaser   r$   r+   rB   r[   r   r   r   r   <module>   s   ,8