Your IP : 18.227.46.87


Current Path : /lib64/python3.8/unittest/__pycache__/
Upload File :
Current File : //lib64/python3.8/unittest/__pycache__/case.cpython-38.opt-2.pyc

U

e5d���@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZmZmZmZdZe�ZdZGdd�de�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�Zdd�ZgZdd�Zdd�Zdd�Z dd�Z!dd�Z"dd�Z#dd�Z$Gdd �d �Z%Gd!d"�d"e%�Z&Gd#d$�d$e&�Z'Gd%d&�d&e&�Z(e�)d'd(d)g�Z*Gd*d+�d+ej+�Z,Gd,d-�d-e%�Z-Gd.d/�d/ej.�Z/Gd0d1�d1e�Z0Gd2d3�d3e0�Z1Gd4d5�d5e0�Z2dS)6�N�)�result)�strclass�	safe_repr�_count_diff_all_purpose�_count_diff_hashable�_common_shorten_reprTz@
Diff is %s characters long. Set self.maxDiff to None to see it.c@seZdZdS)�SkipTestN��__name__�
__module__�__qualname__�rr�%/usr/lib64/python3.8/unittest/case.pyr	sr	c@seZdZdS)�_ShouldStopNr
rrrrr"src@seZdZdS)�_UnexpectedSuccessNr
rrrrr'src@s&eZdZddd�Zejddd��ZdS)	�_OutcomeNcCs4d|_||_t|d�|_d|_g|_d|_g|_dS)NF�
addSubTestT)�expecting_failurer�hasattr�result_supports_subtests�success�skipped�expectedFailure�errors)�selfrrrr�__init__.sz_Outcome.__init__Fc
cs�|j}d|_z�z
dVWn�tk
r.�Yn�tk
rh}zd|_|j�|t|�f�W5d}~XYnjtk
rzYnXt��}|j	r�||_
nd|_|j�||f�d}YnX|jr�|jr�|j�|df�W5|jo�||_XdS)NTF)
r�KeyboardInterruptr	r�append�strr�sys�exc_inforrrr)r�	test_case�isTestZold_success�er!rrr�testPartExecutor7s*
$
z_Outcome.testPartExecutor)N)F)rrr
r�
contextlib�contextmanagerr%rrrrr-s
	rcCs|S�Nr)�objrrr�_idUsr*cOst�|||f�dSr()�_module_cleanupsr)�function�args�kwargsrrr�addModuleCleanupZsr/c
Csdg}trTt��\}}}z|||�Wqtk
rP}z|�|�W5d}~XYqXq|r`|d�dS�Nr)r+�pop�	Exceptionr)�
exceptionsr,r-r.�excrrr�doModuleCleanups`sr5cs,�fdd�}t�tj�r(�}d�||�S|S)Ncs4t|t�s$t�|��fdd��}|}d|_�|_|S)Ncst���dSr(�r	�r-r.��reasonrr�skip_wrappervsz-skip.<locals>.decorator.<locals>.skip_wrapperT)�
isinstance�type�	functools�wraps�__unittest_skip__�__unittest_skip_why__)�	test_itemr:r8rr�	decoratorts
zskip.<locals>.decorator�)r;�types�FunctionType)r9rBrArr8r�skipps
rFcCs|rt|�StSr(�rFr*�Z	conditionr9rrr�skipIf�srIcCs|st|�StSr(rGrHrrr�
skipUnless�srJcCs
d|_|S)NT)�__unittest_expecting_failure__)rArrrr�srcs4t|t�r t�fdd�|D��St|t�o2t|��S)Nc3s|]}t|��VqdSr()�_is_subtype)�.0r$��basetyperr�	<genexpr>�sz_is_subtype.<locals>.<genexpr>)r;�tuple�allr<�
issubclass)�expectedrOrrNrrL�s
rLc@seZdZdd�Zdd�ZdS)�_BaseTestCaseContextcCs
||_dSr()r")rr"rrrr�sz_BaseTestCaseContext.__init__cCs |j�|j|�}|j�|��dSr()r"�_formatMessage�msg�failureException)r�standardMsgrWrrr�
_raiseFailure�sz"_BaseTestCaseContext._raiseFailureN)rrr
rrZrrrrrU�srUc@seZdZddd�Zdd�ZdS)�_AssertRaisesBaseContextNcCs@t�||�||_||_|dk	r*t�|�}||_d|_d|_dSr()	rUrrTr"�re�compile�expected_regex�obj_namerW)rrTr"r^rrrr�s
z!_AssertRaisesBaseContext.__init__c	Cs�z�t|j|j�s"td||jf��|sV|�dd�|_|rNtdtt|��f��|W�TS|^}}z|j	|_
Wntk
r�t|�|_
YnX|�|||�W5QRXW5d}XdS)Nz%s() arg 1 must be %srWz3%r is an invalid keyword argument for this function)
rLrT�
_base_type�	TypeError�_base_type_strr1rW�next�iterrr_�AttributeErrorr)r�namer-r.Zcallable_objrrr�handle�s(��z_AssertRaisesBaseContext.handle)N)rrr
rrgrrrrr[�s

r[c@s$eZdZeZdZdd�Zdd�ZdS)�_AssertRaisesContextz-an exception type or tuple of exception typescCs|Sr(r�rrrr�	__enter__�sz_AssertRaisesContext.__enter__cCs�|dkrbz|jj}Wntk
r2t|j�}YnX|jrP|�d�||j��ql|�d�|��n
t�|�t	||j�s|dS|�
d�|_|jdkr�dS|j}|�
t|��s�|�d�|jt|���dS)Nz{} not raised by {}z
{} not raisedFT�"{}" does not match "{}")rTrrerr_rZ�format�	traceback�clear_framesrS�with_tracebackZ	exceptionr^�search�pattern)r�exc_type�	exc_value�tb�exc_namer^rrr�__exit__�s.
�

�z_AssertRaisesContext.__exit__N)rrr
�
BaseExceptionr`rbrjrvrrrrrh�srhc@s$eZdZeZdZdd�Zdd�ZdS)�_AssertWarnsContextz(a warning type or tuple of warning typescCsRttj���D]}t|dd�ri|_qtjdd�|_|j�	�|_t�
d|j�|S)N�__warningregistry__T)�record�always)�listr �modules�values�getattrry�warnings�catch_warnings�warnings_managerrj�simplefilterrT)r�vrrrrj�sz_AssertWarnsContext.__enter__cCs|j�|||�|dk	rdSz|jj}Wntk
rFt|j�}YnXd}|jD]Z}|j}t||j�sjqR|dkrv|}|j	dk	r�|j	�
t|��s�qR||_|j|_|j
|_
dS|dk	r�|�d�|j	jt|���|jr�|�d�||j��n|�d�|��dS)Nrkz{} not triggered by {}z{} not triggered)r�rvrTrrerr��messager;r^rpZwarning�filename�linenorZrlrqr_)rrrrsrtruZfirst_matching�m�wrrrrvs@

��
�z_AssertWarnsContext.__exit__N)rrr
�Warningr`rbrjrvrrrrrx�srx�_LoggingWatcher�records�outputc@s$eZdZdd�Zdd�Zdd�ZdS)�_CapturingHandlercCstj�|�tgg�|_dSr()�logging�Handlerrr��watcherrirrrr3sz_CapturingHandler.__init__cCsdSr(rrirrr�flush7sz_CapturingHandler.flushcCs*|jj�|�|�|�}|jj�|�dSr()r�r�rrlr�)rrzrWrrr�emit:s
z_CapturingHandler.emitN)rrr
rr�r�rrrrr�.sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_AssertLogsContextz"%(levelname)s:%(name)s:%(message)scCs:t�||�||_|r(tj�||�|_ntj|_d|_dSr()	rUr�logger_namer�Z_nameToLevel�get�level�INFOrW)rr"r�r�rrrrFsz_AssertLogsContext.__init__cCs�t|jtj�r|j}|_nt�|j�}|_t�|j�}t�}|�	|�|j
|_
|jdd�|_|j
|_|j|_|g|_|�|j
�d|_|j
S)NF)r;r�r�ZLogger�loggerZ	getLoggerZ	Formatter�LOGGING_FORMATr�ZsetFormatterr��handlers�old_handlersr��	old_level�	propagate�
old_propagate�setLevel)rr�Z	formatterZhandlerrrrrjOs
z_AssertLogsContext.__enter__cCs`|j|j_|j|j_|j�|j�|dk	r.dSt|jj	�dkr\|�
d�t�
|j�|jj��dS)NFrz-no logs of level {} or higher triggered on {})r�r�r�r�r�r�r��lenr�r�rZrlr�ZgetLevelNamer�rf)rrrrsrtrrrrv`s


��z_AssertLogsContext.__exit__N)rrr
r�rrjrvrrrrr�As	r�c@seZdZdd�ZdS)�_OrderedChainMapccs8t�}|jD]&}|D]}||kr|�|�|VqqdSr()�set�maps�add)r�seen�mapping�krrr�__iter__ns

z_OrderedChainMap.__iter__N)rrr
r�rrrrr�msr�c@seZdZeZdZdZdZdZgZ	d�dd�Z
dd	�Zd
d�Zde_
ed
d��Zdd�Zdd�Zedd��Zedd��Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zejefd)d*��Z d+d,�Z!d-d.�Z"d/d0�Z#d1d2�Z$d3d4�Z%d5d6�Z&d7d8�Z'd�d:d;�Z(d<d=�Z)ed>d?��Z*d@dA�Z+dBdC�Z,dDdE�Z-d�dFdG�Z.d�dHdI�Z/d�dJdK�Z0dLdM�Z1dNdO�Z2dPdQ�Z3d�dRdS�Z4dTdU�Z5d�dVdW�Z6d�dXdY�Z7d�dZd[�Z8d�d\d]�Z9d�d^d_�Z:d�d`da�Z;dbdc�Z<d�ddde�Z=d�dfdg�Z>d�dhdi�Z?d�djdk�Z@d�dldm�ZAd�dndo�ZBd�dpdq�ZCd�drds�ZDd�dtdu�ZEd�dvdw�ZFd�dxdy�ZGd�dzd{�ZHd�d|d}�ZId�d~d�ZJd�d�d��ZKd�d�d��ZLd�d�d��ZMd�d�d��ZNd�d�d��ZOd�d��ZPd�d��ZQd�d�d��ZRd�d�d��ZSd�d��ZTeTe7�ZUZVeTe8�ZWZXeTe9�ZYZZeTe:�Z[Z\eTe0�Z]Z^eTe2�Z_eTe/�Z`eTeP�ZaeTeR�ZbeTeS�Zcd9S)��TestCaseTi�iF�runTestcCs�||_d|_d|_zt||�}Wn.tk
rN|dkrJtd|j|f��Yn
X|j|_g|_d|_	i|_
|�td�|�t
d�|�td�|�td�|�td�|�td�dS)	NzNo testr�zno such test method in %s: %s�assertDictEqual�assertListEqual�assertTupleEqual�assertSetEqual�assertMultiLineEqual)�_testMethodName�_outcome�_testMethodDocrre�
ValueError�	__class__�__doc__�	_cleanups�_subtest�_type_equality_funcs�addTypeEqualityFunc�dictr|rQr��	frozensetr)rZ
methodName�
testMethodrrrr�s(�zTestCase.__init__cCs||j|<dSr()r�)rZtypeobjr,rrrr��s
zTestCase.addTypeEqualityFunccOs�t|�dkr|^}}}nV|s&td��nHd|krZ|�d�}|^}}ddl}|jdtdd�ntdt|�d��t|�}|j�|||f�dS)	N�z>descriptor 'addCleanup' of 'TestCase' object needs an argumentr,rz4Passing 'function' as keyword argument is deprecated)�
stacklevelz:addCleanup expected at least 1 positional argument, got %dr)	r�rar1r��warn�DeprecationWarningrQr�r)r-r.rr,r�rrr�
addCleanup�s"

�
�zTestCase.addCleanupz%($self, function, /, *args, **kwargs)cOs|j�|||f�dSr()�_class_cleanupsr)�clsr,r-r.rrr�addClassCleanup�szTestCase.addClassCleanupcCsdSr(rrirrr�setUp�szTestCase.setUpcCsdSr(rrirrr�tearDown�szTestCase.tearDowncCsdSr(r�r�rrr�
setUpClass�szTestCase.setUpClasscCsdSr(rr�rrr�
tearDownClassszTestCase.tearDownClasscCsdS)Nrrrirrr�countTestCasesszTestCase.countTestCasescCst��Sr()rZ
TestResultrirrr�defaultTestResult	szTestCase.defaultTestResultcCs$|j}|r |���d�d��SdS�N�
r)r��strip�split�r�docrrr�shortDescriptionszTestCase.shortDescriptioncCsdt|j�|jfS)Nz%s.%s�rr�r�rirrr�idszTestCase.idcCs t|�t|�k	rtS|j|jkSr()r<�NotImplementedr��r�otherrrr�__eq__szTestCase.__eq__cCstt|�|jf�Sr()�hashr<r�rirrr�__hash__ szTestCase.__hash__cCsd|jt|j�fS�Nz%s (%s))r�rr�rirrr�__str__#szTestCase.__str__cCsdt|j�|jfS)Nz<%s testMethod=%s>r�rirrr�__repr__&s�zTestCase.__repr__cCs<t|dd�}|dk	r |||�nt�dtd�|�|�dS)N�addSkipz4TestResult has no addSkip method, skips not reportedr�)rr�r��RuntimeWarning�
addSuccess)rrr"r9r�rrr�_addSkip*s�zTestCase._addSkipc	ks�|jdks|jjsdVdS|j}|dkr4t|�}n|j�|�}t|||�|_zX|jj|jdd��dVW5QRX|jjs�|jj	}|dk	r�|j
r�t�n|jjr�t�W5||_XdS)NT�r#)
r�rr�r��params�	new_child�_SubTestr%rrZfailfastrr)rrWr��parentZ
params_maprrrr�subTest3s$
zTestCase.subTestcCs`|D]V\}}t|t�r(|�|j||�q|dk	rt|d|j�rN|�||�q|�||�qdSr0)r;r�rr"rSrX�
addFailureZaddError)rrr�testr!rrr�_feedErrorsToResultRs
zTestCase._feedErrorsToResultcCsDz
|j}Wn*tk
r4t�dt�|�|�YnX|||�dS)Nz@TestResult has no addExpectedFailure method, reporting as passes)�addExpectedFailurerer�r�r�r�)rrr!r�rrr�_addExpectedFailure\s
�zTestCase._addExpectedFailurecCshz
|j}WnPtk
rZt�dt�z
td�Wn$tk
rT|�|t���YnXYn
X||�dS)NzCTestResult has no addUnexpectedSuccess method, reporting as failure)	�addUnexpectedSuccessrer�r�r�rr�r r!)rrr�rrr�_addUnexpectedSuccessfs
�
zTestCase._addUnexpectedSuccesscCs|��dSr()r�rirrr�
_callSetUpuszTestCase._callSetUpcCs
|�dSr(r)r�methodrrr�_callTestMethodxszTestCase._callTestMethodcCs|��dSr()r�rirrr�
_callTearDown{szTestCase._callTearDowncOs|||�dSr(r�rr,r-r.rrr�_callCleanup~szTestCase._callCleanupNc

Cs|}|dkr.|��}t|dd�}|dk	r.|�|�|�t||j�}t|jdd�s^t|dd�r�z,t|jdd�pxt|dd�}|�|||�W5|�|�XdSt|dd�}t|dd�}|p�|}t|�}	z�|	|_|	�|��|�
�W5QRX|	j�r@||	_|	j|dd	��|�|�W5QRXd|	_|	�|��|��W5QRX|��|	jD]\}}|�|||��qN|�||	j�|	j�r�|�r�|	j
�r�|�||	j
�n
|�|�n
|�|�|W�S|�|�|dk�r�t|dd�}
|
dk	�r�|
�|	j�	�d|	_
d|_XdS)
N�startTestRunr?Fr@rCrK�stopTestRunTr�)r�rZ	startTestr�r�ZstopTestr�rr�clearrr�r%r�rrr�r��
doCleanupsrr�r�r�r�)
rrZorig_resultr�r�Zskip_whyZexpecting_failure_methodZexpecting_failure_classr�outcomer�r�r9rrr�run�st

�
���




zTestCase.runc	CsR|jp
t�}|jrL|j��\}}}|�|��|j|f|�|�W5QRXq|jSr()r�rr�r1r%r�r)rr�r,r-r.rrrr��szTestCase.doCleanupsc
Csdg|_|jr`|j��\}}}z|||�Wqtk
r\}z|j�t���W5d}~XYqXqdSr()ZtearDown_exceptionsr�r1r2rr r!)r�r,r-r.r4rrr�doClassCleanups�szTestCase.doClassCleanupscOs|j||�Sr()r�)rr-�kwdsrrr�__call__�szTestCase.__call__cCsF|��t||j��|��|jrB|j�d�\}}}|||�qdS)N���)r�rr�r�r�r1r�rrr�debug�szTestCase.debugcCst|��dSr(r6)rr9rrr�skipTest�szTestCase.skipTestcCs|�|��dSr()rX)rrWrrr�fail�sz
TestCase.failcCs&|r"|�|dt|��}|�|��dS)Nz%s is not false�rVrrX�r�exprrWrrr�assertFalse�szTestCase.assertFalsecCs&|s"|�|dt|��}|�|��dS)Nz%s is not truerrrrr�
assertTrue�szTestCase.assertTruecCsV|js|p|S|dkr|Szd||fWStk
rPdt|�t|�fYSXdS)Nz%s : %s)�longMessage�UnicodeDecodeErrorr)rrWrYrrrrV�s
zTestCase._formatMessagecOs(t||�}z|�d||�W�Sd}XdS)N�assertRaises�rhrg)r�expected_exceptionr-r.�contextrrrr
s
zTestCase.assertRaisescOst||�}|�d||�S)N�assertWarns�rxrg)r�expected_warningr-r.r
rrrr5s
zTestCase.assertWarnscCst|||�Sr()r�)rr�r�rrr�
assertLogsTszTestCase.assertLogscCsFt|�t|�kr@|j�t|��}|dk	r@t|t�r<t||�}|S|jSr()r<r�r�r;rr�_baseAssertEqual)r�first�secondZasserterrrr�_getAssertEqualityFuncjs

zTestCase._getAssertEqualityFunccCs0||ks,dt||�}|�||�}|�|��dS)N�%s != %s)rrVrX)rrrrWrYrrrr�szTestCase._baseAssertEqualcCs|�||�}||||d�dS)N)rW)r)rrrrWZassertion_funcrrr�assertEqual�szTestCase.assertEqualcCs2||ks.|�|dt|�t|�f�}|�|��dS)Nz%s == %sr)rrrrWrrr�assertNotEqual�s
�zTestCase.assertNotEqualcCs�||krdS|dk	r$|dk	r$td��t||�}|dk	rf||krDdSdt|�t|�t|�t|�f}n:|dkrrd}t||�dkr�dSdt|�t|�|t|�f}|�||�}|�|��dS)N� specify delta or places not bothz(%s != %s within %s delta (%s difference)�rz)%s != %s within %r places (%s difference)�ra�absr�roundrVrX�rrrZplacesrWZdelta�diffrYrrr�assertAlmostEqual�s4��zTestCase.assertAlmostEqualcCs�|dk	r|dk	rtd��t||�}|dk	rb||ks@||kr@dSdt|�t|�t|�t|�f}n<|dkrnd}||ks�t||�dkr�dSdt|�t|�|f}|�||�}|�|��dS)Nrz(%s == %s within %s delta (%s difference)rrz%s == %s within %r placesrrrrr�assertNotAlmostEqual�s,��zTestCase.assertNotAlmostEqualcCs�|dk	rP|j}t||�s.|�d|t|�f��t||�sT|�d|t|�f��nd}d}zt|�}Wn ttfk
r�d|}YnX|dkr�zt|�}Wn ttfk
r�d|}YnX|dk�r�||kr�dSd|��ft||�}t	t
||��D]�}	z||	}
Wn4tttfk
�r<|d|	|f7}Y�q�YnXz||	}Wn4tttfk
�r~|d|	|f7}Y�q�YnX|
|kr�|d	|	ft|
|�7}�q�q�||k�r�|dk�r�t|�t|�k�r�dS||k�r<|d
|||f7}z|d|t||�f7}Wn,tttfk
�r8|d||f7}YnXnh||k�r�|d
|||f7}z|d|t||�f7}Wn,tttfk
�r�|d||f7}YnX|}dd�
t�t�|���t�|�����}
|�||
�}|�||�}|�|�dS)NzFirst sequence is not a %s: %szSecond sequence is not a %s: %sZsequencez(First %s has no length.    Non-sequence?z)Second %s has no length.    Non-sequence?z%ss differ: %s != %s
z(
Unable to index element %d of first %s
z)
Unable to index element %d of second %s
z#
First differing element %d:
%s
%s
z+
First %s contains %d additional elements.
zFirst extra element %d:
%s
z'Unable to index element %d of first %s
z,
Second %s contains %d additional elements.
z(Unable to index element %d of second %s
r�)rr;rXrr�ra�NotImplementedError�
capitalizer�range�min�
IndexErrorr<�join�difflib�ndiff�pprint�pformat�
splitlines�_truncateMessagerVr)rZseq1Zseq2rW�seq_typeZ
seq_type_nameZ	differingZlen1Zlen2�iZitem1Zitem2rY�diffMsgrrr�assertSequenceEqual�s�

�

��
�

������

��
�

��
���zTestCase.assertSequenceEqualcCs2|j}|dkst|�|kr"||S|tt|�Sr()�maxDiffr��DIFF_OMITTED)rr�rZmax_diffrrrr-NszTestCase._truncateMessagecCs|j|||td�dS�N)r.)r1r|)rZlist1Zlist2rWrrrr�Ts
zTestCase.assertListEqualcCs|j|||td�dSr4)r1rQ)rZtuple1Ztuple2rWrrrr�`s	zTestCase.assertTupleEqualc

Cs`z|�|�}Wn^tk
r>}z|�d|�W5d}~XYn0tk
rl}z|�d|�W5d}~XYnXz|�|�}Wn^tk
r�}z|�d|�W5d}~XYn0tk
r�}z|�d|�W5d}~XYnX|s�|s�dSg}|�r|�d�|D]}|�t|���q|�r@|�d�|D]}|�t|���q*d�|�}	|�|�||	��dS)Nz/invalid type when attempting set difference: %sz2first argument does not support set difference: %sz3second argument does not support set difference: %sz*Items in the first set but not the second:z*Items in the second set but not the first:r�)�
differencerarrer�reprr'rV)
rZset1Zset2rWZdifference1r$Zdifference2�lines�itemrYrrrr�ks2
  


zTestCase.assertSetEqualcCs2||kr.dt|�t|�f}|�|�||��dS)Nz%s not found in %s�rrrV�r�memberZ	containerrWrYrrr�assertIn�s
�zTestCase.assertIncCs2||kr.dt|�t|�f}|�|�||��dS)Nz%s unexpectedly found in %sr9r:rrr�assertNotIn�s
�zTestCase.assertNotIncCs2||k	r.dt|�t|�f}|�|�||��dS)Nz%s is not %sr9�rZexpr1Zexpr2rWrYrrr�assertIs�s
�zTestCase.assertIscCs,||kr(dt|�f}|�|�||��dS)Nzunexpectedly identical: %sr9r>rrr�assertIsNot�szTestCase.assertIsNotc	Cs~|�|td�|�|td�||krzdt||�}dd�t�t�|���t�|�����}|�	||�}|�
|�||��dS)Nz"First argument is not a dictionaryz#Second argument is not a dictionaryrr�)�assertIsInstancer�rr'r(r)r*r+r,r-rrV)rZd1Zd2rWrYrrrrr��s
�zTestCase.assertDictEqualc		Cs�t�dt�g}g}|��D]L\}}||kr8|�|�q|||kr|�dt|�t|�t||�f�q|sv|svdSd}|r�dd�dd�|D��}|r�|r�|d7}|d	d�|�7}|�|�||��dS)
Nz&assertDictContainsSubset is deprecatedz%s, expected: %s, actual: %srCzMissing: %s�,css|]}t|�VqdSr()r)rMr�rrrrP�sz4TestCase.assertDictContainsSubset.<locals>.<genexpr>z; zMismatched values: %s)	r�r�r��itemsrrr'rrV)	rZsubsetZ
dictionaryrWZmissingZ
mismatched�key�valuerYrrr�assertDictContainsSubset�s4�
���
z!TestCase.assertDictContainsSubsetc
Cs�t|�t|�}}zt�|�}t�|�}Wntk
rHt||�}YnX||krVdSt||�}|r�d}dd�|D�}d�|�}	|�||	�}|�||�}|�	|�dS)NzElement counts were not equal:
cSsg|]}d|�qS)z First has %d, Second has %d:  %rr)rMrrrr�
<listcomp>�sz-TestCase.assertCountEqual.<locals>.<listcomp>r�)
r|�collections�Counterrarrr'r-rVr)
rrrrWZ	first_seqZ
second_seqZdifferencesrYr7r0rrr�assertCountEqual�s 


zTestCase.assertCountEqualcCs�|�|td�|�|td�||kr�t|�|jks@t|�|jkrN|�|||�|jdd�}|jdd�}t|�dkr�|�d�|kr�|dg}|dg}dt||�}dd	�t	�
||��}|�||�}|�|�
||��dS)
NzFirst argument is not a stringzSecond argument is not a stringT)�keependsrz
r�rrC)rArr��_diffThresholdrr,r�rr'r(r)r-rrV)rrrrWZ
firstlinesZsecondlinesrYrrrrr��s �

zTestCase.assertMultiLineEqualcCs2||ks.dt|�t|�f}|�|�||��dS)Nz%s not less than %sr9�r�a�brWrYrrr�
assertLessszTestCase.assertLesscCs2||ks.dt|�t|�f}|�|�||��dS)Nz%s not less than or equal to %sr9rMrrr�assertLessEqualszTestCase.assertLessEqualcCs2||ks.dt|�t|�f}|�|�||��dS)Nz%s not greater than %sr9rMrrr�
assertGreaterszTestCase.assertGreatercCs2||ks.dt|�t|�f}|�|�||��dS)Nz"%s not greater than or equal to %sr9rMrrr�assertGreaterEqual szTestCase.assertGreaterEqualcCs,|dk	r(dt|�f}|�|�||��dS)Nz%s is not Noner9�rr)rWrYrrr�assertIsNone&szTestCase.assertIsNonecCs"|dkrd}|�|�||��dS)Nzunexpectedly None)rrVrTrrr�assertIsNotNone,szTestCase.assertIsNotNonecCs0t||�s,dt|�|f}|�|�||��dS)Nz%s is not an instance of %r�r;rrrV�rr)r�rWrYrrrrA2s
zTestCase.assertIsInstancecCs0t||�r,dt|�|f}|�|�||��dS)Nz%s is an instance of %rrWrXrrr�assertNotIsInstance9s
zTestCase.assertNotIsInstancecOst|||�}|�d||�S)N�assertRaisesRegexr)rrr^r-r.r
rrrrZ?s
zTestCase.assertRaisesRegexcOst|||�}|�d||�S)N�assertWarnsRegexr)rrr^r-r.r
rrrr[OszTestCase.assertWarnsRegexcCsJt|ttf�rt�|�}|�|�sFd|j|f}|�||�}|�|��dS)Nz&Regex didn't match: %r not found in %r)	r;r�bytesr\r]rprqrVrX)r�textr^rWrYrrr�assertRegexbs

�zTestCase.assertRegexcCs`t|ttf�rt�|�}|�|�}|r\d||��|���|j|f}|�	||�}|�
|��dS)Nz"Regex matched: %r matches %r in %r)r;rr\r\r]rp�start�endrqrVrX)rr]Zunexpected_regexrW�matchrYrrr�assertNotRegexns

�zTestCase.assertNotRegexcs�fdd�}|S)Ncs t�d��j�td��||�S)NzPlease use {0} instead.r�)r�r�rlrr�r7��
original_funcrr�deprecated_func~s
�z,TestCase._deprecate.<locals>.deprecated_funcr)rdrerrcr�
_deprecate}szTestCase._deprecate)r�)N)N)N)N)NN)N)N)N)NNN)NNN)NN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)drrr
�AssertionErrorrXrr2rLZ_classSetupFailedr�rr�r��__text_signature__�classmethodr�r�r�r�r�r�r�r�r�r�r�r�r�r�r&r'�_subtest_msg_sentinelr�r�r�r�r�r�r�r�r�r�r�r�rrrrrrVr
rrrrrrr r!r1r-r�r�r�r<r=r?r@r�rFrJr�rPrQrRrSrUrVrArYrZr[r^rbrfZfailUnlessEqualZassertEqualsZfailIfEqualZassertNotEqualsZfailUnlessAlmostEqualZassertAlmostEqualsZfailIfAlmostEqualZassertNotAlmostEqualsZ
failUnlessZassert_ZfailUnlessRaisesZfailIfZassertRaisesRegexpZassertRegexpMatchesZassertNotRegexpMatchesrrrrr�ws�!
 


	


E

	


!



	�
-�
#
c


+






 










	r�csfeZdZd�fdd�	Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Z�Z
S)�FunctionTestCaseNcs*tt|���||_||_||_||_dSr()�superrkr�
_setUpFunc�
_tearDownFunc�	_testFunc�_description)rZtestFuncr�r�Zdescription�r�rrr�s
zFunctionTestCase.__init__cCs|jdk	r|��dSr()rmrirrrr��s
zFunctionTestCase.setUpcCs|jdk	r|��dSr()rnrirrrr��s
zFunctionTestCase.tearDowncCs|��dSr()rorirrrr��szFunctionTestCase.runTestcCs|jjSr()rorrirrrr��szFunctionTestCase.idcCs@t||j�stS|j|jko>|j|jko>|j|jko>|j|jkSr()r;r�r�rmrnrorpr�rrrr��s
�
�
�zFunctionTestCase.__eq__cCstt|�|j|j|j|jf�Sr()r�r<rmrnrorprirrrr��s�zFunctionTestCase.__hash__cCsdt|j�|jjfSr�)rr�rorrirrrr��s
�zFunctionTestCase.__str__cCsdt|j�|jfS)Nz<%s tec=%s>)rr�rorirrrr��s
�zFunctionTestCase.__repr__cCs2|jdk	r|jS|jj}|r.|�d�d��p0dSr�)rpror�r�r�r�rrrr��s
z!FunctionTestCase.shortDescription)NNN)rrr
rr�r�r�r�r�r�r�r�r��
__classcell__rrrqrrk�s		rkcsDeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z�Z	S)
r�cs(t���||_||_||_|j|_dSr()rlr�_messager"r�rX)rr"r�r�rqrrr�s

z_SubTest.__init__cCstd��dS)Nzsubtests cannot be run directly)r"rirrrr��sz_SubTest.runTestcCs^g}|jtk	r |�d�|j��|jrPd�dd�|j��D��}|�d�|��d�|�p\dS)Nz[{}]z, css|]\}}d�||�VqdS)z{}={!r}N)rl)rMr�r�rrrrP�s�z+_SubTest._subDescription.<locals>.<genexpr>z({})� z(<subtest>))rsrjrrlr�r'rC)r�partsZparams_descrrr�_subDescription�s

�z_SubTest._subDescriptioncCsd�|j��|���S�Nz{} {})rlr"r�rvrirrrr��sz_SubTest.idcCs
|j��Sr()r"r�rirrrr��sz_SubTest.shortDescriptioncCsd�|j|���Srw)rlr"rvrirrrr��sz_SubTest.__str__)
rrr
rr�rvr�r�r�rrrrrqrr��sr�)3r r=r(r�r*r\r�rHr&rmrDrCr�utilrrrrrZ
__unittest�objectrjr3r2r	rrrr*r+r/r5rFrIrJrrLrUr[rhrx�
namedtupler�r�r�r��ChainMapr�r�rkr�rrrr�<module>sb(	*%5�,
$:

?>