a
    “I_(  ã                   @   st   d Z ddlmZ ddlZddlmZmZ ddlZddl	Z	G dd„ de
ƒZG dd„ dejjƒZG d	d
„ d
ejjƒZdS )zOTests for string and unicode handling in PIDL generated bindings
samba.dcerpc.*é    )ÚdrsblobsN)Ú
ndr_unpackÚndr_packc                   @   s   e Zd ZdS )ÚTestExceptionN)Ú__name__Ú
__module__Ú__qualname__© r	   r	   úA/usr/lib/python3/dist-packages/samba/tests/dcerpc/string_tests.pyr      s   r   c                       sP   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	‡  Z
S )ÚStringTestsc                    s$   t t| ƒ ¡  t ¡  t ¡ | _d S ©N)Úsuperr   ÚsetUpÚtallocZenable_null_trackingÚtotal_blocksÚstartup_blocks©Úself©Ú	__class__r	   r
   r   "   s    zStringTests.setUpc                    s:   t t| ƒ ¡  t ¡  t ¡ | jkr6t ¡  |  	d¡ d S )Nz it appears we are leaking memory)
r   r   ÚtearDownÚgcÚcollectr   r   r   Zreport_fullZfailr   r   r	   r
   r   '   s
    zStringTests.tearDownc                 C   sŽ   t  ¡ }d|_d|_t ¡  |  |¡ |  |jd¡ |  |jd¡ d|_d|_|  |jd¡ |  |jd¡ d |_|  |jd¡ |  |j¡ d S )Nzhello.example.comzgoodbye.example.comÚ )	r   ÚrepsFromTo2OtherInfoÚ	dns_name1Ú	dns_name2r   r   ÚassertIsNotNoneÚassertEqualÚassertIsNone©r   Úinfor	   r	   r
   Útest_string_from_python.   s    
z#StringTests.test_string_from_pythonc                 C   s*   z|   ¡  tƒ ‚W n ty$   Y n0 d S r   )r"   r   r   r	   r	   r
   Útest_string_with_exceptionB   s
    
z&StringTests.test_string_with_exceptionc                 C   s@   dd„ }|ƒ }t  ¡  |  |¡ |  |jd¡ |  |jd¡ d S )Nc                  S   s   t  ¡ } d| _d| _| S ©Nú1.example.comú2.example.com)r   r   r   r   )r!   r	   r	   r
   Úget_infoJ   s    z>StringTests.test_string_from_python_function.<locals>.get_infor%   r&   )r   r   r   r   r   r   )r   r'   r!   r	   r	   r
   Ú test_string_from_python_functionI   s    
z,StringTests.test_string_from_python_functionc                 C   s€   t  ¡ }d|_d|_t ¡  |  |¡ |  |jd¡ |  |jd¡ | jd7  _| jd;  _|  |jd¡ |  |jd¡ ~d S )Nr%   z%s.example.comz.co.nzé   z1.example.com.co.nzr&   )r   r   r   r   r   r   r   r   r    r	   r	   r
   Útest_string_modify_in_placeV   s    
z'StringTests.test_string_modify_in_placec                 C   sd   t  ¡  t ¡ }d|_d|_d |_z|`W n ty<   Y n0 |  |¡ |  |j¡ |  |j¡ d S r$   )	r   r   r   r   r   r   ÚAttributeErrorr   r   r    r	   r	   r
   Útest_string_deleted   s    
zStringTests.test_string_delete)r   r   r   r   r   r"   r#   r(   r*   r,   Ú__classcell__r	   r	   r   r
   r       s   r   c                   @   s   e Zd ZdZdd„ ZdS )ÚStringTestsWithoutLeakCheckz®We know that the ndr unpacking test leaves stuff in the
    autofree_context, and we don't want to worry about that. So for
    this test we don't make meory leak assertions.c                 C   sZ   t  ¡ }d|_d|_t|ƒ}t ¡  tt j|ƒ}|  |¡ |  	|jd¡ |  	|jd¡ d S r$   )
r   r   r   r   r   r   r   r   r   r   )r   r!   ZpackedZinfo_unpackedr	   r	   r
   Útest_string_from_ndry   s    
z0StringTestsWithoutLeakCheck.test_string_from_ndrN)r   r   r   Ú__doc__r/   r	   r	   r	   r
   r.   t   s   r.   )r0   Zsamba.dcerpcr   Zsamba.testsZsambaZ	samba.ndrr   r   r   r   Ú	Exceptionr   ZtestsZTestCaser   r.   r	   r	   r	   r
   Ú<module>   s   T