o
    >]                     @   s\   d Z ddlmZ ddlmZmZmZ ddlmZ e	dZ
edZdd ZG d	d
 d
eZdS )zP
Tests for the parts of jsonschema related to the :validator:`format` property.
    )TestCase)FormatErrorValidationErrorFormatChecker)Draft4ValidatorzBoom!zBang!c                 C   s   | dkrt t)Nbang)BANGBOOMthing r   >/usr/lib/python3/dist-packages/jsonschema/tests/test_format.pyboom   s   r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestFormatCheckerc                 C   s   t dd}| |j d S )Nr   formats)r   assertFalsecheckersselfcheckerr   r   r   test_it_can_validate_no_formats   s   
z1TestFormatChecker.test_it_can_validate_no_formatsc                 C   s<   |  t tdgd W d    d S 1 sw   Y  d S )Nzo noesr   )assertRaisesKeyErrorr   )r   r   r   r   .test_it_raises_a_key_error_for_unknown_formats   s   "z@TestFormatChecker.test_it_raises_a_key_error_for_unknown_formatsc                 C   sF   t tj}| tjjd tdt | tjt |tdfd d S Nr   r   )r   )dictr   r   
addCleanuppop
cls_checksr   assertEqual)r   originalr   r   r   !test_it_can_register_cls_checkers   s   
z3TestFormatChecker.test_it_can_register_cls_checkersc                 C   s4   t  }|dt | |jtt jtdfd d S r   )r   checksr   r    r   r   r   r   r   r   test_it_can_register_checkers'   s   z/TestFormatChecker.test_it_can_register_checkersc                 C   s   t  }|jdttdt | t}|jddd W d    n1 s%w   Y  | |j	j
t | |j	jt | tt |jddd W d    d S 1 sTw   Y  d S )Nr   raises   instanceformatr   )r   r#   typer	   r   r   r   checkassertIs	exceptioncause	__cause__r   )r   r   cmr   r   r   !test_it_catches_registered_errors/   s   "z3TestFormatChecker.test_it_catches_registered_errorsc                 C   s   t  }|jdtdt tddi|d}| t}|d W d    n1 s)w   Y  | |j	j
t | |j	jt d S )Nr   r%   r*   )format_checkerr	   )r   r#   
ValueErrorr   r   r   r   validater-   r.   r/   r	   r0   )r   r   	validatorr1   r   r   r   7test_format_error_causes_become_validation_error_causes=   s   zITestFormatChecker.test_format_error_causes_become_validation_error_causesc                 C   sD   t  }| t |jddd W d    d S 1 sw   Y  d S )Nznot-an-ipv4ipv4r(   )r   r   r   r,   r   r   r   r   'test_format_checkers_come_with_defaultsH   s   "z9TestFormatChecker.test_format_checkers_come_with_defaultsc                 C   sT   t dd}|ddd  |ddd  |dd	d  | t|d
 d S )Nr   r   fooc                 S      dS NTr   r
   r   r   r   <lambda>S       z-TestFormatChecker.test_repr.<locals>.<lambda>barc                 S   r;   r<   r   r
   r   r   r   r=   T   r>   bazc                 S   r;   r<   r   r
   r   r   r   r=   U   r>   z.<FormatChecker checkers=['bar', 'baz', 'foo']>)r   r#   r    reprr   r   r   r   	test_reprQ   s   
zTestFormatChecker.test_reprN)__name__
__module____qualname__r   r   r"   r$   r2   r7   r9   rB   r   r   r   r   r      s    		r   N)__doc__unittestr   
jsonschemar   r   r   jsonschema.validatorsr   r4   r	   ZeroDivisionErrorr   r   r   r   r   r   r   <module>   s    