o
    TiU                     @   sT   d dl mZ d dlZd dlmZ d dlZd dlmZ d dlm	Z	 G dd deZ
dS )    )absolute_importN)TestCase)OrderedDict)StringIOc                   @   s~   e Zd Zeeds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d Zdd Zdd ZdS )
TestDecodeassertIsc                 C   s   |  ||u d||f  d S )Nz%r is %r)
assertTrue)selfab r   K/home/ubuntu/.local/lib/python3.10/site-packages/hjson/tests/test_decode.pyr      s   zTestDecode.assertIsc                 C   s8   t jdtjd}| t|tj | |td d S )Nz1.1)parse_float)jsonloadsdecimalDecimalr   
isinstanceassertEqualr	   rvalr   r   r   test_decimal   s   zTestDecode.test_decimalc                 C   s.   t jdtd}| t|t | |d d S )N1)	parse_intg      ?)r   r   floatr   r   r   r   r   r   r   
test_float   s   zTestDecode.test_floatc                 C   s    t d}| |ddd d S )Nz,{   "key"    :    "value"    ,  "k":"v"    }valuev)keyk)r   r   r   r   r   r   r   test_decoder_optimizations   s   
z%TestDecode.test_decoder_optimizationsc                 C   sR   d}|  t|t| d}|  t|t| d}|  t|t| d S )Nz{}z[]"")r   r   r   evalr	   sr   r   r   test_empty_objects"   s   zTestDecode.test_empty_objectsc                 C   s   d}g d}|  t|t| |  tj|dd d| |  tjt|dd d| tj|td}|  |t| |  t|t |  tj|tdd dt| d S )	Nz?{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}))xkd   )kcw   )art   )hxm   )qrt   )pad   )hoy   c                 S      | S Nr   xr   r   r   <lambda>6       z3TestDecode.test_object_pairs_hook.<locals>.<lambda>object_pairs_hookc                 S   r4   r5   r   r6   r   r   r   r8   7   r9   c                 S   s   d S r5   r   r6   r   r   r   r8   =   r9   )r;   object_hook)r   r   r   r"   loadr   r   type)r	   r$   podr   r   r   test_object_pairs_hook*   s   	z!TestDecode.test_object_pairs_hookc                 C   sF   ||}t |d t |d \}}\}}| || | || d S )Nr   r'   )sortedr   )r	   sourcer   r   r
   r   cdr   r   r   check_keys_reuseA   s   "zTestDecode.check_keys_reusec                 C   s   d d}| |tj d S )N2   [{"a_key": 1, "b_é": 2}, {"a_key": 3, "b_é": 4}]utf8)encoderF   r   r   r#   r   r   r   test_keys_reuse_strG   s   
zTestDecode.test_keys_reuse_strc                 C   s   d}|  |tj d S )NrG   )rF   r   r   r#   r   r   r   test_keys_reuse_unicodeK   s   z"TestDecode.test_keys_reuse_unicodec                 C   sP   |  tdd |  tdd |  tddg |  tddg d S )Nr!    z[""]r   r   r   )r	   r   r   r   test_empty_stringsO   s   zTestDecode.test_empty_stringsc                 C   s   d}d}d}d}d}|  t|ddi |  t|ddi |  t|ddi |  t|ddi |  t|ddi d S )Nz

hello: '''

'''

z

hello: '''
'''

z

hello: ''''''

z

hello: ''

z

hello: ""

hellorL   rM   )r	   s1s2s3s4s5r   r   r   test_multiline_stringU   s   z TestDecode.test_multiline_stringc                 C   sd   t jj}| di idf| d | di idf|tdd | di idf| d d S )Nr
   	   z	{"a": {}}r:      z 
{"a": {}})r   decoderHjsonDecoderr   
raw_decodedict)r	   clsr   r   r   test_raw_decodex   s    zTestDecode.test_raw_decodec                 C   s   t j }dD ]}| t|jd| | t|jd| qtddgtd\}}t|t| }| t|j|| | t|j|| d S )N)	r-   r/   r1   i1234	128931233	472389423)r   )	r   rX   rY   assertRaises
ValueError	scan_oncerZ   rB   id)r	   jir7   ydiffr   r   r   test_bounds_checking   s   
zTestDecode.test_bounds_checkingN)__name__
__module____qualname__hasattrr   r   r   r   r    r%   rA   rF   rJ   rK   rN   rU   r]   rn   r   r   r   r   r      s    
#
r   )
__future__r   r   unittestr   hjsonr   r   hjson.compatr   r   r   r   r   r   <module>   s    