o
    h                     @   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   sJ   ddl m} |j\}}}}| |d |j||fD ]	}| ||j qd S )Nr   advisory_testingmodule)zope.interface.testsr   ZmoduleLevelFrameInfoassertEqual__dict__assertIs
my_globalsselfr   kindr   f_locals	f_globalsd r   S/var/www/html/venv/lib/python3.10/site-packages/zope/interface/tests/test_advice.pytest_w_module"   s   zFrameInfoTest.test_w_modulec                 C   sJ   ddl m} |jj\}}}}| |d |j|fD ]	}| ||j qd S )Nr   r   class)r   r   ZNewStyleClassZclassLevelFrameInfor   r	   r
   r   r   r   r   r   test_w_class*   s   zFrameInfoTest.test_w_classc                 C   sr   ddl m} |t \}}}}| |d t }| ||j | |t  |j|fD ]	}| |t	  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   sf   ddl m} d|i}i }tt|| | |d d | |d | | |d  | |d | d S )	Nr   r   r   r   execr   r   r   )r   r   r    _FUNKY_EXECr   r
   ZassertIsNone)r   r   Z_globalsZ_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   _callFUTT      zTest_isClassAdvisor._callFUTc                 C   s   |  | | d d S )NFr   r+   r   r   r   r   test_w_non_functionX      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>.fooFr-   )r   r5   r   r   r   test_w_normal_function[   s   z*Test_isClassAdvisor.test_w_normal_functionc                 C   s&   dd }t  |_| | |d d S )Nc                   S   r1   r2   r3   r   r   r   r   bard   r6   z8Test_isClassAdvisor.test_w_advisor_function.<locals>.barT)objectZpreviousMetaclassr   r+   )r   r8   r   r   r   test_w_advisor_functionb   s   z+Test_isClassAdvisor.test_w_advisor_functionN)r#   r$   r%   r+   r/   r7   r:   r   r   r   r   r&   R   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   r=   )r   r)   r*   r=   r   r   r   r+   m   r,   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   Metas       r@   r   typer   r+   r   r@   r   r   r   test_empty_w_explicit_metatypeq      z6Test_determineMetaclass.test_empty_w_explicit_metatypec                 C   s(   G dd dt }| | |ft  d S )Nc                   @   r>   )z1Test_determineMetaclass.test_single.<locals>.MetaNr?   r   r   r   r   r@   z   rA   r@   rB   rD   r   r   r   test_singlex   rF   z#Test_determineMetaclass.test_singlec                 C   s>   G dd dt }G dd dt |d}| | |t f| d S )Nc                   @   r>   )z<Test_determineMetaclass.test_meta_of_class.<locals>.MetametaNr?   r   r   r   r   Metameta   rA   rH   c                   @   r>   )z8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNr?   r   r   r   r   r@      rA   r@   	metaclassrB   )r   rH   r@   r   r   r   test_meta_of_class   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                   @   r>   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_ANr?   r   r   r   r   Meta_A   rA   rL   c                   @   r>   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNr?   r   r   r   r   Meta_B   rA   rM   c                   @   r>   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANr?   r   r   r   r   A   rA   rN   rI   c                   @   r>   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNr?   r   r   r   r   B   rA   rO   rB   r   rL   rM   rN   rO   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                   @   r>   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_ANr?   r   r   r   r   rL      rA   rL   c                   @   r>   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNr?   r   r   r   r   rM      rA   rM   c                   @   r>   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANr?   r   r   r   r   rN      rA   rN   rI   c                   @   r>   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNr?   r   r   r   r   rO      rA   rO   )rC   ZassertRaises	TypeErrorr+   rP   r   r   r   #test_multiple_not_in_hierarchy_py3k   s
   z;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3kN)	r#   r$   r%   r+   rE   rG   rK   rQ   rS   r   r   r   r   r<   k   s    
r<   c                   @   r;   )Test_minimalBasesc                 C   s   ddl m} ||S )Nr   )minimalBases)r   rU   )r   ZklassesrU   r   r   r   r+      s   zTest_minimalBases._callFUTc                 C   s   |  | g g  d S r2   r-   r.   r   r   r   
test_empty   r0   zTest_minimalBases.test_emptyc                 C   s   |  | tgtg d S r2   )r   r+   rC   r.   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                   @   r>   )z2Test_minimalBases.test_w_newstyle_class.<locals>.CNr?   r   r   r   r   C   rA   rX   r-   )r   rX   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                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.ANr?   r   r   r   r   rN      rA   rN   c                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNr?   r   r   r   r   rO      rA   rO   c                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNr?   r   r   r   r   rX      rA   rX   c                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNr?   r   r   r   r   D   rA   rZ   r-   )r   rN   rO   rX   rZ   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                   @   r>   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.ANr?   r   r   r   r   rN      rA   rN   c                   @   r>   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNr?   r   r   r   r   rO      rA   rO   r-   )r   rN   rO   r   r   r   #test_repeats_kicked_to_end_of_queue   s    z5Test_minimalBases.test_repeats_kicked_to_end_of_queueN)	r#   r$   r%   r+   rV   rW   rY   r[   r\   r   r   r   r   rT      s    rT   )	__doc__r   ZunittestZTestCaser   r!   r&   r<   rT   r   r   r   r   <module>   s   ,?