
    af7                         d dl Z d dlZd dlmZ 	 d dlmZ d dlmZ dZ	n# e
$ r dZ	Y nw xY wd Zd Z ej        e	 d           G d	 d
ej                              ZdS )    N)Utf8Validator)libTFc                     g } d}dg g}|d                              d           |d                              d           |d                              d           |d                              d           |d                              d|f           |                      |           d	g g}t                      }t          dt          |          dz             D ]f}|                                 |                    |d
|                   }|d                              |d         o|d         |d
|         f           g|                      |           dg g}|d                              d           |d                              d           |d                              d           |d                              d           |                      |           dg g}|d                              d           |d                              d           |                      |           dg g}|d                              d           |d                              d           |d                              d           |d                              d           |                      |           dg g}|d                              d           |d                              d           |d                              d           |                      |           dg g}|d                              d           |d                              d           |d                              d            |d                              d           |d                              d!           |                      |           d"g g}|d                              d#           |d                              d$           |d                              d%           |d                              d&           |d                              d'           |d                              d(           |d                              d)           d*}d+g g}g d,}|D ]Y}d*}t          |d         |d                   D ]}|t          j        d-|d.          z  }|d                              d/|f           Z|                      |           d0g g}g d1}	|	D ]}
|d                              d/|
f            |                      |           d2g g}|d                              d/d*                    |	          f           |                      |           d3g g}|d                              d4           |d                              d5           |d                              d6           |                      |           d7g g}|d                              d8           |d                              d9           |d                              d:           |d                              d;           |d                              d<           |                      |           d=g g}|d                              d>           |d                              d?           |d                              d@           |d                              dA           |d                              dB           |                      |           dCg g}|d                              dD           |d                              dE           |d                              dF           |d                              dG           |d                              dH           |                      |           dIg g}|d                              dJ           |d                              dK           |d                              dL           |d                              dM           |d                              dN           |d                              dO           |d                              dP           |                      |           dQg g}|d                              dR           |d                              dS           |d                              dT           |d                              dU           |d                              dV           |d                              dW           |d                              dX           |d                              dY           |                      |           dZg g}|d                              d[           |d                              d           d\D ]D}d]D ]?}|d^k    r|d_k    s1d`D ].}||z   daz   |z   }|dbvr|d                              d|f           /@E|                      |           dcg g}|d                              dd           |d                              de           |d                              df           |d                              dg           |d                              d            |d                              d[           |d                              d           |                      |           | S )hz{
    Create test sequences for UTF-8 decoder tests from
    http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
    s   κόσμεs   Some valid UTF-8 sequences   )Ts   hello$world)Ts   hello¢world)Ts   hello€world)Ts   hello𤭢worldTsI   All prefixes of a valid UTF-8 string that contains multi-byte code pointsNr   s+   First possible sequence of a certain length)T    )Ts   )Ts   ࠀ)Ts   𐀀s7   First possible sequence length 5/6 (invalid codepoints))Fs   )Fs   s*   Last possible sequence of a certain length)T   )Ts   ߿)Ts   ￿)Ts   􏿿s8   Last possible sequence length 4/5/6 (invalid codepoints))Fs   )Fs   )Fs   s   Other boundary conditions)Ts   ퟿)Ts   )Ts   �)Fs   s   Unexpected continuation bytes)F   )F   )Fs   )Fs   )Fs   )Fs   )Fs       s   Lonely start characters))      )      )      )      )      BB    Fs-   Sequences with last continuation byte missing)
   s   s   s   s      s   s   s   s   s%   Concatenation of incomplete sequencess   Impossible bytes)F   )F   )Fs   s'   Examples of an overlong ASCII character)Fs   )Fs   )Fs   )Fs   )Fs   s   Maximum overlong sequences)Fs   )Fs   )F   )Fs   )Fs   s,   Overlong representation of the NUL character)Fs   )Fs   )Fs   )Fs   )Fs   s   Single UTF-16 surrogates)F   )Fs   )Fs   )Fs   )Fs   )Fs   )Fs   s   Paired UTF-16 surrogates)Fs   )Fs   )Fs   )Fs   )Fs   )Fs   )Fs   )Fs   s'   Non-character code points (valid UTF-8))Ts   ￾)               )         r
   r"   r#   )   r
   r
   )s   r   s(   Unicode specials (i.e. replacement char))Ts   ￹)Ts   ￺)Ts   ￻)Ts   ￼)	appendStandardUtf8Validatorrangelenresetvalidatestructpackjoin)UTF8_TEST_SEQUENCESvssvsviressmmmkkkz1z2z3zzs                  Z/var/www/html/env/lib/python3.11/site-packages/autobahn/nvx/test/test_nvx_utf8validator.py_create_utf8_test_sequencesr@   +   s
     :C
'	,BqELL*+++qELL.///qELL2333qELL6777qELL$r""" 	U

B 	A1c#hhl## 3 3				jjRaR!!
1c!f'QRaR12222r""" 9"	=BqELL!!!qELL$%%%qELL()))qELL,---r""" Eb	IBqELL1222qELL5666r""" 8	<BqELL!!!qELL$%%%qELL()))qELL,---r""" Fr	JBqELL-...qELL1222qELL5666r""" '	+BqELL()))qELL()))qELL()))qELL,---qELL-...r""" +B	/BqELL!"""qELL!"""qELL%&&&qELL)***qELL-...qELL1222qELL5666A %b	)BNNNA ! !r!ube$$ 	, 	,AT1d+++AA 	1eQZ    r""" ;B	?B	^ 	^ 	^A " "
1eR[!!!!r""" 3B	7BqELL%!%&&&r""" r	"BqELL!"""qELL!"""qELL-...r""" 5b	9BqELL%&&&qELL)***qELL-...qELL1222qELL5666r""" (	,BqELL%&&&qELL)***qELL-...qELL1222qELL5666r""" :2	>BqELL%&&&qELL)***qELL-...qELL1222qELL5666r""" &r	*BqELL)***qELL)***qELL)***qELL)***qELL)***qELL)***qELL)***r""" &r	*BqELL5666qELL5666qELL5666qELL5666qELL5666qELL5666qELL5666qELL5666r""" 5b	9B qELL()))qELL())); 1 16 	1 	1B'MMbGmm, 1 1Bb7*R/B "7 7 71dBZ000	1 r""" 6r	:BqELL()))qELL()))qELL()))qELL()))qELL()))qELL()))qELL()))r"""r   c                      g } t                      D ]D}d |d         D             }t          |          dk    r|                     |d         |g           E| S )z<
    Generate some exotic, but valid UTF8 test strings.
    c                 .    g | ]}|d          
|d         S )r   r    ).0xs     r?   
<listcomp>z5_create_valid_utf8_test_sequences.<locals>.<listcomp>   s%    00011Q40!A$000r   r   r   )r@   r*   r'   )VALID_UTF8_TEST_SEQUENCEStestvalidss      r?   !_create_valid_utf8_test_sequencesrJ      sk     !#+-- @ @00Q000v;;??%,,d1gv->???$$r   z!NVX native extensions not presentc                   4    e Zd Zd Zd Zd Zd Zd Zd	dZdS )
TestNvxUtf8Validatorc                    g }t                      D ]}|                    |d                    t          dd          D ]E}|dk     s|dk    r7|                    dt	          |                              d          f           F	 || _        d S )Nr   r   i  i   i  Tzutf-8)r@   extendr)   r'   chrencode_TEST_SEQUENCES)selfr2   r9   r4   ssjss1ss2s           r?   setUpzTestNvxUtf8Validator.setUp   s     ,.. 	 	AIIadOOOO 6  	: 	:A6zzQZZ		4Qw!7!78999	2"  "r   c                 H    t                      }|                     |          S )zA
        Test standard implementation of UTF8 validator.
        )r(   
_test_utf8rR   	validators     r?   test_standard_utf8validatorz0TestNvxUtf8Validator.test_standard_utf8validator   s!     *++	y)))r   c                 H    t                      }|                     |          S )z<
        Test NVX implementation of UTF8 validator.
        )NvxUtf8ValidatorrY   rZ   s     r?   test_nvx_utf8validatorz+TestNvxUtf8Validator.test_nvx_utf8validator'  s!     %&&	y)))r   c                 H    t                      }|                     |          S )zU
        Test standard implementation of UTF8 validator in incremental mode.
        )r(   _test_utf8_incrementalrZ   s     r?   'test_standard_utf8validator_incrementalz<TestNvxUtf8Validator.test_standard_utf8validator_incremental.  s#     *++	**9555r   c                     | j         D ]]}|                                 |                    |d                   }|d         o|d         }|                     ||d                    ^d S )Nr   r   )rQ   r+   r,   assertEqual)rR   r[   r6   rr5   s        r?   rY   zTestNvxUtf8Validator._test_utf8C  su    % 	( 	(AOO""1Q4((A A$-1Q4CS!A$''''	( 	(r   Tc                    |rd}nd}|                                  |                     dd |         |                    d                    d                    d |                    |                                  |                     dd |         |                    d          d |                    |                                  |                     dd |         |                    d	          d |                    |                     d
d |         |                    d          d |                    |                                  |                     dd |         |                    d          d |                    |                     dd |         |                    d          d |                    |                                  |                     dd |         |                    d          d |                    |                     dd |         |                    d          d |                    d S )N      )TT   ri   u   µ@ßöäüàáutf8)FFr   r      )TT   rl   s   edited)FFr      r   )TTrg   rg   s   edit)FF   rm   s   ed)TFrm   rm   s   edited)FFr   rm   s   )r+   rd   r,   rP   )rR   r[   withPositionsr9   s       r?   ra   z+TestNvxUtf8Validator._test_utf8_incrementalM  sR    	AA A-bqb193E3EFWF^F^_eFfFf3g3ghjijhj3klll-bqb193E3Eg3N3NrPQr3RSSS 	+BQB/1C1CD_1`1`acbcac1deee-bqb193E3Eo3V3VWYXYWY3Z[[[+BQB/1C1CDW1X1XY[Z[Y[1\]]]-bqb193E3EF]3^3^_a`a_a3bccc,RaR0)2D2DEd2e2efhghfh2ijjj-bqb193E3Ek3R3RSUTUSU3VWWWWWr   N)T)	__name__
__module____qualname__rW   r\   r_   rb   rY   ra   rC   r   r?   rL   rL      sz         "  "  "D* * ** * *6 6 6*( ( (X X X X X Xr   rL   )r-   unittest autobahn.websocket.utf8validatorr   r(   _nvx_utf8validatorr   autobahn.nvxr^   HAS_NVXImportErrorr@   rJ   skipIfTestCaserL   rC   r   r?   <module>r{      s  :   S S S S S S&&&&&&>>>>>> GG    GGGA A AH	% 	% 	% WABBkX kX kX kX kX8, kX kX CBkX kX kXs    ))