
    h7                         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	d Zd Z ej                  e	 d       G d	 d
ej                               Zy# e
$ r dZ	Y <w xY w)    N)Utf8Validator)libTFc                     g } d}dg g}|d   j                  d       |d   j                  d       |d   j                  d       |d   j                  d       |d   j                  d|f       | j                  |       d	g g}t               }t        dt        |      dz         D ]I  }|j	                          |j                  |d
|       }|d   j                  |d   xr |d   |d
| f       K | j                  |       dg g}|d   j                  d       |d   j                  d       |d   j                  d       |d   j                  d       | j                  |       dg g}|d   j                  d       |d   j                  d       | j                  |       dg g}|d   j                  d       |d   j                  d       |d   j                  d       |d   j                  d       | j                  |       dg g}|d   j                  d       |d   j                  d       |d   j                  d       | j                  |       dg g}|d   j                  d       |d   j                  d       |d   j                  d        |d   j                  d       |d   j                  d!       | j                  |       d"g g}|d   j                  d#       |d   j                  d$       |d   j                  d%       |d   j                  d&       |d   j                  d'       |d   j                  d(       |d   j                  d)       d*}d+g g}g d,}|D ]K  }d*}t        |d   |d         D ]  }|t        j                  d-|d.      z  } |d   j                  d/|f       M | j                  |       d0g g}g d1}	|	D ]  }
|d   j                  d/|
f        | j                  |       d2g g}|d   j                  d/d*j                  |	      f       | j                  |       d3g g}|d   j                  d4       |d   j                  d5       |d   j                  d6       | j                  |       d7g g}|d   j                  d8       |d   j                  d9       |d   j                  d:       |d   j                  d;       |d   j                  d<       | j                  |       d=g g}|d   j                  d>       |d   j                  d?       |d   j                  d@       |d   j                  dA       |d   j                  dB       | j                  |       dCg g}|d   j                  dD       |d   j                  dE       |d   j                  dF       |d   j                  dG       |d   j                  dH       | j                  |       dIg g}|d   j                  dJ       |d   j                  dK       |d   j                  dL       |d   j                  dM       |d   j                  dN       |d   j                  dO       |d   j                  dP       | j                  |       dQg g}|d   j                  dR       |d   j                  dS       |d   j                  dT       |d   j                  dU       |d   j                  dV       |d   j                  dW       |d   j                  dX       |d   j                  dY       | j                  |       dZg g}|d   j                  d[       |d   j                  d       d\D ]A  }d]D ]:  }|d^k(  r|d_k7  rd`D ](  }||z   daz   |z   }|dbvs|d   j                  d|f       * < C | j                  |       dcg g}|d   j                  dd       |d   j                  de       |d   j                  df       |d   j                  dg       |d   j                  d        |d   j                  d[       |d   j                  d       | j                  |       | 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                  d/var/www/Befach/backend/env/lib/python3.12/site-packages/autobahn/nvx/test/test_nvx_utf8validator.py_create_utf8_test_sequencesr@   +   s5     :C
'	,BqELL*+qELL./qELL23qELL67qELL$r" 	U

B 	A1c#hl#		jjRa!
1c!f'QRa12 $ r" 9"	=BqELL!qELL$%qELL()qELL,-r" Eb	IBqELL12qELL56r" 8	<BqELL!qELL$%qELL()qELL,-r" Fr	JBqELL-.qELL12qELL56r" '	+BqELL()qELL()qELL()qELL,-qELL-.r" +B	/BqELL!"qELL!"qELL%&qELL)*qELL-.qELL12qELL56A %b	)BNAr!ube$AT1d++A % 	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qELL56r" (	,BqELL%&qELL)*qELL-.qELL12qELL56r" :2	>BqELL%&qELL)*qELL-.qELL12qELL56r" &r	*BqELL)*qELL)*qELL)*qELL)*qELL)*qELL)*qELL)*r" &r	*BqELL56qELL56qELL56qELL56qELL56qELL56qELL56qELL56r" 5b	9B qELL()qELL();6B'MbGm,Bb7*R/B "7 71dBZ0	 - 7 < r" 6r	:BqELL()qELL()qELL()qELL()qELL()qELL()qELL()r"r   c                      g } t               D ]B  }|d   D cg c]  }|d   s	|d    }}t        |      dkD  s-| j                  |d   |g       D | S c c}w )z<
    Generate some exotic, but valid UTF8 test strings.
    r   r   )r@   r*   r'   )VALID_UTF8_TEST_SEQUENCEStestxvalidss       r?   !_create_valid_utf8_test_sequencesrF      sg     !#+- $Q011Q4!A$00v;?%,,d1gv->? . %$ 1s
   
AAz!NVX native extensions not presentc                   2    e Zd Zd Zd Zd Zd Zd ZddZy)	TestNvxUtf8Validatorc                     g }t               D ]  }|j                  |d           t        dd      D ]8  }|dk  s|dkD  s|j                  dt	        |      j                  d      f       : 	 || _        y )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   su     ,.AIIadO / 6A6zQZ		4Qw!789 "  "r   c                 8    t               }| j                  |      S )zA
        Test standard implementation of UTF8 validator.
        )r(   
_test_utf8rN   	validators     r?   test_standard_utf8validatorz0TestNvxUtf8Validator.test_standard_utf8validator   s     *+	y))r   c                 8    t               }| j                  |      S )z<
        Test NVX implementation of UTF8 validator.
        )NvxUtf8ValidatorrU   rV   s     r?   test_nvx_utf8validatorz+TestNvxUtf8Validator.test_nvx_utf8validator'  s     %&	y))r   c                 8    t               }| j                  |      S )zU
        Test standard implementation of UTF8 validator in incremental mode.
        )r(   _test_utf8_incrementalrV   s     r?   'test_standard_utf8validator_incrementalz<TestNvxUtf8Validator.test_standard_utf8validator_incremental.  s     *+	**955r   c                     | j                   D ]G  }|j                          |j                  |d         }|d   xr |d   }| j                  ||d          I y )Nr   r   )rM   r+   r,   assertEqual)rN   rW   r6   rr5   s        r?   rU   zTestNvxUtf8Validator._test_utf8C  sW    %%AOO""1Q4(A A$-1Q4CS!A$' &r   c                 @   |rd}nd}|j                          | j                  dd | |j                  dj                  d            d |        |j                          | j                  dd | |j                  d      d |        |j                          | j                  dd | |j                  d	      d |        | j                  d
d | |j                  d      d |        |j                          | j                  dd | |j                  d      d |        | j                  dd | |j                  d      d |        |j                          | j                  dd | |j                  d      d |        | j                  dd | |j                  d      d |        y )N      )TT   re   u   µ@ßöäüàáutf8)FFr   r      )TT   rh   s   edited)FFr      r   )TTrc   rc   s   edit)FF   ri   s   ed)TFri   ri   s   edited)FFr   ri   s   )r+   r`   r,   rL   )rN   rW   withPositionsr9   s       r?   r]   z+TestNvxUtf8Validator._test_utf8_incrementalM  s   A A-bq193E3EFWF^F^_eFf3ghjij3kl-bq193E3Eg3NrPQ3RS 	+BQ/1C1CD_1`acbc1de-bq193E3Eo3VWYXY3Z[+BQ/1C1CDW1XY[Z[1\]-bq193E3EF]3^_a`a3bc,Ra0)2D2DEd2efhgh2ij-bq193E3Ek3RSUTU3VWr   N)T)	__name__
__module____qualname__rS   rX   r[   r^   rU   r]    r   r?   rH   rH      s"     "D**6*(Xr   rH   )r-   unittest autobahn.websocket.utf8validatorr   r(   _nvx_utf8validatorr   autobahn.nvxrZ   HAS_NVXImportErrorr@   rF   skipIfTestCaserH   ro   r   r?   <module>rx      s}   :   S&> GAH	% WABkX8,, kX CkXo  Gs   A AA