a
    fYb                     @   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)FormatCheckerFormatErrorValidationError)Draft4ValidatorzBoom!zBang!c                 C   s   | dkrt td S )Nbang)BANGBOOMthing r   ;lib/python3.9/site-packages/jsonschema/tests/test_format.pyboom   s    r   c                   @   s\   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d Zdd ZdS )TestFormatCheckerc                 C   s   t dd}| |j d S )Nr   Z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    n1 s,0    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   Z
addCleanuppopZ
cls_checksr   assertEqual)r   Z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 sJ0    Y  | |j	j
t | |j	jt | tt |jddd W d    n1 s0    Y  d S )Nr   Z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 sR0    Y  | |j	j
t | |j	jt d S )Nr   r!   r%   )Zformat_checkerr	   )r   r   
ValueErrorr   r   r   r   Zvalidater(   r)   r*   r	   r+   )r   r   Z	validatorr,   r   r   r   7test_format_error_causes_become_validation_error_causes<   s    (zITestFormatChecker.test_format_error_causes_become_validation_error_causesc                 C   sB   t  }| t |jddd W d    n1 s40    Y  d S )Nznot-an-ipv4Zipv4r#   )r   r   r   r'   r   r   r   r   'test_format_checkers_come_with_defaultsG   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   Zfooc                 S   s   dS NTr   r
   r   r   r   <lambda>R       z-TestFormatChecker.test_repr.<locals>.<lambda>Zbarc                 S   s   dS r1   r   r
   r   r   r   r2   S   r3   Zbazc                 S   s   dS r1   r   r
   r   r   r   r2   T   r3   z.<FormatChecker checkers=['bar', 'baz', 'foo']>)r   r   r   reprr   r   r   r   	test_reprP   s    
zTestFormatChecker.test_reprc                 C   sd   zddl m} W n ty"   Y n>0 t }| |dd | |dd | |dd d S )Nr   )is_duration   ZdurationZP4Ytest)Zjsonschema._formatr6   ImportErrorr   
assertTrueconformsr   )r   r6   r   r   r   r   test_duration_formatZ   s    z&TestFormatChecker.test_duration_formatc                 C   s@   t  }| |dd | |dd | |dd d S )Nr7   Zuuidz$6e6659ec-4503-4428-9f03-2e2ea4d6c278r8   )r   r:   r;   r   r   r   r   r   test_uuid_formate   s    
z"TestFormatChecker.test_uuid_formatN)__name__
__module____qualname__r   r   r   r    r-   r/   r0   r5   r<   r=   r   r   r   r   r      s   		
r   N)__doc__Zunittestr   Z
jsonschemar   r   r   Zjsonschema.validatorsr   r.   r	   ZeroDivisionErrorr   r   r   r   r   r   r   <module>   s   