o
    eh                     @   sn   d Z dZddlZddlZddlmZ G dd deZdddZi fd	d
Z	e
dkr5dd Zejdd dS dS )zgSelf tests

These tests should perform quickly and can ideally be used every time an
application runs.
z$Id$    N)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
   >/usr/lib/python3/dist-packages/Cryptodome/SelfTest/__init__.pyr   &   s   
zSelfTestError.__init__N)__name__
__module____qualname__r   r
   r
   r
   r   r   %   s    r   c           	      K   s   |du ri }t  }| du r|du rt|d}|| n|du r+|| j|d ntd|du r9t |d< n||d< t jdd|i|}||}| sc|du r^t	j
|d   td||S )a>  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:

        Cryptodome.SelfTest.run(Cryptodome.SelfTest.Hash)

    Nconfigz5'module' and 'tests' arguments are mutually exclusivestream	verbosityzSelf-test failedr
   )unittest	TestSuite	get_testsaddTests
ValueErrorr   TextTestRunnerrunwasSuccessfulsysstderrwritegetvaluer   )	moduler   r   testsr   kwargssuiterunnerr   r
   r
   r   r   +   s(   


r   c                 C   s  g }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }dd	l m} ||j| d7 }dd
l m	}	 ||	j| d7 }ddl m
}
 ||
j| d7 }|S )Nr   )Cipherr   )Hash)Protocol)	PublicKey)Random)Util)	Signature)IO)Math)Cryptodome.SelfTestr$   r   r%   r&   r'   r(   r)   r*   r+   r,   )r   r    r$   r%   r&   r'   r(   r)   r*   r+   r,   r
   r
   r   r   P   s   r   __main__c                   C   s   t t S r   )r   r   r   r
   r
   r
   r   <lambda>^   s    r/   r"   )defaultTest)Nr   NNN)__doc____revision__r   r   Cryptodome.Util.py3compatr   r   r   r   r   r   r"   mainr
   r
   r
   r   <module>   s   
%