a
    zaN                     @   sh   d dl Z d dlZdddZe jdk rRd dlZd dlZdddZG d	d
 d
ejZnG dd
 d
ejZdS )    N   c                 C   sF   t | tst | tr*t| dd | D S t | tr>t| |S | S d S )Nc                 S   s   g | ]}t |qS  )round_sequence_r).0xr   r   /home/nik/mmllib/test/util.py
<listcomp>       z$round_sequence_r.<locals>.<listcomp>)
isinstancelisttupletypefloatround)seqdigitsr   r   r   r      s
    

r   )   r   r   Fc                 C   sR   d}zt | }W n ty,   t| }Y n0 |r>t||k rB|S |d | d S )NP   z [truncated]...)repr	Exceptionobject__repr__len)objshort_MAX_LENGTHresultr   r   r   	safe_repr)   s    r   c                   @   s:   e Zd ZdddZdddZdddZdd	 Zd
d ZdS )TestCaseNc                 C   s0  t }|j}t||s*| d|t|f t||sJ| d|t|f d }zt|}W n ttfyx   d| }Y n0 |d u rzt|}W n ttfy   d| }Y n0 |d u r||krd S t|}	t|}
t|	dkr|	d d d }	t|
dkr|
d d d }
| |	|
f}d| }t	t
||D ]}z|| }W n2 tttfyt   |d||f 7 }Y  qY n0 z|| }W n2 tttfy   |d	||f 7 }Y  qY n0 ||kr2|d
|t|t|f 7 } qq2||kr|d u rt|t|krd S ||krv|d||| f 7 }z|d|t|| f 7 }W n* tttfyr   |d||f 7 }Y n0 nf||k r|d||| f 7 }z|d|t|| f 7 }W n* tttfy   |d||f 7 }Y n0 |}ddtt| t|  }| ||}| ||}| | d S )NzFirst sequence is not a %s: %szSecond sequence is not a %s: %sz(First %s has no length.    Non-sequence?z)Second %s has no length.    Non-sequence?   z...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.
zFirst 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   __name__r
   failureExceptionr   r   	TypeErrorNotImplementedError
capitalizeZxrangemin
IndexErrorr   joindifflibndiffpprintpformat
splitlines_truncateMessage_formatMessagefail)selfseq1seq2msgseq_typeseq_type_name	differinglen1len2Z	seq1_reprZ	seq2_reprelementsiitem1item2standardMsgdiffMsgr   r   r   assertListEqual4   s    














zTestCase.assertListEqualc              	   C   s   |  |td |  |td ||krdt|dt|df }ddtt| t|  }| 	||}| 
| || d S )Nz"First argument is not a dictionaryz#Second argument is not a dictionaryz%s != %sTr    )assertIsInstancedictr   r(   r)   r*   r+   r,   r-   r.   r0   r/   )r1   d1d2r4   r>   diffr   r   r   assertDictEqual   s    
zTestCase.assertDictEqualc                 C   s0   t ||s,dt||f }| | || d S )Nz%s is not an instance of %r)r
   r   r0   r/   )r1   r   clsr4   r>   r   r   r   rA      s    
zTestCase.assertIsInstancec                 C   s   || S Nr   )r1   messagerE   r   r   r   r.      s    zTestCase._truncateMessagec                 C   s   |p|S rH   r   )r1   r4   r>   r   r   r   r/      s    zTestCase._formatMessage)N)N)N)r!   
__module____qualname__r@   rF   rA   r.   r/   r   r   r   r   r   3   s
   
X

r   c                   @   s   e Zd ZdS )r   N)r!   rJ   rK   r   r   r   r   r      s   )r   )F)sysunittestr   version_infor)   r+   r   r   r   r   r   r   <module>   s   



q