U
    ÈZj‰  ã                   @   sr   d Z ddlZddlZddlmZ ddlmZ G dd„ deƒZddd„Z	i fd	d
„Z
edkrndd„ Zejdd� dS )zgSelf tests

These tests should perform quickly and can ideally be used every time an
application runs.
é    N)Úimport_module)ÚStringIOc                   @   s   e Zd Zdd„ ZdS )ÚSelfTestErrorc                 C   s   t  | ||¡ || _|| _d S ©N)Ú	ExceptionÚ__init__ÚmessageÚresult)Úselfr   r	   © r   ú[/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/Crypto/SelfTest/__init__.pyr   &   s    zSelfTestError.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   %   s   r   c           	      K   sÊ   |dkri }t  ¡ }| dkr:|dkr.t|d�}| |¡ n$|dkrV| | j|d�¡ ntdƒ‚|dkrrtƒ |d< n||d< t jf d|i|—Ž}| |¡}| ¡ sÆ|dkr¼t	j
 |d  ¡ ¡ td|ƒ‚|S )a6  Execute self-tests.

    This raises SelfTestError if any test is unsuccessful.

    You may optionally pass in a sub-module of SelfTest if you only want to
    perform some of the tests.  For example, the following would test only the
    hash modules:

        Crypto.SelfTest.run(Crypto.SelfTest.Hash)

    N©Úconfigz5'module' and 'tests' arguments are mutually exclusiveÚstreamÚ	verbosityzSelf-test failed)ÚunittestÚ	TestSuiteÚ	get_testsZaddTestsÚ
ValueErrorr   ZTextTestRunnerÚrunZwasSuccessfulÚsysÚstderrÚwriteÚgetvaluer   )	Úmoduler   r   Útestsr   ÚkwargsÚsuiteÚrunnerr	   r   r   r   r   ,   s(    


r   c              	   C   sD   g }ddddddddd	g	}|D ] }t d
| ƒ}||j| d�7 }q|S )NZCipherZHashÚProtocolZ	PublicKeyÚRandomZUtilÚ	SignatureÚIOZMathzCrypto.SelfTest.r   )r   r   )r   r   Zmodule_namesÚnamer   r   r   r   r   R   s           þr   Ú__main__c                   C   s   t  tƒ ¡S r   )r   r   r   r   r   r   r   r    b   s    r    )ZdefaultTest)Nr   NNN)Ú__doc__r   r   Ú	importlibr   ZCrypto.Util.py3compatr   r   r   r   r   r   r    Úmainr   r   r   r   Ú<module>   s   
&