B
    _£eb!  ć               @   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rdd Zejdd dS )z/Self-tests for (some of) Cryptodome.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   śc/var/www/html/afkarena_new/venv/lib/python3.7/site-packages/Cryptodome/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   Z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}xFtdD ]:}t |”}|  |d|d > kd” |  |d|> k d” q>W d}t |”}|  |d d” |  |d|d > kd” |  |d|> k d” dS )	zUtil.number.getPrimei’’’r   r   r   éd   i   r   N)r   Ś
ValueErrorr   Z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  i   r   r   r   i  i  N)r   r    r   ZgetStrongPrimer"   r   Z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” x"d
D ]}|   t t|”d” qØW d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   ZisPrimeŚint)r   Z	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)   r-   r1   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'   s    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   r3   r   s     r   s     i’’  s   ’’i   s      r'   s    l      ür   s    ’   r   s      ’   é
   s
        ’   é   s         ’   )r   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	   r5   r8   r9   r   r   r   r   r2      s   	r2   c             C   s    g }|t t7 }|t t7 }|S )N)r   r   r2   )ŚconfigŚtestsr   r   r   Ś	get_tests¶   s    r<   Ś__main__c               C   s   t  t ”S )N)ŚunittestZ	TestSuiter<   r   r   r   r   Ś<lambda>½   ó    r?   Śsuite)ZdefaultTest)r
   Śmathr>   ZCryptodome.Util.py3compatZCryptodome.SelfTest.st_commonr   ZCryptodome.Utilr   ZCryptodome.Util.numberr   Ś	Exceptionr   ZTestCaser   r2   r<   r   rA   Śmainr   r   r   r   Ś<module>   s   p