U
    ,ò¿Wg  ã                   @   sD   d Z ddlZG dd„ dejƒZG dd„ dejƒZdd„ Zd	d
„ ZdS )zTests for z.c.hooks
é    Nc                   @   sf   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zdd
d„Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚPersistentAdapterRegistryTestsc                 C   s   ddl m} |S )Nr   ©ÚPersistentAdapterRegistry)Ú!zope.component.persistentregistryr   )Úselfr   © r   úN/usr/lib/python3/dist-packages/zope/component/tests/test_persistentregistry.pyÚ_getTargetClass   s    z.PersistentAdapterRegistryTests._getTargetClassc                 O   s   |   ¡ ||ŽS ©N©r	   ©r   ÚargsÚkwr   r   r   Ú_makeOne   s    z'PersistentAdapterRegistryTests._makeOnec                 C   s   G dd„ dt ƒ}||ƒS )Nc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
z9PersistentAdapterRegistryTests._makeCache.<locals>._Cachec                 S   s   || _ g | _d S r
   )Ú_jarÚ_mru)r   Újarr   r   r   Ú__init__    s    zBPersistentAdapterRegistryTests._makeCache.<locals>._Cache.__init__c                 S   s   | j  |¡ d S r
   )r   Úappend)r   Úoidr   r   r   Úmru#   s    z=PersistentAdapterRegistryTests._makeCache.<locals>._Cache.mruc                 S   s   | j |_||_d S r
   )r   Z_p_jarÚ_p_oid)r   r   Úobjr   r   r   Ú	new_ghost%   s    zCPersistentAdapterRegistryTests._makeCache.<locals>._Cache.new_ghostc                 S   s   d S r
   r   )r   r   Úsizer   r   r   Úupdate_object_size_estimation(   s    zWPersistentAdapterRegistryTests._makeCache.<locals>._Cache.update_object_size_estimationN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   Ú_Cache   s   r   )Úobject)r   r   r   r   r   r   Ú
_makeCache   s    z)PersistentAdapterRegistryTests._makeCachec                 C   sF   ddl m} ddlm} ||ƒG dd„ dtƒƒ}|ƒ }|  |¡|_|S )Nr   )Úimplementer)ÚIPersistentDataManagerc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z5PersistentAdapterRegistryTests._makeJar.<locals>._Jarc                 S   s   g | _ g | _d S r
   )Ú_loadedÚ_registered)r   r   r   r   r   4   s    z>PersistentAdapterRegistryTests._makeJar.<locals>._Jar.__init__c                 S   s   | j  |j¡ d S r
   )r$   r   r   ©r   r   r   r   r   Úsetstate7   s    z>PersistentAdapterRegistryTests._makeJar.<locals>._Jar.setstatec                 S   s   | j  |j¡ d S r
   )r%   r   r   r&   r   r   r   Úregister9   s    z>PersistentAdapterRegistryTests._makeJar.<locals>._Jar.registerN)r   r   r   r   r'   r(   r   r   r   r   Ú_Jar2   s   r)   )Zzope.interfacer"   Zpersistent.interfacesr#   r    r!   Ú_cache)r   r"   r#   r)   r   r   r   r   Ú_makeJar-   s    	z'PersistentAdapterRegistryTests._makeJarFc                 K   s4   t dƒ}| jf |Ž}|  ¡ }|j ||¡ |||fS )Nz)Ú_makeOctetsr   r+   r*   r   )r   Zdirtyr   ÚOIDÚinstr   r   r   r   Ú_makeOneWithJar@   s
    z.PersistentAdapterRegistryTests._makeOneWithJarc                 C   sH   |   ¡ \}}}|  |jd¡ | tƒ ¡ |  |jd¡ |  |jd¡ d S ©Né   Té   )r/   ÚassertEqualÚ_generationÚchangedr    Ú
_p_changed©r   Úregistryr   r-   r   r   r   Útest_changed_original_is_not_usH   s
    z>PersistentAdapterRegistryTests.test_changed_original_is_not_usc                 C   sF   |   ¡ \}}}|  |jd¡ | |¡ |  |jd¡ |  |jd¡ d S r0   )r/   r3   r4   r5   r6   r7   r   r   r   Útest_changed_original_is_usR   s
    
z:PersistentAdapterRegistryTests.test_changed_original_is_usc                 C   s”   ddl m} |j|jf}| j|d\}}}| ¡ }|  |d |¡ |  |d d¡ |  |d i ¡ |  |d g ¡ |  |d	 g ¡ |  d
|k¡ d S )Nr   ©ÚglobalSiteManager©ÚbasesÚ	__bases__r4   r1   Z	_providedZ	_adaptersZ_subscribersÚro)Úzope.componentr<   ÚadaptersÚ	utilitiesr/   Ú__getstate__r3   ÚassertFalse©r   r<   r>   r8   r   r-   Ústater   r   r   Útest___getstate___simple[   s    z7PersistentAdapterRegistryTests.test___getstate___simplec                 C   s.   |   ¡ \}}}dd„ |_|  d| ¡ k¡ d S )Nc                  W   s
   dddgS )NÚaÚbÚcr   )r   r   r   r   Ú<lambda>i   ó    zXPersistentAdapterRegistryTests.test___getstate___skips_delegated_names.<locals>.<lambda>Únames)r/   rN   rE   rD   r7   r   r   r   Ú'test___getstate___skips_delegated_namesg   s    
zFPersistentAdapterRegistryTests.test___getstate___skips_delegated_namesc                 C   sZ   |   ¡ \}}}| ¡ }|  d|jk¡ d |_|  d|jk¡ | |¡ |  d|jk¡ d S )NZ	_v_lookup)r/   rD   Ú
assertTrueÚ__dict__r6   rE   Ú__setstate__)r   r8   r   r-   rG   r   r   r   Ú$test___setstate___rebuilds__v_lookupl   s    
zCPersistentAdapterRegistryTests.test___setstate___rebuilds__v_lookupc                 C   sf   ddl m} |j|jf}| j|d\}}}| ¡ }| |¡ |  |j|¡ |  |j	|gt
|ƒ ¡ d S )Nr   r;   r=   )rA   r<   rB   rC   r/   rD   rR   r3   r?   r@   ÚlistrF   r   r   r   Útest___setstate___rebuilds__rou   s    
z=PersistentAdapterRegistryTests.test___setstate___rebuilds__roN)F)r   r   r   r	   r   r!   r+   r/   r9   r:   rH   rO   rS   rU   r   r   r   r   r      s   

		r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚPersistentComponentsTestsc                 C   s   ddl m} |S )Nr   )ÚPersistentComponents)r   rW   )r   rW   r   r   r   r	      s    z)PersistentComponentsTests._getTargetClassc                 O   s   |   ¡ ||ŽS r
   r   r   r   r   r   r   …   s    z"PersistentComponentsTests._makeOnec                 C   sœ   ddl m} ddlm} ddlm} |  ¡ }|  t|j	|ƒ¡ |  t|j
|ƒ¡ |  t|j|ƒ¡ |  t|j|ƒ¡ |  t|j|ƒ¡ |  t|j|ƒ¡ d S )Nr   )ÚPersistentMapping)ÚPersistentListr   )Zpersistent.mappingrX   Zpersistent.listrY   r   r   r   rP   Ú
isinstancerB   rC   Z_adapter_registrationsZ_utility_registrationsZ_subscription_registrationsZ_handler_registrations)r   rX   rY   r   r8   r   r   r   Ú2test_ctor_initializes_registries_and_registrationsˆ   s,    
ÿ
ÿ
ÿ
ÿ
ÿ
ÿzLPersistentComponentsTests.test_ctor_initializes_registries_and_registrationsN)r   r   r   r	   r   r[   r   r   r   r   rV      s   rV   c                 C   s$   dd l }|jdk rt| ƒS t| dƒS )Nr   )é   Úascii)ÚsysÚversion_infoÚbytes)Úsr^   r   r   r   r,   š   s    
r,   c                   C   s   t  t  t¡t  t¡f¡S r
   )ÚunittestZ	TestSuiteZ	makeSuiter   rV   r   r   r   r   Ú
test_suite    s    þrc   )Ú__doc__rb   ZTestCaser   rV   r,   rc   r   r   r   r   Ú<module>   s
   l