Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/test/test_sqlite3/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/test/test_sqlite3/__pycache__/test_userfunctions.cpython-312.pyc

�

)Μgv���ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
ddlmZm
Z
mZddlmZd9d�Zej$d��Zd�Zd�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�ZGd�d�ZGd�d�Z Gd�d�Z!Gd�d�Z"Gd�d�Z#Gd�d�Z$Gd�d�Z%Gd �d!�Z&Gd"�d#�Z'Gd$�d%ejP�Z)Gd&�d'�Z*Gd(�d)e+�Z,ejZej\d*kd+�Gd,�d-ejP��Z/Gd.�d/ejP�Z0Gd0�d1ejP�Z1Gd2�d3e1�Z2Gd4�d5e1�Z3Gd6�d7e1�Z4e5d8k(rejl�yy):�N)�Mock�patch)�
bigmemtest�catch_unraisable_exception�
gc_collect)�cx_limitc��������fd�}|S)z6Convenience decorator for testing callback tracebacks.c�~�����rtj��nd�tj������fd��}|S)Nc���t�5}t||����5�|g|��i|��ddd�ddd��|g|��i|��y#1swY�xYw#1swY�"xYw�N)r�check_tracebacks)�self�args�kwargs�cm�_regex�exc�func�names    �����A/usr/local/lib/python3.12/test/test_sqlite3/test_userfunctions.py�wrapperz3with_tracebacks.<locals>.decorator.<locals>.wrapper*s_���+�-��%�d�B��V�T�B���/��/��/�C�.�
��'��'��'�	C�B��.�-�s!�A�
A�A�A	�A�A)�re�compile�	functools�wraps)rrrrr�regexs` @���r�	decoratorz"with_tracebacks.<locals>.decorator(s7���&+����E�"���	����	�	(�
�	(����)rrrrs``` r�with_tracebacksr &s�����rc#�LK�tjd�	tj�}t	j
|�5d��ddd�|j
|jj|�|r?t|jj�}|j|j|��|r0|j
|jjj|�tjd�y#1swY��xYw#tjd�wxYw�w)z<Convenience context manager for testing callback tracebacks.TNF)�sqlite�enable_callback_tracebacks�io�StringIO�
contextlib�redirect_stderr�assertEqual�
unraisable�exc_type�str�	exc_value�assertIsNotNone�search�object�__name__)rrrr�obj_name�buf�msgs       rr
r
7s������%�%�d�+�1��k�k�m��
�
'�
'��
,��-�	
������/�/��5���b�m�m�-�-�.�C�� � ����c�!2�3�����R�]�]�1�1�:�:�H�E��)�)�%�0�-�
,��	�)�)�%�0�s5�D$�)D
�C>�B!D
�(D$�>D�D
�
D!�!D$c��y)N�foorrrr�func_returntextr6J���rc��y)N�12rrrr�func_returntextwithnullr:Ls��rc��y)N�barrrrr�func_returnunicoder=Nr7rc��y�N�*rrrr�func_returnintrAPs��
rc��y)N���Q�	@rrrr�func_returnfloatrDR���rc��yrrrrr�func_returnnullrGTrErc��y)N�blobrrrr�func_returnblobrJVs��rc��y)N�rrrr�func_returnlonglongrMXr7rc��ddzy�N�rrrrr�func_raiseexceptionrQZs	���a�Crc��t�r)�MemoryErrorrrr�func_memoryerrorrT\s��
�rc��t�r)�
OverflowErrorrrr�func_overflowerrorrW^s��
�rc��eZdZd�Zd�Zy)�
AggrNoStepc��yrr�rs r�__init__zAggrNoStep.__init__b���rc��y�N�rr[s r�finalizezAggrNoStep.finalizees��rN)r0�
__module__�__qualname__r\rarrrrYrYas��
�rrYc��eZdZd�Zd�Zy)�AggrNoFinalizec��yrrr[s rr\zAggrNoFinalize.__init__ir]rc��yrr�r�xs  r�stepzAggrNoFinalize.steplr]rN)r0rbrcr\rjrrrrerehs��
�
rrec��eZdZd�Zd�Zd�Zy)�AggrExceptionInInitc��ddzyrOrr[s rr\zAggrExceptionInInit.__init__p�	��	�!�rc��yrrrhs  rrjzAggrExceptionInInit.stepsr]rc��yrrr[s rrazAggrExceptionInInit.finalizevr]rN�r0rbrcr\rjrarrrrlrlos���
�
rrlc��eZdZd�Zd�Zd�Zy)�AggrExceptionInStepc��yrrr[s rr\zAggrExceptionInStep.__init__zr]rc��ddzyrOrrhs  rrjzAggrExceptionInStep.step}rnrc��yr?rr[s rrazAggrExceptionInStep.finalize�s��rNrqrrrrsrsys��
��rrsc��eZdZd�Zd�Zd�Zy)�AggrExceptionInFinalizec��yrrr[s rr\z AggrExceptionInFinalize.__init__�r]rc��yrrrhs  rrjzAggrExceptionInFinalize.step�r]rc��ddzyrOrr[s rraz AggrExceptionInFinalize.finalize�rnrNrqrrrrxrx�s��
�
�rrxc��eZdZd�Zd�Zd�Zy)�
AggrCheckTypec��d|_yr��valr[s rr\zAggrCheckType.__init__�s	����rc��ttttd�td�}t||t|�u�|_y�N)r+�int�float�None�blob�r+r�r��type�bytesr�)r�	whichTyper��theTypes    rrjzAggrCheckType.step�s3���c�E�4��:� �"���w�y�)�T�#�Y�6�7��rc��|jSrrr[s rrazAggrCheckType.finalize�����x�x�rNrqrrrr}r}�s���8�
rr}c��eZdZd�Zd�Zd�Zy)�AggrCheckTypesc��d|_y�Nrrr[s rr\zAggrCheckTypes.__init__�s	����rc	��ttttd�td�}|D].}|xj
t||t|�u�z
c_�0yr�r�)rr��valsr�r�s     rrjzAggrCheckTypes.step�sD���c�E�4��:� �"���C��H�H��G�I�.�$�s�)�;�<�<�H�rc��|jSrrr[s rrazAggrCheckTypes.finalize�r�rNrqrrrr�r��s���=�rr�c��eZdZd�Zd�Zd�Zy)�AggrSumc��d|_y)N�rr[s rr\zAggrSum.__init__�s	����rc�.�|xj|z
c_yrr)rr�s  rrjzAggrSum.step�s�����C��rc��|jSrrr[s rrazAggrSum.finalize�r�rNrqrrrr�r��s����rr�c��eZdZd�Zd�Zd�Zy)�AggrTextc��d|_y)N���txtr[s rr\zAggrText.__init__�s	����rc�,�|j|z|_yrr�)rr�s  rrjz
AggrText.step�s���8�8�c�>��rc��|jSrr�r[s rrazAggrText.finalize�r�rNrqrrrr�r��s���"�rr�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zeed��d��Zeed��d��Zeed��d��Zd�Zd�Zd�Zd�Zd�Zeed��d��Zd�Zd�Z e!jDe#jHd kd!�d"��Z%e!jDe#jHd kd!�d#��Z&e!jDe#jHd k\d$�d%��Z'd&�Z(d'�Z)ee�d(��Z*ee+d)d*�d+��Z,e!jZe.j^d,kDd-�e0d.d/d0�1�d2���Z1e!jZe.j^d,kDd-�e0d.d3d0�1�d4���Z2d5�Z3y6)7�
FunctionTestsc�p�tjd�|_|jjddt�|jjddt
�|jjddt�|jjddt�|jjddt�|jjddt�|jjd	dt�|jjd
dt�|jjddd��|jjd
dd��|jjddt�|jjddt�|jjddt�|jjddd��|jjddd��|jjddd��|jjd�y)N�:memory:�
returntextr�returntextwithnull�
returnunicode�	returnint�returnfloat�
returnnull�
returnblob�returnlonglong�	returnnanc��td�S)N�nan)r�rrr�<lambda>z%FunctionTests.setUp.<locals>.<lambda>�s���u�r�return_noncont_blobc�$�td�ddd�S)NrI�)�
memoryviewrrrr�z%FunctionTests.setUp.<locals>.<lambda>�s���G�)<�S�q�S�)Ar�raiseexception�memoryerror�
overflowerror�isblobr`c�"�t|t�Sr)�
isinstancer��ris rr�z%FunctionTests.setUp.<locals>.<lambda>�s��
�1�e�8Lr�isnonec�
�|duSrrr�s rr�z%FunctionTests.setUp.<locals>.<lambda>�s���T�	r�spam���c��t|�Sr)�lenr�s rr�z%FunctionTests.setUp.<locals>.<lambda>�s���A�rzcreate table test(t text))r"�connect�con�create_functionr6r:r=rArDrGrJrMrQrTrW�executer[s r�setUpzFunctionTests.setUp�s����>�>�*�-������ � ��q�/�B���� � �!5�q�:Q�R���� � ��!�5G�H���� � ��a��@���� � ���3C�D���� � ��q�/�B���� � ��q�/�B���� � �!1�1�6I�J���� � ��a�1E�F���� � �!6��!A�	C���� � �!1�1�6I�J���� � ���3C�D���� � ��!�5G�H���� � ��1�.L�M���� � ��1�.A�B���� � ���->�?������4�5rc�8�|jj�yr)r��closer[s r�tearDownzFunctionTests.tearDown�s�������rc��|jtj�5|jj	ddd��ddd�y#1swYyxYw)N�bla���c��d|zS�Nr�rr�s rr�z9FunctionTests.test_func_error_on_create.<locals>.<lambda>�s��A�a�Cr)�assertRaisesr"�OperationalErrorr�r�r[s r�test_func_error_on_createz'FunctionTests.test_func_error_on_create�s8��
�
�
�v�6�6�
7��H�H�$�$�U�D�-�@�8�
7�
7�s�A�Ac�X�tj}d}t|j|d��5|jj	d�|jtj|�5|jj	d�ddd�ddd�y#1swY�xYw#1swYyxYw)Nztoo many arguments on functionr`)�category�limitzselect abs(-1)zselect max(1, 2))r"�SQLITE_LIMIT_FUNCTION_ARGrr�r��assertRaisesRegexr�)rr�r3s   r�test_func_too_many_argsz%FunctionTests.test_func_too_many_args�s|���3�3��.��
�d�h�h���
;��H�H���-�.��'�'��(?�(?��E���� � �!3�4�F�<�
;�E�E��<�
;�s#�<B �'B�B �B	�B � B)c���d�}|�}|t�d<|jjdd|�|jj�}|j	d�y)Nc��d�}|S)Nc��yr_rrrr�fz=FunctionTests.test_func_ref_count.<locals>.getfunc.<locals>.f�s��rr)r�s r�getfuncz2FunctionTests.test_func_ref_count.<locals>.getfunc�s��
��Hrr5�reftestrzselect reftest())�globalsr�r��cursorr�)rr�r��curs    r�test_func_ref_countz!FunctionTests.test_func_ref_count�sO��	�
�I����	�%����� � ��A�q�1��h�h�o�o������&�'rc���|jj�}|jd�|j�d}|j	t|�t�|j	|d�y)Nzselect returntext()rr5�r�r�r��fetchoner(r�r+�rr�r�s   r�test_func_return_textz#FunctionTests.test_func_return_text�sS���h�h�o�o������)�*��l�l�n�Q�������c��C�(�����e�$rc���|jj�}|jd�j�d}|j	t|�t�|j	|d�y)Nzselect returntextwithnull()rr9r�)rr��ress   r�$test_func_return_text_with_null_charz2FunctionTests.test_func_return_text_with_null_char�sS���h�h�o�o����k�k�7�8�A�A�C�A�F������c��C�(�����h�'rc���|jj�}|jd�|j�d}|j	t|�t�|j	|d�y)Nzselect returnunicode()rr<r�r�s   r�test_func_return_unicodez&FunctionTests.test_func_return_unicode�sS���h�h�o�o������,�-��l�l�n�Q�������c��C�(�����e�$rc���|jj�}|jd�|j�d}|j	t|�t�|j	|d�y)Nzselect returnint()rr@)r�r�r�r�r(r�r�r�s   r�test_func_return_intz"FunctionTests.test_func_return_intsS���h�h�o�o������(�)��l�l�n�Q�������c��C�(�����b�!rc��|jj�}|jd�|j�d}|j	t|�t�|dks|dkDr|jd�yy)Nzselect returnfloat()rg�&1�	@gT㥛� 	@zwrong value)r�r�r�r�r(r�r��failr�s   r�test_func_return_floatz$FunctionTests.test_func_return_floatsa���h�h�o�o������*�+��l�l�n�Q�������c��E�*���;�#��+��I�I�m�$�&rc���|jj�}|jd�|j�d}|j	t|�td��|j	|d�y)Nzselect returnnull()r)r�r�r�r�r(r�r�s   r�test_func_return_nullz#FunctionTests.test_func_return_nullsW���h�h�o�o������)�*��l�l�n�Q�������c��D��J�/�����d�#rc���|jj�}|jd�|j�d}|j	t|�t�|j	|d�y)Nzselect returnblob()rrI)r�r�r�r�r(r�r�r�s   r�test_func_return_blobz#FunctionTests.test_func_return_blobsS���h�h�o�o������)�*��l�l�n�Q�������c��E�*�����g�&rc��|jj�}|jd�|j�d}|j	|d�y)Nzselect returnlonglong()rrL�r�r�r�r�r(r�s   r�test_func_return_long_longz(FunctionTests.test_func_return_long_longs?���h�h�o�o������-�.��l�l�n�Q�������e�$rc��|jj�}|jd�|j|j	�d�y)Nzselect returnnan()r)r�r�r��assertIsNoner��rr�s  r�test_func_return_nanz"FunctionTests.test_func_return_nan#s8���h�h�o�o������(�)����#�,�,�.��+�,rrQ�rc�,�|jj�}|jtj�5}|jd�|j
�ddd�|jtj�d�y#1swY�/xYw)Nzselect raiseexception()�&user-defined function raised exception�
r�r�r�r"r�r�r�r(r+�	exception�rr�rs   r�test_func_exceptionz!FunctionTests.test_func_exception(sh���h�h�o�o���
�
�
�v�6�6�
7�2��K�K�1�2��L�L�N�8�	
����R�\�\�*�,T�U�8�
7�s�"B
�
BrTc���|jj�}|jt�5|j	d�|j�ddd�y#1swYyxYw)Nzselect memoryerror())r�r�r�rSr�r�r�s  r�test_func_memory_errorz$FunctionTests.test_func_memory_error0sB���h�h�o�o���
�
�
�{�
+��K�K�.�/��L�L�N�,�
+�
+�s�"A�A$rWc���|jj�}|jtj�5|jd�|j
�ddd�y#1swYyxYw)Nzselect overflowerror())r�r�r�r"�	DataErrorr�r�r�s  r�test_func_overflow_errorz&FunctionTests.test_func_overflow_error7sH���h�h�o�o���
�
�
�v�/�/�
0��K�K�0�1��L�L�N�1�
0�
0�s�"A%�%A.c��|jj�}|jdd�|j�d}|j	|d�y)Nzselect spam(?, ?))r`r�rr�r�r�s   r�test_any_argumentsz FunctionTests.test_any_arguments>sA���h�h�o�o������'��0��l�l�n�Q�������a� rc�~�|jjd�}|j|j�d�y)Nzselect isblob(x'')r)r�r��
assertTruer�r�s  r�test_empty_blobzFunctionTests.test_empty_blobDs.���h�h���3�4���������q�)�*rc��|jjdtd�f�}|j|j	�d�y)Nzselect isnone(?)r�r)r�r�r�r
r�r�s  r�test_nan_floatzFunctionTests.test_nan_floatHs6���h�h���1�E�%�L�?�C���������q�)�*rc�b�d}|jt||jjdd�y)Nz1Python int too large to convert to SQLite INTEGER�select spam(?))� )r�rVr�r�)r�errs  r�test_too_large_intz FunctionTests.test_too_large_intMs*��A�����}�c�4�8�8�3C�3C�/��	=rc
�~�|jtd|jjdt	d�ddd�f�y)Nz%underlying buffer is not C-contiguousrrIr�)r��BufferErrorr�r�r�r[s r�test_non_contiguous_blobz&FunctionTests.test_non_contiguous_blobRs9�����{�F�#�x�x�/�/�1A� *�7� 3�C�a�C� 8�:�	<rzbuffer.*contiguous)rc���|jtj�5|jj	d�}|j�ddd�y#1swYyxYw)Nzselect return_noncont_blob())r�r"r�r�r�r�r�s  r�test_return_non_contiguous_blobz-FunctionTests.test_return_non_contiguous_blobXs@��
�
�
�v�6�6�
7��(�(�"�"�#A�B�C��L�L�N�8�
7�
7�s�,A�Ac�^�|jtd|jjdd�y)N�surrogates not allowedr)u��)r��UnicodeEncodeErrorr�r�r[s r�test_param_surrogatesz#FunctionTests.test_param_surrogates^s)�����1�3K�#�x�x�/�/�1A�0�	2rc����g��fd�}|jjdd|�dtfdtfdtfdtfdtftd	�tfd
tfdtfdtfd
t
ft
td��t
ftd
�t
fdtd�fg
}|D]2\}}|jjd|f�}|j��4|j|��y)Nc�>���j|t|�f�yr)�appendr�)�arg�resultss �r�
append_resultz5FunctionTests.test_func_params.<locals>.append_resultes����N�N�C��c��+�,r�test_paramsr`r@r�l�{�C	lrC�inf�textr9uˢqˡⁱᵗᵉrIr�zselect test_params(?))
r�r�r�r�r+r��	bytearray�ranger�r�r�r�r()rr$�datasetr��_r�r#s      @r�test_func_paramszFunctionTests.test_func_paramscs������	-���� � ���=�A���I�
��I�
 �#�&�
 �#�&�
�5�M�
�5�\�5�!�
�S�M�
�s�O�
.��4�
�e��
�u�Q�x�
 �%�(�
��
 �%�(�
�4��:��
���F�C���(�(�"�"�#:�S�F�C�C��L�L�N��	
����'�*r)��r-zRequires SQLite 3.8.3 or higherc��td��}|jjdd|d��tjdkr8|jjd�|j
|jd�y|jtj�5|jjd	�ddd�y#1swYyxYw)
N��return_value�nondeterministicrF��
deterministic�r-�rz.select nondeterministic() = nondeterministic()r�z>create index t on test(t) where nondeterministic() is not null)
rr�r�r"�sqlite_version_infor�r(�
call_countr�r��r�mocks  r�test_func_non_deterministicz)FunctionTests.test_func_non_deterministic�s�����&����� � �!3�Q��E� �R��%�%�
�2��H�H���M�N����T�_�_�a�0��"�"�6�#:�#:�;���� � �!a�b�<�;�;�s�B;�;Cc�|�td��}|jjdd|d��tjdkr8|jjd�|j
|jd�y	|jjd	�y#tj$r|jd
�YywxYw)Nr0r4rTr3r5z(select deterministic() = deterministic()r`z;create index t on test(t) where deterministic() is not nullz/Unexpected failure while creating partial index)
rr�r�r"r7r�r(r8r�r�r9s  r�test_func_deterministicz%FunctionTests.test_func_deterministic�s�����&����� � ��!�T�� �N��%�%�
�2��H�H���G�H����T�_�_�a�0�
M���� � �!^�_���*�*�
M��	�	�K�L�
M�s�8B�$B;�:B;zSQLite < 3.8.3 neededc��|jtj�5|jj	ddt
d��ddd�y#1swYyxYw)Nr4rTr3)r�r"�NotSupportedErrorr�r�r�r[s r�%test_func_deterministic_not_supportedz3FunctionTests.test_func_deterministic_not_supported�s=��
�
�
�v�7�7�
8��H�H�$�$�_�a��D�$�Q�9�
8�
8�s�$A
�
Ac��|jt�5|jjddtd�ddd�y#1swYyxYw)Nr4rT)r��	TypeErrorr�r�r�r[s r�$test_func_deterministic_keyword_onlyz2FunctionTests.test_func_deterministic_keyword_only�s4��
�
�
�y�
)��H�H�$�$�_�a��d�C�*�
)�
)�s�#A�Ac��tjd�}d�}|jdd|�|d�}~~|g}|j|�~~t	�y)Nr�c��yrr)�ts r�md5sumz=FunctionTests.test_function_destructor_via_gc.<locals>.md5sum�s��r�md5r`z(create table lang (name, first_appeared))r"r�r�r!r)r�destrGri�ys     r�test_function_destructor_via_gcz-FunctionTests.test_function_destructor_via_gc�sW���~�~�j�)��	�	
���U�A�v�.��;�<���D�
�C��	�����
�a��rc��|jj�}d}dD]\}|jjdd|fd��|jtj
|�5|j
d�ddd��^y#1swY�ixYw)N�string or blob too big)ll����l�largeintrc��|Srr)�values rr�z>FunctionTests.test_func_return_too_large_int.<locals>.<lambda>�s��rzselect largeint())r�r�r�r�r"rr�)rr�r3rPs    r�test_func_return_too_large_intz,FunctionTests.test_func_return_too_large_int�sl���h�h�o�o���&��+�E��H�H�$�$�Z���4M�N��'�'��(8�(8�#�>����/�0�?�>�,�>�>�s�"A?�?B	r�chrc��|jj�}|jjddt�dD]=}|j	t
j�5|jd|f�ddd��?y#1swY�JxYw)N�pychrr`)i��i��zselect pychr(?))r�r�r�rRr�r"r�r�)rr�rPs   r�%test_func_return_text_with_surrogatesz3FunctionTests.test_func_return_text_with_surrogates�sf���h�h�o�o������ � ��!�S�1�#�E��"�"�6�#:�#:�;����-��x�8�<�;�$�;�;�s� A?�?B	�zrequires 64bit platformrLr-F)�size�memuse�dry_runc��|jj�}dD][}|jjdd|fd��|jtj
�5|j
d�ddd��]y#1swY�hxYw)N�i���rL�	largetextrc��d|zS)N�br�rWs rr�z?FunctionTests.test_func_return_too_large_text.<locals>.<lambda>�s��s�T�zrzselect largetext()�r�r�r�r�r"rr��rrWr�s   r�test_func_return_too_large_textz-FunctionTests.test_func_return_too_large_text�sg���h�h�o�o���"�D��H�H�$�$�[�!��5Q�R��"�"�6�#3�#3�4����0�1�5�4�#�4�4���A<�<B	r�c��|jj�}dD][}|jjdd|fd��|jtj
�5|j
d�ddd��]y#1swY�hxYw)Nr[�	largeblobrc��d|zS)N�brr_s rr�z?FunctionTests.test_func_return_too_large_blob.<locals>.<lambda>�s��t�d�{rzselect largeblob()r`ras   r�test_func_return_too_large_blobz-FunctionTests.test_func_return_too_large_blob�sg���h�h�o�o���"�D��H�H�$�$�[�!��5R�S��"�"�6�#3�#3�4����0�1�5�4�#�4�4�rcc����jjdd�fd��d}�jtj|�jj
d�y)N�	badreturnrc����Srrr[s�rr�z>FunctionTests.test_func_return_illegal_value.<locals>.<lambda>�s���rrzselect badreturn())r�r�r�r"r�r�)rr3s` r�test_func_return_illegal_valuez,FunctionTests.test_func_return_illegal_value�sG������ � ��a��>�6�����v�6�6��#�x�x�/�/�1E�	GrN)4r0rbrcr�r�r�r�r�r�r�r�r�r�r�r�r�r�r �ZeroDivisionErrorrrSrrVr	rrrrrrrrr,�unittest�skipIfr"r7r;r=r@rCrKrQrrU�
skipUnless�sys�maxsizerrbrhrlrrrr�r��s9��6�.�A�6�
(�%�(�%�"�%�$�'�%�-�
�&�-B�C�V�D�V��[�'9�:��;���]�)=�>��?��!�+�+�
=�
<��[�(<�=��>��
2�
+�B�X�_�_�V�/�/�)�;�=^�_�c�`�c��X�_�_�V�/�/�)�;�=^�_�
M�`�
M��X�_�_�V�/�/�9�<�>U�V�R�W�R�D��"�]�#�1�$�1��'�)A�5�I�9�J�9��X������u�,�.G�H��U�1�e�4�2�5�I�2��X������u�,�.G�H��U�1�e�4�2�5�I�2�Grr�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�WindowSumIntc��d|_yr���countr[s rr\zWindowSumInt.__init__�s	����
rc�.�|xj|z
c_yrrv�rrPs  rrjzWindowSumInt.step�����
�
�e��
rc��|jSrrvr[s rrPzWindowSumInt.value�����z�z�rc�.�|xj|zc_yrrvrys  r�inversezWindowSumInt.inverse�rzrc��|jSrrvr[s rrazWindowSumInt.finalize�r|rN)r0rbrcr\rjrPr~rarrrrtrt�s������rrtc��eZdZy)�	BadWindowN)r0rbrcrrrr�r��s��rr�)r-�rzRequires SQLite 3.25.0 or newerc��eZdZd�Zd�Zd�Zee�d��Zee�d��Z	ee
�d��Zee
�d��Zd�Z
d	�Zd
�Zy)�WindowFunctionTestsc��tjd�|_|jj�|_gd�}|j5|jjd�|jj
d|�ddd�gd�|_d|_|jjddt�y#1swY�;xYw)	Nr�))�a�)r^rP)�cr-)�dr.)�er`zcreate table test(x, y)zinsert into test values(?, ?)))r��	)r^�)r��)r�r�)r�r�z�
            select x, %s(y) over (
                order by x rows between 1 preceding and 1 following
            ) as sum_y
            from test order by x
        �sumintr`)r"r�r�r�r�r��executemany�expected�query�create_window_functionrt)r�valuess  rr�zWindowFunctionTests.setUp�s����>�>�*�-����8�8�?�?�$���
���X�X��H�H���6�7��H�H� � �!@�&�I��
��
���
�	
���'�'��!�\�B�!�X�s�
8B<�<Cc��|jj|jdz�|j|jj	�|j
�y)Nr�)r�r�r�r(�fetchallr�r[s r�test_win_sum_intz$WindowFunctionTests.test_win_sum_ints>����������h�.�/�������*�*�,�d�m�m�<rc�z�|jtj|jjddt
�y)N�
shouldfailr�)r�r"�ProgrammingErrorr�r�rtr[s r�test_win_error_on_createz,WindowFunctionTests.test_win_error_on_creates,�����&�1�1��(�(�9�9�&��l�	<rc	��dD]�}|j|��5tjt|t��5d|��}|j
j
|dt�d|�d�}|jtj|�5|jj|j|z�|jj�ddd�ddd�ddd���y#1swY�xYw#1swY� xYw#1swY��xYw)N)r\rjrPr~)�meth��side_effect�exc_r`�'z' method raised error)�subTestrr/rtr�r�r�r�r"r�r�r�r�r�)rr�rr3s    r�test_win_exception_in_methodz0WindowFunctionTests.test_win_exception_in_methods���:�D����4��(��\�\�,��)�L�!�$��=�D��H�H�3�3�D�!�\�J��d�V�#8�9�C��/�/��0G�0G��M����(�(����d�):�;����)�)�+�N�	M�)�(�;�N�M��	M�L��)�(�s<�!C<�A
C0�AC$	�	C0�C<�$C-
�)C0�0C9�5C<�<D	c�8�tjtdt��5d}|jj|dt�|jj|j|z�|jj�ddd�y#1swYyxYw)Nrar��exception_in_finalizer`)
rr/rtr�r�r�r�r�r�r�)rrs  r�test_win_exception_in_finalizez2WindowFunctionTests.test_win_exception_in_finalize*sg��
�\�\�,�
�	�
J�*�D��H�H�+�+�D�!�\�B��H�H���T�Z�Z�$�.�/��H�H����	K�
J�
J�s�A&B�Bc���Gd�d�}Gd�d�}Gd�d�}d|fd|fd	|ff}|D]�\}}|j||�
�5d|��}|jj|d|�|jtj
d
|�d��5|jj|j|z�|jj�ddd�ddd���y#1swY�xYw#1swY��xYw)Nc��eZdZd�Zd�Zd�Zy)�AWindowFunctionTests.test_win_missing_method.<locals>.MissingValuec��yrrrhs  rrjzFWindowFunctionTests.test_win_missing_method.<locals>.MissingValue.step8���trc��yrrrhs  rr~zIWindowFunctionTests.test_win_missing_method.<locals>.MissingValue.inverse9���$rc��yr?rr[s rrazJWindowFunctionTests.test_win_missing_method.<locals>.MissingValue.finalize:���rrN)r0rbrcrjr~rarrr�MissingValuer�7���#�&�)rr�c��eZdZd�Zd�Zd�Zy)�CWindowFunctionTests.test_win_missing_method.<locals>.MissingInversec��yrrrhs  rrjzHWindowFunctionTests.test_win_missing_method.<locals>.MissingInverse.step=r�rc��yr?rr[s rrPzIWindowFunctionTests.test_win_missing_method.<locals>.MissingInverse.value>���Brc��yr?rr[s rrazLWindowFunctionTests.test_win_missing_method.<locals>.MissingInverse.finalize?r�rN)r0rbrcrjrPrarrr�MissingInverser�<r�rr�c��eZdZd�Zd�Zd�Zy)�@WindowFunctionTests.test_win_missing_method.<locals>.MissingStepc��yr?rr[s rrPzFWindowFunctionTests.test_win_missing_method.<locals>.MissingStep.valueBr�rc��yrrrhs  rr~zHWindowFunctionTests.test_win_missing_method.<locals>.MissingStep.inverseCr�rc��yr?rr[s rrazIWindowFunctionTests.test_win_missing_method.<locals>.MissingStep.finalizeDr�rN)r0rbrcrPr~rarrr�MissingStepr�As��&�&�)rr�rjrPr~)r��clsr�r`r�z' method not defined)
r�r�r�r�r"r�r�r�r�r�)rr�r�r�r*r�r�rs        r�test_win_missing_methodz+WindowFunctionTests.test_win_missing_method5s���	*�	*�
	*�	*�
	*�	*��[�!�
�l�#�
��'�
��
!�I�D�#����4�S��1��d�V�}�����/�/��a��=��+�+�F�,C�,C�./��v�5I�,J�L��H�H�$�$�T�Z�Z�$�%6�7��H�H�%�%�'�L�2�1�!�L�L��2�1�s&�AC.�AC"�C.�"C+�'C.�.C7	c���Gd�d�}d}|jj|d|�|jj|j|z�|jj�y)Nc��eZdZd�Zd�Zd�Zy)�FWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalizec��yrrrhs  rrjzKWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalize.stepZr�rc��yr?rr[s rrPzLWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalize.value[r�rc��yrrrhs  rr~zNWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalize.inverse\r�rN)r0rbrcrjrPr~rrr�MissingFinalizer�Ys��#�&�&rr��missing_finalizer`)r�r�r�r�r�r�)rr�rs   r�test_win_missing_finalizez-WindowFunctionTests.test_win_missing_finalizeTsT��
	'�	'�
"�����'�'��a��A���������d�*�+������rc���|jjddd�|jtj|j
j|jdz�y)Nr�r`)r�r�r�r"r�r�r�r�r[s r�test_win_clear_functionz+WindowFunctionTests.test_win_clear_functioncsF�����'�'��!�T�:����&�1�1�4�8�8�3C�3C��*�*�x�/�	1rc�R�Gd�dt�}|jD�cgc]}|d|ddzf��}}|jjdd|�|jj|jdz�|j|jj�|�ycc}w)Nc��eZdZd�Zd�Zy)�AWindowFunctionTests.test_win_redefine_function.<locals>.Redefinedc�4�|xj|dzz
c_yr�rvrys  rrjzFWindowFunctionTests.test_win_redefine_function.<locals>.Redefined.stepks��4�:�:����#:�:rc�4�|xj|dzzc_yr�rvrys  rr~zIWindowFunctionTests.test_win_redefine_function.<locals>.Redefined.inversels��d�j�j�E�A�I�&=�jrN)r0rbrcrjr~rrr�	Redefinedr�js��:�=rr�rr`r�r�)	rtr�r�r�r�r�r�r(r�)rr��vr�s    r�test_win_redefine_functionz.WindowFunctionTests.test_win_redefine_functionhs���	>��	>�-1�M�M�:�M�q�Q�q�T�1�Q�4��6�N�M��:����'�'��!�Y�?���������h�.�/�������*�*�,�h�7��	;s�B$c���Gd�d�}|jjdd|�|jtjd|j
j|jdz�y)Nc��eZdZd�Zd�Zd�Zy)�IWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturnc��yrrr[s rr\zRWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturn.__init__us��rc��yrrrhs  rrjzNWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturn.stepvr�rc��y)Nrrr[s rrPzOWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturn.valuews��GrN)r0rbrcr\rjrPrrr�ErrorValueReturnr�ts��$�#�+rr��err_val_retr`rM)r�r�r�r"rr�r�r�)rr�s  r�test_win_error_value_returnz/WindowFunctionTests.test_win_error_value_returnssW��	,�	,�
	
���'�'�
�q�:J�K����v�/�/�1I�#�x�x�/�/����m�1K�	MrN)r0rbrcr�r�r�r r�r�r��AttributeErrorr�r�r�r�r�rrrr�r��s���C�<=�<�
�Y��	,� �	,��Y�� � � ��^�$�(�%�(�<�^�$��%��1�
	8�Mrr�c���eZdZd�Zd�Zd�Zeed��d��Zd�Z	ee
d��d	��Zee
d
��d��Zee
d��d
��Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�AggregateTestsc
� �tjd�|_|jj�}|j	d�|j	dddddtd�f�|jj
dd	t�|jj
d
d	t�|jj
dd	t�|jj
dd	t�|jj
d
d	t�|jj
ddt�|jj
ddt�|jj
dd	t�|jj
dd	t�y)Nr�z�
            create table test(
                t text,
                i integer,
                f float,
                n,
                b blob
                )
            z6insert into test(t, i, f, n, b) values (?, ?, ?, ?, ?)r5rPrCrI�nostepr`�
nofinalize�excInit�excStep�excFinalize�	checkTyper��
checkTypesr��mysum�aggtxt)r"r�r�r�r�r��create_aggregaterYrerlrsrxr}r�r�r�r�s  rr�zAggregateTests.setUps"���>�>�*�-����h�h�o�o�������	�	���L�
�A�t�T�:�g�#6�8�	:�	
���!�!�(�A�z�:����!�!�,��>�B����!�!�)�Q�0C�D����!�!�)�Q�0C�D����!�!�-��4K�L����!�!�+�q�-�@����!�!�,��N�C����!�!�'�1�g�6����!�!�(�A�x�8rc��yrrr[s rr�zAggregateTests.tearDown�s��	
rc��|jtj�5|jj	ddt
�ddd�y#1swYyxYw)Nr�r�)r�r"r�r�r�r�r[s r�test_aggr_error_on_createz(AggregateTests.test_aggr_error_on_create�s8��
�
�
�v�6�6�
7��H�H�$�$�U�D�'�:�8�
7�
7�s�"A�ArYr�c��|jj�}|jtj�5}|jd�ddd�|j
tj�d�y#1swY�/xYw)Nzselect nostep(t) from testz2user-defined aggregate's 'step' method not defined)	r�r�r�r"r�r�r(r+rrs   r�test_aggr_no_stepz AggregateTests.test_aggr_no_step�s`���h�h�o�o���
�
�
�v�6�6�
7�2��K�K�4�5�8�����R�\�\�*�M�	O�8�
7�s�A:�:Bc���|jj�}d}|jtj|�5|jd�|j
�d}ddd�y#1swYyxYw)Nz6user-defined aggregate's 'finalize' method not definedzselect nofinalize(t) from testr)r�r�r�r"r�r�r�)rr�r3r�s    r�test_aggr_no_finalizez$AggregateTests.test_aggr_no_finalize�sW���h�h�o�o���F��
�
#�
#�F�$;�$;�S�
A��K�K�8�9��,�,�.��#�C�B�
A�
A�s�%A+�+A4rlc�2�|jj�}|jtj�5}|jd�|j
�d}ddd�|jtj�d�y#1swY�/xYw)Nzselect excInit(t) from testrz7user-defined aggregate's '__init__' method raised errorr�rr�rr�s    r�test_aggr_exception_in_initz*AggregateTests.test_aggr_exception_in_init�so���h�h�o�o���
�
�
�v�6�6�
7�2��K�K�5�6��,�,�.��#�C�8�	
����R�\�\�*�,e�f�8�
7���%B
�
Brsc�2�|jj�}|jtj�5}|jd�|j
�d}ddd�|jtj�d�y#1swY�/xYw)Nzselect excStep(t) from testrz3user-defined aggregate's 'step' method raised errorrr�s    r�test_aggr_exception_in_stepz*AggregateTests.test_aggr_exception_in_step�so���h�h�o�o���
�
�
�v�6�6�
7�2��K�K�5�6��,�,�.��#�C�8�	
����R�\�\�*�,a�b�8�
7�r�rxc�2�|jj�}|jtj�5}|jd�|j
�d}ddd�|jtj�d�y#1swY�/xYw)Nzselect excFinalize(t) from testrz7user-defined aggregate's 'finalize' method raised errorrr�s    r�test_aggr_exception_in_finalizez.AggregateTests.test_aggr_exception_in_finalize�so���h�h�o�o���
�
�
�v�6�6�
7�2��K�K�9�:��,�,�.��#�C�8�	
����R�\�\�*�,e�f�8�
7�r�c��|jj�}|jddt�f�|j	�d}|j|d�y)Nzselect checkTypes('str', ?, ?)r5rr�)r�r�r�r+r�r(r�s   r�test_aggr_check_param_strz(AggregateTests.test_aggr_check_param_str�sG���h�h�o�o������4�u�c�e�n�E��l�l�n�Q�������a� rc��|jj�}|jdd�|j�d}|j	|d�y)Nzselect checkType('int', ?))r@rr`r�r�s   r�test_aggr_check_param_intz(AggregateTests.test_aggr_check_param_int�sA���h�h�o�o������0�%�8��l�l�n�Q�������a� rc��|jj�}|jdd�|j�d}|j	|d�y)Nzselect checkTypes('int', ?, ?))r@�rr�r�r�s   r�test_aggr_check_params_intz)AggregateTests.test_aggr_check_params_int�sA���h�h�o�o������4�h�?��l�l�n�Q�������a� rc��|jj�}|jdd�|j�d}|j	|d�y)Nzselect checkType('float', ?))rCrr`r�r�s   r�test_aggr_check_param_floatz*AggregateTests.test_aggr_check_param_float�sA���h�h�o�o������2�G�<��l�l�n�Q�������a� rc��|jj�}|jdd�|j�d}|j	|d�y)Nzselect checkType('None', ?)rrr`r�r�s   r�test_aggr_check_param_nonez)AggregateTests.test_aggr_check_param_none�sA���h�h�o�o������1�7�;��l�l�n�Q�������a� rc��|jj�}|jdtd�f�|j	�d}|j|d�y)Nzselect checkType('blob', ?)rIrr`)r�r�r�r�r�r(r�s   r�test_aggr_check_param_blobz)AggregateTests.test_aggr_check_param_blob�sI���h�h�o�o������1�J�w�4G�3I�J��l�l�n�Q�������a� rc���|jj�}|jd�|jdgd��|jd�|j	�d}|j|d�y)Nzdelete from testzinsert into test(i) values (?)))�
)�)�zselect mysum(i) from testr�<)r�r�r�r�r�r(r�s   r�test_aggr_check_aggr_sumz'AggregateTests.test_aggr_check_aggr_sum�s\���h�h�o�o������&�'����8�:O�P����/�0��l�l�n�Q�������b�!rc��|jjd�}|j�d}|j|�y)Nz1select mysum(i) from (select 1 as i) where i == 0r)r�r�r�r�r�s   r�test_aggr_no_matchz!AggregateTests.test_aggr_no_match�s5���h�h���R�S���l�l�n�Q������#�rc��|jj�}dD]U}|j|��5|jd|f�|j	�d}|j||�ddd��Wy#1swY�bxYw)N)r5r9r�zselect aggtxt(?) from testr)r�r�r�r�r�r()rr�r�r�s    r�test_aggr_textzAggregateTests.test_aggr_text�sj���h�h�o�o���$�C����#��&����8�3�&�A��l�l�n�Q�'��� � ��c�*�'�&�%�&�&�s�9A6�6A?	N)r0rbrcr�r�r�r r�r�r�rmr�r�r�r�r�r�rrrrr
rrrrr�r�~s���9�2
�
;��^�,�7�O�8�O�$��&�-B�C�g�D�g��&�-B�C�c�D�c��&�-F�G�g�H�g�!�!�!�!�!�!�"��
+rr�c�:�eZdZed��Zd�Zd�Zd�Zd�Zd�Z	y)�AuthorizerTestsc��|tjk7rtjS|dk(s|dk(rtjStjS�N�c2�t2)r"�
SQLITE_SELECT�SQLITE_DENY�	SQLITE_OK��action�arg1�arg2�dbname�sources     r�
authorizer_cbzAuthorizerTests.authorizer_cbsA���V�)�)�)��%�%�%��4�<�4�4�<��%�%�%����rc���tjd�|_|jjd�|jj	d�|jj|j�y)Nr�z�
            create table t1 (c1, c2);
            create table t2 (c1, c2);
            insert into t1 (c1, c2) values (1, 2);
            insert into t2 (c1, c2) values (4, 5);
            zselect c2 from t2)r"r�r��
executescriptr��set_authorizerrr[s rr�zAuthorizerTests.setUpsV���>�>�*�-�������� �	�	
�����,�-������� 2� 2�3rc��yrrr[s rr�zAuthorizerTests.tearDownr]rc���|jtj�5}|jj	d�ddd�|jdt
j��y#1swY�/xYw)N�select * from t2�
prohibited�r�r"�
DatabaseErrorr�r��assertInr+r�rrs  r�test_table_accessz!AuthorizerTests.test_table_accesssP��
�
�
�v�3�3�
4���H�H���/�0�5��
�
�l�C����$5�6�5�
4���A*�*A3c���|jtj�5}|jj	d�ddd�|jdt
j��y#1swY�/xYw)N�select c2 from t1r&r'r*s  r�test_column_accessz"AuthorizerTests.test_column_access!sP��
�
�
�v�3�3�
4���H�H���0�1�5��
�
�l�C����$5�6�5�
4�r,c��|jjd�|jjd�|jjd�y)Nr%r.)r�r"r�r[s r�test_clear_authorizerz%AuthorizerTests.test_clear_authorizer&s:��������%������+�,������,�-rN)
r0rbrc�staticmethodrr�r�r+r/r1rrrrrs-��� �� �4�
�7�
7�
.rrc�l��eZdZed��Zeed���fd��Zeed���fd��Z�xZ	S)�AuthorizerRaiseExceptionTestsc�t�|tjk7rt�|dk(s|dk(rt�tjSr)r"r�
ValueErrorrrs     rrz+AuthorizerRaiseExceptionTests.authorizer_cb-s5���V�)�)�)����4�<�4�4�<������rrr�c�"��t�|��yr��superr+�r�	__class__s �rr+z/AuthorizerRaiseExceptionTests.test_table_access5����
��!�#rc�"��t�|��yrr8r:s �rr/z0AuthorizerRaiseExceptionTests.test_column_access9r<r)
r0rbrcr2rr r6r+r/�
__classcell__)r;s@rr4r4,sK���� �� ��Z�o�6�$�7�$��Z�o�6�$�7�$rr4c��eZdZed��Zy)�AuthorizerIllegalTypeTestsc�`�|tjk7ry|dk(s|dk(rytjS)Nr�rr�r"rrrs     rrz(AuthorizerIllegalTypeTests.authorizer_cb>s/���V�)�)�)���4�<�4�4�<�����rN�r0rbrcr2rrrrr@r@=���� �� rr@c��eZdZed��Zy)�AuthorizerLargeIntegerTestsc�`�|tjk7ry|dk(s|dk(rytjS)NrVrrrBrs     rrz)AuthorizerLargeIntegerTests.authorizer_cbGs/���V�)�)�)���4�<�4�4�<�����rNrCrrrrFrFFrDrrF�__main__)r�r�)7r&rr$rrqrn�sqlite3r"�
unittest.mockrr�test.supportrrr�test.test_sqlite3.test_dbapirr �contextmanagerr
r6r:r=rArDrGrJrMrQrTrWrYrerlrsrxr}r�r�r��TestCaser�rt�	Exceptionr�ror7r�r�rr4r@rFr0�mainrrr�<module>rQs���0��	�	�
���%�K�K�1��"���1��1�$�������������
�
�
�
�����
�
�������dG�H�%�%�dG�N	�� 	�	�	������+�+�j�8�2�4�EM�(�+�+�EM�4�EM�PA+�X�&�&�A+�H'.�h�'�'�'.�T$�O�$�" �� � �/� ��z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists