o
    .ѹgF!                     @   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   d/Users/admin/.pyenv/versions/3.10.0/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   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}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.getPrimeir   r   r   d      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  r!   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 d
D ]}|  tt|d qSdS )zUtil.number.isPrimeFr   r   Tr   r   i  )i i idl   u^ l   +%!al   Mnz]l   g4+ l   I>6l   S{AKWl   b\\QN l   zIlv3 l   _VB;.( 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 Sh"*f8<>ktk26"z BT6	V RNcc\]]rX"Sw~o 8I(jO3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/   r3   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   "3DUfwl   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   r5   r   s     r   s     i  s   i   s      r)   r7   l      r   s       r   s         
   s
              s            r8   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	   r9   r<   r=   r   r   r   r   r4      s    	r4   c                 C   s    g }|t t7 }|t t7 }|S N)r   r   r4   )configtestsr   r   r   	get_tests   s   rA   __main__c                   C   s   t t S r>   )unittestZ	TestSuiterA   r   r   r   r   <lambda>   s    rD   suite)ZdefaultTest)r
   mathrC   ZCrypto.Util.py3compatZCrypto.SelfTest.st_commonr   ZCrypto.Utilr   ZCrypto.Util.numberr   	Exceptionr   ZTestCaser   r4   rA   r   rE   mainr   r   r   r   <module>   s   p