
 XT                 @   sv   d  d l  Z  d  d l Z d  d l m Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 m Z Gd d   d e  Z d S)    N)TestCase)unichr	text_typebuBytesIOc               @   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 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)&TestUnicodec             C   sY   t  j d d  } d } | j d  } | j |  } | j |  } |  j | |  d  S)Nencodingzutf-8u   αΩ)jsonZJSONEncoderencodeassertEqual)selfencoderr   sjujs r   Z/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/simplejson/tests/test_unicode.pytest_encoding1	   s    zTestUnicode.test_encoding1c             C   sS   d } | j  d  } t j | d d } t j | d d } |  j | |  d  S)Nu   αΩzutf-8r	   )r   r
   dumpsr   )r   r   r   r   r   r   r   r   test_encoding2   s
    zTestUnicode.test_encoding2c             C   s)   d } t  j |  } |  j | d  d  S)Nu   αΩz"\u03b1\u03a9")r
   r   r   )r   r   jr   r   r   test_encoding3   s    zTestUnicode.test_encoding3c             C   s,   d } t  j | g  } |  j | d  d  S)Nu   αΩz["\u03b1\u03a9"])r
   r   r   )r   r   r   r   r   r   test_encoding4   s    zTestUnicode.test_encoding4c             C   s7   d } t  j | d d } |  j | d | d  d  S)Nu   αΩensure_asciiF")r
   r   r   )r   r   r   r   r   r   test_encoding5"   s    zTestUnicode.test_encoding5c             C   s:   d } t  j | g d d } |  j | d | d  d  S)Nu   αΩr   Fz["z"])r
   r   r   )r   r   r   r   r   r   test_encoding6'   s    zTestUnicode.test_encoding6c             C   sB   d } |  j  t j |  d  |  j  t j | d d d  d  S)Nu   𝄠z"\ud834\udd20"r   Fu   "𝄠")r   r
   r   )r   r   r   r   r   test_big_unicode_encode,   s    z#TestUnicode.test_big_unicode_encodec             C   sD   d } |  j  t j d | d  |  |  j  t j d  |  d  S)Nu   z𝄠xr   z"z\ud834\udd20x")r   r
   loads)r   r   r   r   r   test_big_unicode_decode1   s    !z#TestUnicode.test_big_unicode_decodec             C   sP   xI t  d d  D]8 } t |  } d | f } |  j t j |  |  q Wd  S)Nr   i  z"\u%04x")ranger   r   r
   r   )r   ir   r   r   r   r   test_unicode_decode6   s    zTestUnicode.test_unicode_decodec             C   s   d } d d d d d d d g } |  j  t j |  t |   |  j  t j | d d d   |  t j | d t j } |  j  | t j |   |  j  t |  t j  |  j  t j | d t j d d d   t j |   d  S)Nz?{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}xkd   kcw   art   hxm   qrt   pad   hoy   Zobject_pairs_hookc             S   s   |  S)Nr   )xr   r   r   <lambda>B   s    zATestUnicode.test_object_pairs_hook_with_unicode.<locals>.<lambda>Zobject_hookc             S   s   d  S)Nr   )r2   r   r   r   r3   I   s    )r$   r%   )r&   r'   )r(   r)   )r*   r+   )r,   r-   )zpadr/   )r0   r1   )r   r
   r   evalOrderedDicttype)r   r   pZodr   r   r   #test_object_pairs_hook_with_unicode=   s    %	z/TestUnicode.test_object_pairs_hook_with_unicodec             C   s-   |  j  t j d j d   i d d 6 d  S)Nu   {"a": "é"}zutf-8   éa)r   r
   r   r   )r   r   r   r   test_default_encodingM   s    z!TestUnicode.test_default_encodingc             C   se   |  j  t t j d   t  |  j  t t j d   t  |  j  t t j d  d  t  d  S)Nz""z"a"z["a"]r   )r   r6   r
   r   r   )r   r   r   r   test_unicode_preservationQ   s    z%TestUnicode.test_unicode_preservationc             C   s   |  j  t t j g  d d  t  |  j  t t j d d d  t  |  j  t t j i  d d  t  |  j  t t j d d d  t  d  S)Nr   Fr    )r   r6   r
   r   r   )r   r   r   r   'test_ensure_ascii_false_returns_unicodeV   s    %%%z3TestUnicode.test_ensure_ascii_false_returns_unicodec             C   s   i t  d  d 6} i t d  d 6} d } d } |  j t j |  |  |  j t j |  |  |  j t j | d d |  |  j t j | d d |  d  S)Nu   ArrÃªt sur imagesZquuxu   Arrêt sur imagesz!{"quux": "Arr\u00eat sur images"}u   {"quux": "Arrêt sur images"}r   F)r   r   r   r
   r   )r   Zdoc1Zdoc2Z	doc_asciiZdoc_unicoder   r   r   +test_ensure_ascii_false_bytestring_encoding]   s    z7TestUnicode.test_ensure_ascii_false_bytestring_encodingc             C   s   d } | j  d  } d } |  j t j |  |  |  j t j |  |  |  j t j | d d |  |  j t j | d d |  d  S)Nu     utf8z"\u2029\u2028"r   F)r   r   r
   r   )r   s1s2expectr   r   r   $test_ensure_ascii_linebreak_encodingh   s    z0TestUnicode.test_ensure_ascii_linebreak_encodingc             C   s  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d	  t j d
 k r|  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  |  j  t j t j d  n  d  S)Nz"\uz"\u1z"\u12z"\u123z"\u1234z"\u123x"z"\u12x4"z"\u1x34"z"\ux234"i  z
"\ud800\u"z"\ud800\u0"z"\ud800\u00"z"\ud800\u000"z"\ud800\u000x"z"\ud800\u00x0"z"\ud800\u0x00"z"\ud800\ux000")ZassertRaisesr
   ZJSONDecodeErrorr   sys
maxunicode)r   r   r   r   test_invalid_escape_sequencesr   s$    z)TestUnicode.test_invalid_escape_sequencesc             C   s|   xH t  t t d d   D]. } |  j t j | d d t j |   q Wd } |  j t j | d d d | d  d  S)Nr      r   Fu   ☃r   )mapr   r!   r   r
   r   )r   cZsnowmanr   r   r   test_ensure_ascii_still_works   s    z)TestUnicode.test_ensure_ascii_still_worksc             C   s~   d } t  j t t j |   } |  j t j t |   |  x6 | | j d  f D] } |  j t j	 |  |  qW Wd  S)Nu   こんにちわr@   )
codecsBOM_UTF8r   r
   r   r   loadr   decoder   )r   contentZjson_docdocr   r   r   test_strip_bom   s
    zTestUnicode.test_strip_bomN)__name__
__module____qualname__r   r   r   r   r   r   r   r    r#   r8   r;   r<   r>   r?   rD   rG   rK   rR   r   r   r   r   r      s$   
r   )rE   rL   Zunittestr   
simplejsonr
   Zsimplejson.compatr   r   r   r   r   r   r   r   r   r   <module>   s
   (