o
    gHdJ                     @   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   g/var/www/html/facialservice/flask-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   s`   ddl m} |t \}}}}| |d | |t u  |j|fD ]
}| |t u  q#d S )Nr   getFrameInfozfunction call)	zope.interface.advicer   sys	_getframer	   r   localsr
   globals)r   r   r   r   r   r   r   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_exec=   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   _callFUTO      zTest_isClassAdvisor._callFUTc                 C   s   |  | | d d S )NFr	   r/   r   r   r   r   test_w_non_functionS      z'Test_isClassAdvisor.test_w_non_functionc                 C   s   dd }|  | |d d S )Nc                   S      t  NNotImplementedErrorr   r   r   r   fooW      z7Test_isClassAdvisor.test_w_normal_function.<locals>.fooFr1   )r   r9   r   r   r   test_w_normal_functionV   s   z*Test_isClassAdvisor.test_w_normal_functionc                 C   s&   dd }t  |_| | |d d S )Nc                   S   r5   r6   r7   r   r   r   r   bar\   r:   z8Test_isClassAdvisor.test_w_advisor_function.<locals>.barT)objectpreviousMetaclassr	   r/   )r   r<   r   r   r   test_w_advisor_function[   s   z+Test_isClassAdvisor.test_w_advisor_functionN)r'   r(   r)   r/   r3   r;   r?   r   r   r   r   r*   M   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   rB   )r   r-   r.   rB   r   r   r   r/   d   r0   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   Metai       rE   r   typer	   r/   r   rE   r   r   r   test_empty_w_explicit_metatypeh      z6Test_determineMetaclass.test_empty_w_explicit_metatypec                 C   s(   G dd dt }| | |ft  d S )Nc                   @   rC   )z1Test_determineMetaclass.test_single.<locals>.MetaNrD   r   r   r   r   rE   n   rF   rE   rG   rI   r   r   r   test_singlem   rK   z#Test_determineMetaclass.test_singlec                 C   s>   G dd dt }G dd dt |d}| | |t f| d S )Nc                   @   rC   )z<Test_determineMetaclass.test_meta_of_class.<locals>.MetametaNrD   r   r   r   r   Metametas   rF   rM   c                   @   rC   )z8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNrD   r   r   r   r   rE   u   rF   rE   	metaclassrG   )r   rM   rE   r   r   r   test_meta_of_classr   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                   @   rC   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_ANrD   r   r   r   r   Meta_A{   rF   rQ   c                   @   rC   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrD   r   r   r   r   Meta_B~   rF   rR   c                   @   rC   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrD   r   r   r   r   A   rF   rS   rN   c                   @   rC   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNrD   r   r   r   r   B   rF   rT   rG   r   rQ   rR   rS   rT   r   r   r   test_multiple_in_hierarchy_py3kz   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                   @   rC   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_ANrD   r   r   r   r   rQ      rF   rQ   c                   @   rC   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrD   r   r   r   r   rR      rF   rR   c                   @   rC   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrD   r   r   r   r   rS      rF   rS   rN   c                   @   rC   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNrD   r   r   r   r   rT      rF   rT   )rH   assertRaises	TypeErrorr/   rU   r   r   r   #test_multiple_not_in_hierarchy_py3k   s
   z;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3kN)	r'   r(   r)   r/   rJ   rL   rP   rV   rY   r   r   r   r   rA   b   s    rA   c                   @   r@   )Test_minimalBasesc                 C   s   ddl m} ||S )Nr   )minimalBases)r   r[   )r   klassesr[   r   r   r   r/      s   zTest_minimalBases._callFUTc                 C   s   |  | g g  d S r6   r1   r2   r   r   r   
test_empty   r4   zTest_minimalBases.test_emptyc                 C   s   |  | tgtg d S r6   )r	   r/   rH   r2   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                   @   rC   )z2Test_minimalBases.test_w_newstyle_class.<locals>.CNrD   r   r   r   r   C   rF   r_   r1   )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                   @   rC   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.ANrD   r   r   r   r   rS      rF   rS   c                   @   rC   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrD   r   r   r   r   rT      rF   rT   c                   @   rC   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrD   r   r   r   r   r_      rF   r_   c                   @   rC   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNrD   r   r   r   r   D   rF   ra   r1   )r   rS   rT   r_   ra   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                   @   rC   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.ANrD   r   r   r   r   rS      rF   rS   c                   @   rC   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNrD   r   r   r   r   rT      rF   rT   r1   )r   rS   rT   r   r   r   #test_repeats_kicked_to_end_of_queue   s    z5Test_minimalBases.test_repeats_kicked_to_end_of_queueN)	r'   r(   r)   r/   r]   r^   r`   rb   rc   r   r   r   r   rZ      s    rZ   )	__doc__unittestr   TestCaser   r#   r*   rA   rZ   r   r   r   r   <module>   s   (8