
    <ev                     R   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZmZ d dlmZ d:dZe j        d             Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z G d d          Z G d d          Z  G d d          Z! G d d          Z" G d d          Z# G d d          Z$ G d d           Z% G d! d"          Z& G d# d$          Z' G d% d&ej(                  Z) G d' d(          Z* G d) d*e+          Z, ej-        ej.        d+k     d,           G d- d.ej(                              Z/ G d/ d0ej(                  Z0 G d1 d2ej(                  Z1 G d3 d4e1          Z2 G d5 d6e1          Z3 G d7 d8e1          Z4e5d9k    r ej6                     dS dS );    N)Mockpatch)
bigmemtestcatch_unraisable_exception
gc_collect)cx_limit c                       fd}|S )z6Convenience decorator for testing callback tracebacks.c                      rt          j                  nd t          j                    fd            }|S )Nc                     t                      5 }t          | |          5   | g|R i | d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    | g|R i | d S N)r   check_tracebacks)selfargskwargscm_regexexcfuncnames       ;/usr/lib/python3.11/test/test_sqlite3/test_userfunctions.pywrapperz3with_tracebacks.<locals>.decorator.<locals>.wrapper*   s   +-- 0%dBVTBB 0 0D///////0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D'''''''''s1   A=AA	AA	AAA)recompile	functoolswraps)r   r   r   r   r   regexs   ` @r   	decoratorz"with_tracebacks.<locals>.decorator(   sb    &+5E"""				( 	( 	( 	( 	( 	( 	( 
		(      )r   r   r   r   s   ``` r   with_tracebacksr!   &   s0           r   c              #   (  K   t          j        d           	 t          j                    }t	          j        |          5  dV  ddd           n# 1 swxY w Y   |                     |j        j        |           |rAt          |j        j
                  }|                     |                    |                     |r%|                     |j        j        j        |           t          j        d           dS # t          j        d           w xY 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__)r   r   r   r   obj_namebufmsgs          r   r   r   7   sD      %d+++1kmm',, 	 	EEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	/555 	4bm-..C  c!2!2333 	FR]1:HEEE)%00000)%0000s/   'C; AC; AC; ABC; ;Dc                      dS )Nfoor    r    r   r   func_returntextr7   J       5r   c                      dS )N1 2r    r    r   r   func_returntextwithnullr;   L   s    8r   c                      dS )Nbarr    r    r   r   func_returnunicoder>   N   r8   r   c                      dS N*   r    r    r   r   func_returnintrB   P   s    2r   c                      dS )NQ	@r    r    r   r   func_returnfloatrE   R       4r   c                      d S r   r    r    r   r   func_returnnullrH   T   rF   r   c                      dS )N   blobr    r    r   r   func_returnblobrK   V   s    7r   c                      dS )N        r    r    r   r   func_returnlonglongrN   X   r8   r   c                      ddz   d S N   r   r    r    r   r   func_raiseexceptionrR   Z   s    aCCCCr   c                      t           r   )MemoryErrorr    r   r   func_memoryerrorrU   \   s    
r   c                      t           r   )OverflowErrorr    r   r   func_overflowerrorrX   ^   s    
r   c                       e Zd Zd Zd ZdS )
AggrNoStepc                     d S r   r    r   s    r   __init__zAggrNoStep.__init__b       r   c                     dS N   r    r\   s    r   finalizezAggrNoStep.finalizee   s    qr   N)r1   
__module____qualname__r]   rb   r    r   r   rZ   rZ   a   s2              r   rZ   c                       e Zd Zd Zd ZdS )AggrNoFinalizec                     d S r   r    r\   s    r   r]   zAggrNoFinalize.__init__i   r^   r   c                     d S r   r    r   xs     r   stepzAggrNoFinalize.stepl   r^   r   N)r1   rc   rd   r]   rk   r    r   r   rf   rf   h   s2              r   rf   c                        e Zd Zd Zd Zd ZdS )AggrExceptionInInitc                     ddz   d S rP   r    r\   s    r   r]   zAggrExceptionInInit.__init__p       	!r   c                     d S r   r    ri   s     r   rk   zAggrExceptionInInit.steps   r^   r   c                     d S r   r    r\   s    r   rb   zAggrExceptionInInit.finalizev   r^   r   Nr1   rc   rd   r]   rk   rb   r    r   r   rm   rm   o   sA                r   rm   c                        e Zd Zd Zd Zd ZdS )AggrExceptionInStepc                     d S r   r    r\   s    r   r]   zAggrExceptionInStep.__init__z   r^   r   c                     ddz   d S rP   r    ri   s     r   rk   zAggrExceptionInStep.step}   ro   r   c                     dS r@   r    r\   s    r   rb   zAggrExceptionInStep.finalize   s    rr   Nrr   r    r   r   rt   rt   y   sA                r   rt   c                        e Zd Zd Zd Zd ZdS )AggrExceptionInFinalizec                     d S r   r    r\   s    r   r]   z AggrExceptionInFinalize.__init__   r^   r   c                     d S r   r    ri   s     r   rk   zAggrExceptionInFinalize.step   r^   r   c                     ddz   d S rP   r    r\   s    r   rb   z AggrExceptionInFinalize.finalize   ro   r   Nrr   r    r   r   ry   ry      sA                r   ry   c                        e Zd Zd Zd Zd ZdS )AggrCheckTypec                     d | _         d S r   valr\   s    r   r]   zAggrCheckType.__init__   s    r   c                     t           t          t          t          d           t          d}t          ||         t          |          u           | _        d S N)r,   intfloatNoneblobr,   r   r   typebytesr   )r   	whichTyper   theTypes       r   rk   zAggrCheckType.step   sC    cE4:: " "wy)T#YY677r   c                     | j         S r   r   r\   s    r   rb   zAggrCheckType.finalize   	    xr   Nrr   r    r   r   r~   r~      sA          8 8 8
    r   r~   c                        e Zd Zd Zd Zd ZdS )AggrCheckTypesc                     d| _         d S Nr   r   r\   s    r   r]   zAggrCheckTypes.__init__   s    r   c           	          t           t          t          t          d           t          d}|D ]4}| xj        t          ||         t          |          u           z  c_        5d S r   r   )r   r   valsr   r   s        r   rk   zAggrCheckTypes.step   sc    cE4:: " " 	= 	=CHHGI.$s));<<<HHH	= 	=r   c                     | j         S r   r   r\   s    r   rb   zAggrCheckTypes.finalize   r   r   Nrr   r    r   r   r   r      sA          = = =    r   r   c                        e Zd Zd Zd Zd ZdS )AggrSumc                     d| _         d S )N        r   r\   s    r   r]   zAggrSum.__init__   s    r   c                 &    | xj         |z  c_         d S r   r   )r   r   s     r   rk   zAggrSum.step   s    Cr   c                     | j         S r   r   r\   s    r   rb   zAggrSum.finalize   r   r   Nrr   r    r   r   r   r      sA                r   r   c                        e Zd Zd Zd Zd ZdS )AggrTextc                     d| _         d S )Nr	   txtr\   s    r   r]   zAggrText.__init__   s    r   c                 $    | j         |z   | _         d S r   r   )r   r   s     r   rk   zAggrText.step   s    8c>r   c                     | j         S r   r   r\   s    r   rb   zAggrText.finalize   r   r   Nrr   r    r   r   r   r      sA          " " "    r   r   c                   P   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z eed          d             Z eed          d             Z eed          d             Zd Zd Zd Zd Zd Z eed          d             Zd Zd Z  e!j"        e#j$        d k     d!          d"             Z% e!j"        e#j$        d k     d!          d#             Z& e!j"        e#j$        d k    d$          d%             Z'd& Z(d' Z) ee          d(             Z* ee+d)d*          d+             Z, e!j-        e.j/        d,k    d-           e0d.d/d01          d2                         Z1 e!j-        e.j/        d,k    d-           e0d.d3d01          d4                         Z2d5 Z3d6S )7FunctionTestsc                 d   t          j        d          | _        | j                            ddt                     | j                            ddt
                     | j                            ddt                     | j                            ddt                     | j                            ddt                     | j                            ddt                     | j                            d	dt                     | j                            d
dt                     | j                            ddd            | j                            ddd            | j                            ddt                     | j                            ddt                     | j                            ddt                     | j                            ddd            | j                            ddd            | j                            ddd            | j                            d           d S )N:memory:
returntextr   returntextwithnullreturnunicode	returnintreturnfloat
returnnull
returnblobreturnlonglong	returnnanc                       t          d          S )Nnan)r   r    r   r   <lambda>z%FunctionTests.setUp.<locals>.<lambda>   s    u r   return_noncont_blobc                  2    t          d          d d d         S )NrJ      )
memoryviewr    r   r   r   z%FunctionTests.setUp.<locals>.<lambda>   s    G)<)<SSqS)A r   raiseexceptionmemoryerroroverflowerrorisblobra   c                 ,    t          | t                    S r   )
isinstancer   rj   s    r   r   z%FunctionTests.setUp.<locals>.<lambda>   s    
1e8L8L r   isnonec                 
    | d u S r   r    r   s    r   r   z%FunctionTests.setUp.<locals>.<lambda>   s
    T	 r   spamc                       t          |           S r   )lenr   s    r   r   z%FunctionTests.setUp.<locals>.<lambda>   s    A r   zcreate table test(t text))r#   connectconcreate_functionr7   r;   r>   rB   rE   rH   rK   rN   rR   rU   rX   executer\   s    r   setUpzFunctionTests.setUp   s   >*--  q/BBB  !5q:QRRR  !5GHHH  a@@@  3CDDD  q/BBB  q/BBB  !116IJJJ  a1E1EFFF  !6!A!A	C 	C 	C  !116IJJJ  3CDDD  !5GHHH  1.L.LMMM  1.A.ABBB  ->->???455555r   c                 8    | j                                          d S r   )r   closer\   s    r   tearDownzFunctionTests.tearDown   s    r   c                     |                      t          j                  5  | j                            ddd            d d d            d S # 1 swxY w Y   d S )Nblac                     d| z  S Nr   r    r   s    r   r   z9FunctionTests.test_func_error_on_create.<locals>.<lambda>   s
    AaC r   )assertRaisesr#   OperationalErrorr   r   r\   s    r   test_func_error_on_createz'FunctionTests.test_func_error_on_create   s    v677 	A 	AH$$UD--@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   AAAc                 Z   t           j        }d}t          | j        |d          5  | j                            d           |                     t           j        |          5  | j                            d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nztoo many arguments on functionra   )categorylimitzselect abs(-1)zselect max(1, 2))r#   SQLITE_LIMIT_FUNCTION_ARGr   r   r   assertRaisesRegexr   )r   r   r4   s      r   test_func_too_many_argsz%FunctionTests.test_func_too_many_args   s&   3.dh;;; 	6 	6H-...''(?EE 6 6  !34446 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s5   ;B !B<B B	B B	B  B$'B$c                     d } |            }|t                      d<   | j                            dd|           | j                                        }|                    d           d S )Nc                      d } | S )Nc                      dS r`   r    r    r   r   fz=FunctionTests.test_func_ref_count.<locals>.getfunc.<locals>.f   s    qr   r    )r   s    r   getfuncz2FunctionTests.test_func_ref_count.<locals>.getfunc   s      Hr   r6   reftestr   zselect reftest())globalsr   r   cursorr   )r   r   r   curs       r   test_func_ref_countz!FunctionTests.test_func_ref_count   sp    	 	 	 GII		%  Aq111hoo&'''''r   c                    | j                                         }|                    d           |                                d         }|                     t          |          t                     |                     |d           d S )Nzselect returntext()r   r6   r   r   r   fetchoner)   r   r,   r   r   r   s      r   test_func_return_textz#FunctionTests.test_func_return_text   sp    hoo)***llnnQcC(((e$$$$$r   c                    | j                                         }|                    d                                          d         }|                     t          |          t                     |                     |d           d S )Nzselect returntextwithnull()r   r:   r   )r   r   ress      r   $test_func_return_text_with_null_charz2FunctionTests.test_func_return_text_with_null_char   sn    hookk788AACCAFcC(((h'''''r   c                    | j                                         }|                    d           |                                d         }|                     t          |          t                     |                     |d           d S )Nzselect returnunicode()r   r=   r   r   s      r   test_func_return_unicodez&FunctionTests.test_func_return_unicode   sp    hoo,---llnnQcC(((e$$$$$r   c                    | j                                         }|                    d           |                                d         }|                     t          |          t                     |                     |d           d S )Nzselect returnint()r   rA   )r   r   r   r   r)   r   r   r   s      r   test_func_return_intz"FunctionTests.test_func_return_int   sp    hoo()))llnnQcC(((b!!!!!r   c                 ,   | j                                         }|                    d           |                                d         }|                     t          |          t                     |dk     s|dk    r|                     d           d S d S )Nzselect returnfloat()r   g&1	@gT㥛 	@zwrong value)r   r   r   r   r)   r   r   failr   s      r   test_func_return_floatz$FunctionTests.test_func_return_float  s    hoo*+++llnnQcE***;;#++IIm$$$$$ &+r   c                 "   | j                                         }|                    d           |                                d         }|                     t          |          t          d                      |                     |d            d S )Nzselect returnnull()r   )r   r   r   r   r)   r   r   s      r   test_func_return_nullz#FunctionTests.test_func_return_null  sv    hoo)***llnnQcDJJ///d#####r   c                    | j                                         }|                    d           |                                d         }|                     t          |          t                     |                     |d           d S )Nzselect returnblob()r   rJ   )r   r   r   r   r)   r   r   r   s      r   test_func_return_blobz#FunctionTests.test_func_return_blob  sp    hoo)***llnnQcE***g&&&&&r   c                     | j                                         }|                    d           |                                d         }|                     |d           d S )Nzselect returnlonglong()r   rM   r   r   r   r   r)   r   s      r   test_func_return_long_longz(FunctionTests.test_func_return_long_long  sT    hoo-...llnnQe$$$$$r   c                     | j                                         }|                    d           |                     |                                d                    d S )Nzselect returnnan()r   )r   r   r   assertIsNoner   r   r   s     r   test_func_return_nanz"FunctionTests.test_func_return_nan#  sM    hoo()))#,,..+,,,,,r   rR   r   c                 H   | j                                         }|                     t          j                  5 }|                    d           |                                 d d d            n# 1 swxY w Y   |                     t          |j	                  d           d S )Nzselect raiseexception()&user-defined function raised exception
r   r   r   r#   r   r   r   r)   r,   	exceptionr   r   r   s      r   test_func_exceptionz!FunctionTests.test_func_exception(  s    hoov677 	2KK1222LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,TUUUUUs   *A//A36A3rU   c                     | j                                         }|                     t                    5  |                    d           |                                 d d d            d S # 1 swxY w Y   d S )Nzselect memoryerror())r   r   r   rT   r   r   r   s     r   test_func_memory_errorz$FunctionTests.test_func_memory_error0  s    hoo{++ 	 	KK.///LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   *A++A/2A/rX   c                     | j                                         }|                     t          j                  5  |                    d           |                                 d d d            d S # 1 swxY w Y   d S )Nzselect overflowerror())r   r   r   r#   	DataErrorr   r   r   s     r   test_func_overflow_errorz&FunctionTests.test_func_overflow_error7  s    hoov/00 	 	KK0111LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   *A00A47A4c                     | j                                         }|                    dd           |                                d         }|                     |d           d S )Nzselect spam(?, ?))ra   r   r   r   r   r   s      r   test_any_argumentsz FunctionTests.test_any_arguments>  sV    hoo'000llnnQa     r   c                     | j                             d          }|                     |                                d                    d S )Nzselect isblob(x'')r   )r   r   
assertTruer   r   s     r   test_empty_blobzFunctionTests.test_empty_blobD  s=    h344q)*****r   c                     | j                             dt          d          f          }|                     |                                d                    d S )Nzselect isnone(?)r   r   )r   r   r   r  r   r   s     r   test_nan_floatzFunctionTests.test_nan_floatH  sG    h1E%LL?CCq)*****r   c                 Z    d}|                      t          || j        j        dd           d S )Nz1Python int too large to convert to SQLite INTEGERselect spam(?))             )r   rW   r   r   )r   errs     r   test_too_large_intz FunctionTests.test_too_large_intM  s9    A}c483C/	= 	= 	= 	= 	=r   c           
          |                      t          d| j        j        dt	          d          d d d         f           d S )Nz%underlying buffer is not C-contiguousr  rJ   r   )r   BufferErrorr   r   r   r\   s    r   test_non_contiguous_blobz&FunctionTests.test_non_contiguous_blobR  sM    {F#x/1A *7 3 3CCaC 8:	< 	< 	< 	< 	<r   zbuffer.*contiguous)r   c                     |                      t          j                  5  | j                            d          }|                                 d d d            d S # 1 swxY w Y   d S )Nzselect return_noncont_blob())r   r#   r   r   r   r   r   s     r   test_return_non_contiguous_blobz-FunctionTests.test_return_non_contiguous_blobX  s    v677 	 	(""#ABBCLLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /AA #A c                 V    |                      t          d| j        j        dd           d S )Nsurrogates not allowedr  )u   )r   UnicodeEncodeErrorr   r   r\   s    r   test_param_surrogatesz#FunctionTests.test_param_surrogates^  s8    13K#x/1A0	2 	2 	2 	2 	2r   c                 6   g fd}| j                             dd|           dt          fdt          fdt          fdt          fdt          ft          d	          t          fd
t          fdt          fdt          fdt
          ft          t          d                    t
          ft          d          t
          fd t          d           fg}|D ]5\  }}| j         
                    d|f          }|                                 6|                     |           d S )Nc                 P                         | t          |           f           d S r   )appendr   )argresultss    r   append_resultz5FunctionTests.test_func_params.<locals>.append_resulte  s&    NNCc+,,,,,r   test_paramsra   rA   r   l   {C	 l           rD   inftextr:   u   ˢqˡⁱᵗᵉrJ   r   zselect test_params(?))r   r   r   r   r,   r   	bytearrayranger   r   r   r   r)   )r   r$  datasetr   _r   r#  s         @r   test_func_paramszFunctionTests.test_func_paramsc  s#   	- 	- 	- 	- 	-  =AAA II #& #&5M5\\5!SMsO.4euQxx  %(  %(4::
  	 	FC(""#:SFCCCLLNNNN'*****r   )      r-  zRequires SQLite 3.8.3 or higherc                    t          d           }| j                            dd|d           t          j        dk     r7| j                            d           |                     |j        d           d S |                     t          j	                  5  | j                            d	           d d d            d S # 1 swxY w Y   d S )
Nreturn_valuenondeterministicr   Fdeterministicr-     r   z.select nondeterministic() = nondeterministic()r   z>create index t on test(t) where nondeterministic() is not null)
r   r   r   r#   sqlite_version_infor   r)   
call_countr   r   r   mocks     r   test_func_non_deterministicz)FunctionTests.test_func_non_deterministic  s   &&&  !3QE RRR%
22HMNNNT_a00000""6#:;; c c  !abbbc c c c c c c c c c c c c c c c c cs   B==CCc                 |   t          d           }| j                            dd|d           t          j        dk     r7| j                            d           |                     |j        d           d S 	 | j                            d	           d S # t          j        $ r | 	                    d
           Y d S w xY w)Nr0  r4  r   Tr3  r5  z(select deterministic() = deterministic()ra   z;create index t on test(t) where deterministic() is not nullz/Unexpected failure while creating partial index)
r   r   r   r#   r7  r   r)   r8  r   r   r9  s     r   test_func_deterministicz%FunctionTests.test_func_deterministic  s    &&&  !T NNN%
22HGHHHT_a00000M  !^_____* M M M		KLLLLLLMs   7B $B;:B;zSQLite < 3.8.3 neededc                     |                      t          j                  5  | j                            ddt
          d           d d d            d S # 1 swxY w Y   d S )Nr4  r   Tr3  )r   r#   NotSupportedErrorr   r   r   r\   s    r   %test_func_deterministic_not_supportedz3FunctionTests.test_func_deterministic_not_supported  s    v788 	R 	RH$$_aD$QQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	Rs   $AAAc                     |                      t                    5  | j                            ddt          d           d d d            d S # 1 swxY w Y   d S )Nr4  r   T)r   	TypeErrorr   r   r   r\   s    r   $test_func_deterministic_keyword_onlyz2FunctionTests.test_func_deterministic_keyword_only  s    y)) 	D 	DH$$_adCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   #AAAc                     t          j        d          }d }|                    dd|            |d          }~~|g}|                    |           ~~t	                       d S )Nr   c                     d S r   r    )ts    r   md5sumz=FunctionTests.test_function_destructor_via_gc.<locals>.md5sum  s    Fr   md5ra   z(create table lang (name, first_appeared))r#   r   r   r!  r   )r   destrG  rj   ys        r   test_function_destructor_via_gcz-FunctionTests.test_function_destructor_via_gc  sy     ~j))	 	 	 	UAv...D;<<DC	ar   c                    | j                                         }d}dD ]n}| j                             dd|fd           |                     t          j        |          5  |                    d           d d d            n# 1 swxY w Y   od S )Nstring or blob too big)l            l        l            largeintr   c                     | S r   r    )values    r   r   z>FunctionTests.test_func_return_too_large_int.<locals>.<lambda>  s     r   zselect largeint())r   r   r   r   r#   r  r   )r   r   r4   rP  s       r   test_func_return_too_large_intz,FunctionTests.test_func_return_too_large_int  s    hoo&+ 	1 	1EH$$Z4M4M4MNNN''(8#>> 1 1/0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1s   BB	B	r  chrc                     | j                                         }| j                             ddt                     dD ]P}|                     t
          j                  5  |                    d|f           d d d            n# 1 swxY w Y   Qd S )Npychrra   )i  i  zselect pychr(?))r   r   r   rR  r   r#   r   r   )r   r   rP  s      r   %test_func_return_text_with_surrogatesz3FunctionTests.test_func_return_text_with_surrogates  s    hoo  !S111# 	9 	9E""6#:;; 9 9-x8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9s   BB		B	        zrequires 64bit platformrM   r-  F)sizememusedry_runc                    | j                                         }dD ]m}| j                             dd|fd           |                     t          j                  5  |                    d           d d d            n# 1 swxY w Y   nd S )NirM   	largetextr   c                     d| z  S )Nbr    rW  s    r   r   z?FunctionTests.test_func_return_too_large_text.<locals>.<lambda>  s
    sTz r   zselect largetext()r   r   r   r   r#   r  r   r   rW  r   s      r   test_func_return_too_large_textz-FunctionTests.test_func_return_too_large_text  s     hoo" 	2 	2DH$$[!5Q5Q5QRRR""6#344 2 201112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2   A>>B	B	r   c                    | j                                         }dD ]m}| j                             dd|fd           |                     t          j                  5  |                    d           d d d            n# 1 swxY w Y   nd S )Nr[  	largeblobr   c                     d| z  S )N   br    r_  s    r   r   z?FunctionTests.test_func_return_too_large_blob.<locals>.<lambda>  s
    td{ r   zselect largeblob()r`  ra  s      r   test_func_return_too_large_blobz-FunctionTests.test_func_return_too_large_blob  s     hoo" 	2 	2DH$$[!5R5R5RSSS""6#344 2 201112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2rc  c                       j                             dd fd           d}                     t          j        | j         j        d           d S )N	badreturnr   c                       S r   r    r\   s   r   r   z>FunctionTests.test_func_return_illegal_value.<locals>.<lambda>  s     r   r   zselect badreturn())r   r   r   r#   r   r   )r   r4   s   ` r   test_func_return_illegal_valuez,FunctionTests.test_func_return_illegal_value  sa      a>>>6v6#x/1E	G 	G 	G 	G 	Gr   N)4r1   rc   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   ZeroDivisionErrorr  rT   r  rW   r	  r  r  r  r  r  r  r  r  r,  unittestskipIfr#   r7  r;  r=  r@  rC  rK  rQ  r  rU  
skipUnlesssysmaxsizer   rb  rh  rl  r    r   r   r   r      s       6 6 6.  A A A6 6 6
( 
( 
(% % %( ( (% % %" " "% % %$ $ $' ' '% % %- - -
 _&-BCCCV V DCV _['9:::  ;: _])=>>>  ?>! ! !+ + ++ + +
= = =
< < < _[(<===  >=
2 2 2
+ + +B X_V/);=^__c c `_c X_V/);=^__
M 
M `_
M X_V/9<>UVVR R WVRD D D  " _]##1 1 $#1 _')A5II9 9 JI9 Xu,.GHHZU1e4442 2 54 IH2 Xu,.GHHZU1e4442 2 54 IH2G G G G Gr   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )WindowSumIntc                     d| _         d S r   countr\   s    r   r]   zWindowSumInt.__init__  s    


r   c                 &    | xj         |z  c_         d S r   rv  r   rP  s     r   rk   zWindowSumInt.step      

e



r   c                     | j         S r   rv  r\   s    r   rP  zWindowSumInt.value  
    zr   c                 &    | xj         |z  c_         d S r   rv  ry  s     r   inversezWindowSumInt.inverse  rz  r   c                     | j         S r   rv  r\   s    r   rb   zWindowSumInt.finalize  r|  r   N)r1   rc   rd   r]   rk   rP  r~  rb   r    r   r   rt  rt    s_                    r   rt  c                       e Zd ZdS )	BadWindowN)r1   rc   rd   r    r   r   r  r    s        Dr   r  )r-     r   zRequires SQLite 3.25.0 or newerc                       e Zd Zd Zd Zd Z ee          d             Z ee          d             Z	 ee
          d             Z ee
          d             Zd Zd	 Zd
 ZdS )WindowFunctionTestsc                    t          j        d          | _        | j                                        | _        g d}| j        5  | j                            d           | j                            d|           d d d            n# 1 swxY w Y   g d| _        d| _        | j        	                    ddt                     d S )	Nr   ))a   )r^  rQ   )cr-  )dr.  )era   zcreate table test(x, y)zinsert 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
        sumintra   )r#   r   r   r   r   r   executemanyexpectedquerycreate_window_functionrt  )r   valuess     r   r   zWindowFunctionTests.setUp  s   >*--8??$$
 
 
 X 	J 	JH6777H  !@&III	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J
 
 

 	''!\BBBBBs   6BB	B	c                     | j                             | j        dz             |                     | j                                         | j                   d S )Nr  )r   r   r  r)   fetchallr  r\   s    r   test_win_sum_intz$WindowFunctionTests.test_win_sum_int  sK    h.///**,,dm<<<<<r   c                 j    |                      t          j        | j        j        ddt
                     d S )N
shouldfailr   )r   r#   ProgrammingErrorr   r  rt  r\   s    r   test_win_error_on_createz,WindowFunctionTests.test_win_error_on_create  s8    &1(9&l	< 	< 	< 	< 	<r   c           	          dD ]	}|                      |          5  t          j        t          |t                    5  d| }| j                            |dt                     d| d}|                     t          j	        |          5  | j
                            | j        |z             | j
                                         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N)r]   rk   rP  r~  )methside_effectexc_ra   'z' method raised error)subTestr   r0   rt  r  r   r  r   r#   r   r   r   r  r  )r   r  r   r4   s       r   test_win_exception_in_methodz0WindowFunctionTests.test_win_exception_in_method  s   : 	, 	,D4(( , ,\,)LLL , ,($==DH33D!\JJJ9d999C//0GMM , ,((d):;;;))+++, , , , , , , , , , , , , , ,	, , , , , , , , , , , , , , ,, , , , , , , , , , , , , , ,	, 	,sY   "DAC*<C	C*CC*CC*D*C..D1C.2DD	D	c                 6   t          j        t          dt                    5  d}| j                            |dt                     | j                            | j        |z             | j        	                                 d d d            d S # 1 swxY w Y   d S )Nrb   r  exception_in_finalizera   )
r   r0   rt  r  r   r  r   r   r  r  )r   r   s     r   test_win_exception_in_finalizez2WindowFunctionTests.test_win_exception_in_finalize*  s    
 \,
	JJJ 	  	 +DH++D!\BBBHTZ$.///H		  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   ABBBc                     G d d          } G d d          } G d d          }d|fd|fd	|ff}|D ]\  }}|                      ||
          5  d| }| j                            |d|           |                     t          j        d| d          5  | j                            | j        |z             | j        	                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nc                        e Zd Zd Zd Zd ZdS )AWindowFunctionTests.test_win_missing_method.<locals>.MissingValuec                     d S r   r    ri   s     r   rk   zFWindowFunctionTests.test_win_missing_method.<locals>.MissingValue.step8        r   c                     d S r   r    ri   s     r   r~  zIWindowFunctionTests.test_win_missing_method.<locals>.MissingValue.inverse9  r  r   c                     dS r@   r    r\   s    r   rb   zJWindowFunctionTests.test_win_missing_method.<locals>.MissingValue.finalize:      rrr   N)r1   rc   rd   rk   r~  rb   r    r   r   MissingValuer  7  +        ###&&&)))))r   r  c                        e Zd Zd Zd Zd ZdS )CWindowFunctionTests.test_win_missing_method.<locals>.MissingInversec                     d S r   r    ri   s     r   rk   zHWindowFunctionTests.test_win_missing_method.<locals>.MissingInverse.step=  r  r   c                     dS r@   r    r\   s    r   rP  zIWindowFunctionTests.test_win_missing_method.<locals>.MissingInverse.value>      BBr   c                     dS r@   r    r\   s    r   rb   zLWindowFunctionTests.test_win_missing_method.<locals>.MissingInverse.finalize?  r  r   N)r1   rc   rd   rk   rP  rb   r    r   r   MissingInverser  <  r  r   r  c                        e Zd Zd Zd Zd ZdS )@WindowFunctionTests.test_win_missing_method.<locals>.MissingStepc                     dS r@   r    r\   s    r   rP  zFWindowFunctionTests.test_win_missing_method.<locals>.MissingStep.valueB  r  r   c                     d S r   r    ri   s     r   r~  zHWindowFunctionTests.test_win_missing_method.<locals>.MissingStep.inverseC  r  r   c                     dS r@   r    r\   s    r   rb   zIWindowFunctionTests.test_win_missing_method.<locals>.MissingStep.finalizeD  r  r   N)r1   rc   rd   rP  r~  rb   r    r   r   MissingStepr  A  s+        &&&&&&)))))r   r  rk   rP  r~  )r  clsr  ra   r  z' method not defined)
r  r   r  r   r#   r   r   r   r  r  )r   r  r  r  r*  r  r  r   s           r   test_win_missing_methodz+WindowFunctionTests.test_win_missing_method5  s   	* 	* 	* 	* 	* 	* 	* 	*
	* 	* 	* 	* 	* 	* 	* 	*
	* 	* 	* 	* 	* 	* 	* 	* [!l#'

 ! 	( 	(ID#4S11 ( ($d}}//a===++F,C,J,J,J,JL L ( (H$$TZ$%6777H%%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	(s7   AC6<CC6C##C6&C#'C66C:	=C:	c                      G d d          }d}| j                             |d|           | j                            | j        |z             | j                                         d S )Nc                        e Zd Zd Zd Zd ZdS )FWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalizec                     d S r   r    ri   s     r   rk   zKWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalize.stepZ  r  r   c                     dS r@   r    r\   s    r   rP  zLWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalize.value[  r  r   c                     d S r   r    ri   s     r   r~  zNWindowFunctionTests.test_win_missing_finalize.<locals>.MissingFinalize.inverse\  r  r   N)r1   rc   rd   rk   rP  r~  r    r   r   MissingFinalizer  Y  s+        ###&&&&&&&&r   r  missing_finalizera   )r   r  r   r   r  r  )r   r  r   s      r   test_win_missing_finalizez-WindowFunctionTests.test_win_missing_finalizeT  s    
	' 	' 	' 	' 	' 	' 	' 	'
 "''aAAAd*+++r   c                     | j                             ddd            |                     t          j        | j        j        | j        dz             d S )Nr  ra   )r   r  r   r#   r   r   r   r  r\   s    r   test_win_clear_functionz+WindowFunctionTests.test_win_clear_functionc  sT    ''!T:::&1483C*x/	1 	1 	1 	1 	1r   c                 $    G d dt                     }d | j        D             }| j                            dd|           | j                            | j        dz             |                     | j                                        |           d S )Nc                       e Zd Zd Zd ZdS )AWindowFunctionTests.test_win_redefine_function.<locals>.Redefinedc                 ,    | xj         |dz  z  c_         d S r   rv  ry  s     r   rk   zFWindowFunctionTests.test_win_redefine_function.<locals>.Redefined.stepk  s    4::#:::::r   c                 ,    | xj         |dz  z  c_         d S r   rv  ry  s     r   r~  zIWindowFunctionTests.test_win_redefine_function.<locals>.Redefined.inversel  s    djjEAI&=jjjjr   N)r1   rc   rd   rk   r~  r    r   r   	Redefinedr  j  s"        :::=====r   r  c                 4    g | ]}|d          |d         dz  fS )r   ra   r   r    ).0vs     r   
<listcomp>zBWindowFunctionTests.test_win_redefine_function.<locals>.<listcomp>m  s(    :::qQqT1Q46N:::r   r  ra   )	rt  r  r   r  r   r   r  r)   r  )r   r  r  s      r   test_win_redefine_functionz.WindowFunctionTests.test_win_redefine_functionh  s    	> 	> 	> 	> 	> 	> 	> 	> ;:DM:::''!Y???h.///**,,h77777r   c                      G d d          }| j                             dd|           |                     t          j        d| j        j        | j        dz             d S )Nc                        e Zd Zd Zd Zd ZdS )IWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturnc                     d S r   r    r\   s    r   r]   zRWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturn.__init__u  r  r   c                     d S r   r    ri   s     r   rk   zNWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturn.stepv  r  r   c                     dS )Nr  r    r\   s    r   rP  zOWindowFunctionTests.test_win_error_value_return.<locals>.ErrorValueReturn.valuew  s    GGr   N)r1   rc   rd   r]   rk   rP  r    r   r   ErrorValueReturnr  t  s+        $$$###+++++r   r  err_val_retra   rM  )r   r  r   r#   r  r   r   r  )r   r  s     r   test_win_error_value_returnz/WindowFunctionTests.test_win_error_value_returns  s    	, 	, 	, 	, 	, 	, 	, 	,
 	''q:JKKKv/1I#x/m1K	M 	M 	M 	M 	Mr   N)r1   rc   rd   r   r  r  r!   r  r  r  AttributeErrorr  r  r  r  r  r    r   r   r  r    s       C C C<= = =< < <
 _Y	, 	,  	, _Y       _^$$( ( %$(< _^$$  %$1 1 1
	8 	8 	8M M M M Mr   r  c                      e Zd Zd Zd Zd Z eed          d             Zd Z	 ee
d          d	             Z ee
d
          d             Z ee
d          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )AggregateTestsc           
      6   t          j        d          | _        | j                                        }|                    d           |                    ddddd t          d          f           | j                            dd	t                     | j                            d
d	t                     | j                            dd	t                     | j                            dd	t                     | j                            dd	t                     | j                            ddt                     | j                            ddt                     | j                            dd	t                     | j                            dd	t                     d S )Nr   z
            create table test(
                t text,
                i integer,
                f float,
                n,
                b blob
                )
            z6insert into test(t, i, f, n, b) values (?, ?, ?, ?, ?)r6   rQ   rD   rJ   nostepra   
nofinalizeexcInitexcStepexcFinalize	checkTyper   
checkTypesr   mysumaggtxt)r#   r   r   r   r   r   create_aggregaterZ   rf   rm   rt   ry   r~   r   r   r   r   s     r   r   zAggregateTests.setUp  se   >*--hoo  	 	 	 	LAtT:g#6#68	: 	: 	: 	!!(Az:::!!,>BBB!!)Q0CDDD!!)Q0CDDD!!-4KLLL!!+q-@@@!!,NCCC!!'1g666!!(Ax88888r   c                     d S r   r    r\   s    r   r   zAggregateTests.tearDown  s	     	r   c                     |                      t          j                  5  | j                            ddt
                     d d d            d S # 1 swxY w Y   d S )Nr   r   )r   r#   r   r   r   r   r\   s    r   test_aggr_error_on_createz(AggregateTests.test_aggr_error_on_create  s    v677 	; 	;H$$UD':::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   "AAArZ   r   c                     | j                                         }|                     t          j                  5 }|                    d           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nzselect nostep(t) from testz2user-defined aggregate's 'step' method not defined)	r   r   r   r#   r   r   r)   r,   r  r  s      r   test_aggr_no_stepz AggregateTests.test_aggr_no_step  s    hoov677 	62KK4555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6R\**M	O 	O 	O 	O 	Os   AA"Ac                    | j                                         }d}|                     t          j        |          5  |                    d           |                                d         }d d d            d S # 1 swxY w Y   d S )Nz6user-defined aggregate's 'finalize' method not definedzselect nofinalize(t) from testr   )r   r   r   r#   r   r   r   )r   r   r4   r   s       r   test_aggr_no_finalizez$AggregateTests.test_aggr_no_finalize  s    hooF##F$;SAA 	$ 	$KK8999,,..#C	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   0A99A= A=rm   c                 T   | j                                         }|                     t          j                  5 }|                    d           |                                d         }d d d            n# 1 swxY w Y   |                     t          |j	                  d           d S )Nzselect excInit(t) from testr   z7user-defined aggregate's '__init__' method raised errorr  r   r   r   r   s       r   test_aggr_exception_in_initz*AggregateTests.test_aggr_exception_in_init  s    hoov677 	$2KK5666,,..#C	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	R\**,efffff   0A55A9<A9rt   c                 T   | j                                         }|                     t          j                  5 }|                    d           |                                d         }d d d            n# 1 swxY w Y   |                     t          |j	                  d           d S )Nzselect excStep(t) from testr   z3user-defined aggregate's 'step' method raised errorr  r  s       r   test_aggr_exception_in_stepz*AggregateTests.test_aggr_exception_in_step  s    hoov677 	$2KK5666,,..#C	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	R\**,abbbbbr  ry   c                 T   | j                                         }|                     t          j                  5 }|                    d           |                                d         }d d d            n# 1 swxY w Y   |                     t          |j	                  d           d S )Nzselect excFinalize(t) from testr   z7user-defined aggregate's 'finalize' method raised errorr  r  s       r   test_aggr_exception_in_finalizez.AggregateTests.test_aggr_exception_in_finalize  s    hoov677 	$2KK9:::,,..#C	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	R\**,efffffr  c                     | j                                         }|                    ddt                      f           |                                d         }|                     |d           d S )Nzselect checkTypes('str', ?, ?)r6   r   r   )r   r   r   r,   r   r)   r   s      r   test_aggr_check_param_strz(AggregateTests.test_aggr_check_param_str  s^    hoo4uceenEEEllnnQa     r   c                     | j                                         }|                    dd           |                                d         }|                     |d           d S )Nzselect checkType('int', ?))rA   r   ra   r   r   s      r   test_aggr_check_param_intz(AggregateTests.test_aggr_check_param_int  sV    hoo0%888llnnQa     r   c                     | j                                         }|                    dd           |                                d         }|                     |d           d S )Nzselect checkTypes('int', ?, ?))rA      r   r   r   r   s      r   test_aggr_check_params_intz)AggregateTests.test_aggr_check_params_int  sV    hoo4h???llnnQa     r   c                     | j                                         }|                    dd           |                                d         }|                     |d           d S )Nzselect checkType('float', ?))rD   r   ra   r   r   s      r   test_aggr_check_param_floatz*AggregateTests.test_aggr_check_param_float  sV    hoo2G<<<llnnQa     r   c                     | j                                         }|                    dd           |                                d         }|                     |d           d S )Nzselect checkType('None', ?)r   r   ra   r   r   s      r   test_aggr_check_param_nonez)AggregateTests.test_aggr_check_param_none  sV    hoo17;;;llnnQa     r   c                     | j                                         }|                    dt          d          f           |                                d         }|                     |d           d S )Nzselect checkType('blob', ?)rJ   r   ra   )r   r   r   r   r   r)   r   s      r   test_aggr_check_param_blobz)AggregateTests.test_aggr_check_param_blob  sa    hoo1Jw4G4G3IJJJllnnQa     r   c                    | j                                         }|                    d           |                    dg d           |                    d           |                                d         }|                     |d           d S )Nzdelete from testzinsert into test(i) values (?)))
   )   )   zselect 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    hoo&'''8:O:O:OPPP/000llnnQb!!!!!r   c                     | j                             d          }|                                d         }|                     |           d S )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  sD    hRSSllnnQ#r   c                 ,   | j                                         }dD ]w}|                     |          5  |                    d|f           |                                d         }|                     ||           d d d            n# 1 swxY w Y   xd S )N)r6   r:   r   zselect aggtxt(?) from testr   )r   r   r  r   r   r)   )r   r   r   r   s       r   test_aggr_textzAggregateTests.test_aggr_text  s    hoo$ 	+ 	+C#&& + +83&AAAllnnQ'  c***+ + + + + + + + + + + + + + +	+ 	+s   ABB	B	N)r1   rc   rd   r   r   r  r!   r  r  r  rm  r  r  r  r  r  r  r  r  r  r  r  r  r    r   r   r  r  ~  s       9 9 92  
; ; ; _^,777O O 87O$ $ $ _&-BCCCg g DCg _&-BCCCc c DCc _&-FGGGg g HGg! ! !! ! !! ! !! ! !! ! !! ! !" " "  
+ + + + +r   r  c                   B    e Zd Zed             Zd Zd Zd Zd Zd Z	dS )AuthorizerTestsc                     | t           j        k    rt           j        S |dk    s|dk    rt           j        S t           j        S Nc2t2)r#   SQLITE_SELECTSQLITE_DENY	SQLITE_OKactionarg1arg2dbnamesources        r   authorizer_cbzAuthorizerTests.authorizer_cb  s<    V)))%%4<<44<<%%r   c                     t          j        d          | _        | j                            d           | j                            d           | j                            | j                   d S )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);
            zselect c2 from t2)r#   r   r   executescriptr   set_authorizerr!  r\   s    r   r   zAuthorizerTests.setUp  sj    >*--   	 	 	 	,--- 233333r   c                     d S r   r    r\   s    r   r   zAuthorizerTests.tearDown  r^   r   c                     |                      t          j                  5 }| j                            d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nselect * from t2
prohibitedr   r#   DatabaseErrorr   r   assertInr,   r  r   r   s     r   test_table_accessz!AuthorizerTests.test_table_access  s    v344 	1H/000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1lC$5$566666   AAAc                     |                      t          j                  5 }| j                            d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nselect c2 from t1r(  r)  r,  s     r   test_column_accessz"AuthorizerTests.test_column_access!  s    v344 	2H0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2lC$5$566666r.  c                     | j                             d            | j                             d           | j                             d           d S )Nr'  r0  )r   r$  r   r\   s    r   test_clear_authorizerz%AuthorizerTests.test_clear_authorizer&  sL    %%%+,,,,-----r   N)
r1   rc   rd   staticmethodr!  r   r   r-  r1  r3  r    r   r   r  r    sx            \ 4 4 4  7 7 7
7 7 7
. . . . .r   r  c                        e Zd Zed             Z eed           fd            Z eed           fd            Z xZ	S )AuthorizerRaiseExceptionTestsc                 n    | t           j        k    rt          |dk    s|dk    rt          t           j        S r  )r#   r  
ValueErrorr  r  s        r   r!  z+AuthorizerRaiseExceptionTests.authorizer_cb-  s6    V)))4<<44<<r   r!  r   c                 H    t                                                       d S r   superr-  r   	__class__s    r   r-  z/AuthorizerRaiseExceptionTests.test_table_access5      !!#####r   c                 H    t                                                       d S r   r:  r<  s    r   r1  z0AuthorizerRaiseExceptionTests.test_column_access9  r>  r   )
r1   rc   rd   r4  r!  r!   r8  r-  r1  __classcell__)r=  s   @r   r6  r6  ,  s            \  _Zo666$ $ $ $ 76$ _Zo666$ $ $ $ 76$ $ $ $ $r   r6  c                   $    e Zd Zed             ZdS )AuthorizerIllegalTypeTestsc                 Z    | t           j        k    rdS |dk    s|dk    rdS t           j        S )Nr   r  r  r#   r  r  r  s        r   r!  z(AuthorizerIllegalTypeTests.authorizer_cb>  s4    V)))34<<44<<3r   Nr1   rc   rd   r4  r!  r    r   r   rB  rB  =  -            \     r   rB  c                   $    e Zd Zed             ZdS )AuthorizerLargeIntegerTestsc                 Z    | t           j        k    rdS |dk    s|dk    rdS t           j        S )NrV  r  r  rD  r  s        r   r!  z)AuthorizerLargeIntegerTests.authorizer_cbG  s4    V)))54<<44<<5r   NrE  r    r   r   rH  rH  F  rF  r   rH  __main__)r	   r	   )7r'   r   r%   r   rq  rn  sqlite3r#   unittest.mockr   r   test.supportr   r   r   test.test_sqlite3.test_dbapir   r!   contextmanagerr   r7   r;   r>   rB   rE   rH   rK   rN   rR   rU   rX   rZ   rf   rm   rt   ry   r~   r   r   r   TestCaser   rt  	Exceptionr  ro  r7  r  r  r  r6  rB  rH  r1   mainr    r   r   <module>rS     s  0         				 				 



      % % % % % % % % K K K K K K K K K K 1 1 1 1 1 1   " 1 1 1$                                                         
 
 
 
 
 
 
 
                     dG dG dG dG dGH% dG dG dGN	        	 	 	 	 		 	 	 	 +j824 4EM EM EM EM EM(+ EM EM4 4EMPA+ A+ A+ A+ A+X& A+ A+ A+H'. '. '. '. '.h' '. '. '.T$ $ $ $ $O $ $ $"                        /       zHMOOOOO r   