o
    5ĪhF!  ć                   @   s¤   d Z ddlZddlZddlT ddlmZ ddlmZ ddlm	Z	 G dd de
ZG d	d
 d
ejZG dd dejZi fddZedkrPdd Zejdd dS dS )z+Self-tests for (some of) Crypto.Util.numberé    N)Ś*)Ślist_test_cases)Śnumber)Ślong_to_bytesc                   @   s   e Zd ZdZdS )ŚMyErrorzDummy exception used for testsN)Ś__name__Ś
__module__Ś__qualname__Ś__doc__© r   r   śt/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/Crypto/SelfTest/Util/test_number.pyr   %   s    r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Ś	MiscTestsc                 C   sj  |   ttjdd” |   ttjdd” |   ttjdd” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt d	d”” |  dt d
d”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt dd”” |  dt d	d”” |  dt d
d”” |  dt dd”” |  dt dd”” dS )zUtil.number.ceil_divŚ1é   r   é’’’’é   é   é   é   é   é   é   é	   N)ŚassertRaisesŚ	TypeErrorr   Śceil_divŚZeroDivisionErrorŚassertEqual©Śselfr   r   r   Śtest_ceil_div-   s>   zMiscTests.test_ceil_divc                 C   sĘ   |   ttjd” |   ttjd” |   ttjd” d}tdD ]}t |”}|  |d|d > kd” |  |d|> k d” qd}t |”}|  |d d” |  |d|d > kd” |  |d|> k d” dS )	zUtil.number.getPrimei’’’r   r   r   éd   é   r   N)r   Ś
ValueErrorr   ŚgetPrimeŚranger   ŚassertNotEqual)r   ŚbitsŚiŚxr   r   r   Śtest_getPrimeW   s   

zMiscTests.test_getPrimec                 C   sF  |   ttjd” |   ttjd” d}t |”}|  |d d” |  |d|d > d kd” |  |d|> k d” d}t ||”}|  t |d |”d” |  |d d” |  |d|d > d kd” |  |d|> k d” d}t ||”}|  t |d d? |”d” |  |d d” |  |d|d > d kd” |  |d|> k d” d	S )
zUtil.number.getStrongPrimeé   i  r"   r   r   r   i  i  N)r   r#   r   ŚgetStrongPrimer&   r   ŚGCD)r   r'   r)   Śer   r   r   Śtest_getStrongPrimei   s&   
zMiscTests.test_getStrongPrimec                 C   sĘ   |   t d”d” |   t d”d” |   t d”d” |   t d”d” |   t d”d” |   t d”d” |   t dd	 d ”d” |   t dd	 d  ”d” d
D ]}|   t t|”d” qSdS )zUtil.number.isPrimeéż’’’Féž’’’r   r   Tr   r   i’  )i iį§ idĮl   u^¾ß l   ³+%!al   MnŌz¾]l   g4Š+ l   I>6l   S{AKWl   ĆbŹ\\QN l   ćzIlv3 l   _VB;.( N)r   r   ŚisPrimeŚint)r   Ś	compositer   r   r   Śtest_isPrime   s   ūzMiscTests.test_isPrimec                 C   sn   |   t d”d” |   t d”d” |   t d”d” |   t d”d” |   t d”d” |  ttjd	” d S )
Nr   r   é¢   r   i@ŗ¢ é   lE   „)żļ8^n, ¾“n:zb“|DELU"źN79YĮ ŖS¾h"¶*f8<>k®tkĀ26"z ¼BT6ū	ķV“ ĻRNccĖ\Ä¢Õ]š]rX"Sw~oŻ Ė8I(jęO3½2ĒøŅ
 i   r   )r   r   Śsizer   r#   r   r   r   r   Ś	test_size   s   zMiscTests.test_sizeN)r   r   r	   r    r*   r/   r5   r9   r   r   r   r   r   +   s    *r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Ś	LongTestsc                 C   st   |   tdd” |   tdd” |   tdd” |   tdd” |   tdd” |   td	d
” |   tdd” d S )Nr   ó    r   ó   r+   ó    l       üs   ’    l   wĢ*M	 s   "3DUfwl   ļLUs	   "3DUfw©r   r   r   r   r   r   Śtest1   s   zLongTests.test1c                 C   sø   |   tddd” |   tddd” |   tddd” |   tddd	” |   td
dd” |   tddd” |   tddd” |   tddd” |   tddd” |   tddd” d S )Nr   r   r;   r   s     r   s     i’’  s   ’’i   s      r+   r=   l      ür   s    ’   r   s      ’   é
   s
        ’   é   s         ’   r>   r   r   r   r   Śtest2¦   s   zLongTests.test2c                 C   s   |   ttd” d S )Nr   )r   r#   r   r   r   r   r   Ś	test_err1²   s   zLongTests.test_err1N)r   r   r	   r?   rB   rC   r   r   r   r   r:      s    	r:   c                 C   s    g }|t t7 }|t t7 }|S ©N)r   r   r:   )ŚconfigŚtestsr   r   r   Ś	get_tests¶   s   rG   Ś__main__c                   C   s   t  t ”S rD   )ŚunittestŚ	TestSuiterG   r   r   r   r   Ś<lambda>½   s    rK   Śsuite)ŚdefaultTest)r
   ŚmathrI   ŚCrypto.Util.py3compatŚCrypto.SelfTest.st_commonr   ŚCrypto.Utilr   ŚCrypto.Util.numberr   Ś	Exceptionr   ŚTestCaser   r:   rG   r   rL   Śmainr   r   r   r   Ś<module>   s   pž