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   moduleLevelFrameInfoassertEqual__dict__assertIs
my_globalsselfr   kindr   f_locals	f_globalsd r   /var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/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   NewStyleClass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   assertIsNone)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   _callFUTT      zTest_isClassAdvisor._callFUTc                 C   s   |  | | d d S )NFr	   r1   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>.fooFr3   )r   r;   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   r7   r8   r9   r   r   r   r   bard   r<   z8Test_isClassAdvisor.test_w_advisor_function.<locals>.barT)objectpreviousMetaclassr	   r1   )r   r>   r   r   r   test_w_advisor_functionb   s   z+Test_isClassAdvisor.test_w_advisor_functionN)r)   r*   r+   r1   r5   r=   rA   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   rD   )r   r/   r0   rD   r   r   r   r1   m   r2   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       rG   r   typer	   r1   r   rG   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                   @   rE   )z1Test_determineMetaclass.test_single.<locals>.MetaNrF   r   r   r   r   rG   z   rH   rG   rI   rK   r   r   r   test_singlex   rM   z#Test_determineMetaclass.test_singlec                 C   s>   G dd dt }G dd dt |d}| | |t f| d S )Nc                   @   rE   )z<Test_determineMetaclass.test_meta_of_class.<locals>.MetametaNrF   r   r   r   r   Metameta   rH   rO   c                   @   rE   )z8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNrF   r   r   r   r   rG      rH   rG   	metaclassrI   )r   rO   rG   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                   @   rE   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_ANrF   r   r   r   r   Meta_A   rH   rS   c                   @   rE   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNrF   r   r   r   r   Meta_B   rH   rT   c                   @   rE   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANrF   r   r   r   r   A   rH   rU   rP   c                   @   rE   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNrF   r   r   r   r   B   rH   rV   rI   r   rS   rT   rU   rV   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                   @   rE   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_ANrF   r   r   r   r   rS      rH   rS   c                   @   rE   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNrF   r   r   r   r   rT      rH   rT   c                   @   rE   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANrF   r   r   r   r   rU      rH   rU   rP   c                   @   rE   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNrF   r   r   r   r   rV      rH   rV   )rJ   assertRaises	TypeErrorr1   rW   r   r   r   #test_multiple_not_in_hierarchy_py3k   s
   z;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3kN)	r)   r*   r+   r1   rL   rN   rR   rX   r[   r   r   r   r   rC   k   s    
rC   c                   @   rB   )Test_minimalBasesc                 C   s   ddl m} ||S )Nr   )minimalBases)r   r]   )r   klassesr]   r   r   r   r1      s   zTest_minimalBases._callFUTc                 C   s   |  | g g  d S r8   r3   r4   r   r   r   
test_empty   r6   zTest_minimalBases.test_emptyc                 C   s   |  | tgtg d S r8   )r	   r1   rJ   r4   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                   @   rE   )z2Test_minimalBases.test_w_newstyle_class.<locals>.CNrF   r   r   r   r   C   rH   ra   r3   )r   ra   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                   @   rE   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.ANrF   r   r   r   r   rU      rH   rU   c                   @   rE   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNrF   r   r   r   r   rV      rH   rV   c                   @   rE   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNrF   r   r   r   r   ra      rH   ra   c                   @   rE   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNrF   r   r   r   r   D   rH   rc   r3   )r   rU   rV   ra   rc   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                   @   rE   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.ANrF   r   r   r   r   rU      rH   rU   c                   @   rE   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNrF   r   r   r   r   rV      rH   rV   r3   )r   rU   rV   r   r   r   #test_repeats_kicked_to_end_of_queue   s    z5Test_minimalBases.test_repeats_kicked_to_end_of_queueN)	r)   r*   r+   r1   r_   r`   rb   rd   re   r   r   r   r   r\      s    r\   )	__doc__r   unittestTestCaser   r$   r,   rC   r\   r   r   r   r   <module>   s   ,?