o
    °ó®gYJ  ã                   @   sª  d dl Z d dlZ d dlZd dlZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ ZG d"d#„ d#ƒZG d$d%„ d%ƒZG d&d'„ d'ƒZG d(d)„ d)ƒZG d*d+„ d+ƒZG d,d-„ d-ƒZG d.d/„ d/ƒZG d0d1„ d1ƒZG d2d3„ d3ƒZG d4d5„ d5e jƒZG d6d7„ d7e jƒZ G d8d9„ d9e jƒZ!G d:d;„ d;e!ƒZ"G d<d=„ d=e!ƒZ#G d>d?„ d?e!ƒZ$d@dA„ Z%dBdC„ Z&e'dDkrÓe&ƒ  dS dS )Eé    Nc                   C   ó   dS )NÚfoo© r   r   r   úP/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/sqlite3/test/userfunctions.pyÚfunc_returntext   ó   r   c                   C   r   )Nú1 2r   r   r   r   r   Úfunc_returntextwithnull   r   r	   c                   C   r   )NÚbarr   r   r   r   r   Úfunc_returnunicode!   r   r   c                   C   r   ©Né*   r   r   r   r   r   Úfunc_returnint#   r   r   c                   C   r   )Nç…ëQ¸	@r   r   r   r   r   Úfunc_returnfloat%   r   r   c                   C   ó   d S ©Nr   r   r   r   r   Úfunc_returnnull'   r   r   c                   C   r   )Nó   blobr   r   r   r   r   Úfunc_returnblob)   r   r   c                   C   r   ©Nì        r   r   r   r   r   Úfunc_returnlonglong+   r   r   c                   C   ó   dd  d S ©Né   r   r   r   r   r   r   Úfunc_raiseexception-   ó   r   c                 C   ó   t | ƒtu S r   )ÚtypeÚstr©Úvr   r   r   Úfunc_isstring0   r   r#   c                 C   r   r   )r   Úintr!   r   r   r   Ú
func_isint2   r   r%   c                 C   r   r   )r   Úfloatr!   r   r   r   Úfunc_isfloat4   r   r'   c                 C   s   t | ƒt d ƒu S r   )r   r!   r   r   r   Úfunc_isnone6   ó   r(   c                 C   s   t | ttfƒS r   )Ú
isinstanceÚbytesÚ
memoryviewr!   r   r   r   Úfunc_isblob8   ó   r-   c                 C   s   t | tƒo| dkS r   )r*   r$   r!   r   r   r   Úfunc_islonglong:   ó   r/   c                  G   s   t | ƒS r   )Úlen)Úargsr   r   r   Úfunc=   s   r3   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )Ú
AggrNoStepc                 C   r   r   r   ©Úselfr   r   r   Ú__init__A   r   zAggrNoStep.__init__c                 C   r   ©Né   r   r6   r   r   r   ÚfinalizeD   r   zAggrNoStep.finalizeN)Ú__name__Ú
__module__Ú__qualname__r8   r;   r   r   r   r   r5   @   ó    r5   c                   @   r4   )ÚAggrNoFinalizec                 C   r   r   r   r6   r   r   r   r8   H   r   zAggrNoFinalize.__init__c                 C   r   r   r   ©r7   Úxr   r   r   ÚstepK   r   zAggrNoFinalize.stepN)r<   r=   r>   r8   rC   r   r   r   r   r@   G   r?   r@   c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚAggrExceptionInInitc                 C   r   r   r   r6   r   r   r   r8   O   r   zAggrExceptionInInit.__init__c                 C   r   r   r   rA   r   r   r   rC   R   r   zAggrExceptionInInit.stepc                 C   r   r   r   r6   r   r   r   r;   U   r   zAggrExceptionInInit.finalizeN©r<   r=   r>   r8   rC   r;   r   r   r   r   rE   N   ó    rE   c                   @   rD   )ÚAggrExceptionInStepc                 C   r   r   r   r6   r   r   r   r8   Y   r   zAggrExceptionInStep.__init__c                 C   r   r   r   rA   r   r   r   rC   \   r   zAggrExceptionInStep.stepc                 C   r   r   r   r6   r   r   r   r;   _   r   zAggrExceptionInStep.finalizeNrF   r   r   r   r   rH   X   rG   rH   c                   @   rD   )ÚAggrExceptionInFinalizec                 C   r   r   r   r6   r   r   r   r8   c   r   z AggrExceptionInFinalize.__init__c                 C   r   r   r   rA   r   r   r   rC   f   r   zAggrExceptionInFinalize.stepc                 C   r   r   r   r6   r   r   r   r;   i   r   z AggrExceptionInFinalize.finalizeNrF   r   r   r   r   rI   b   rG   rI   c                   @   rD   )ÚAggrCheckTypec                 C   s
   d | _ d S r   ©Úvalr6   r   r   r   r8   m   ó   
zAggrCheckType.__init__c                 C   s.   t tttd ƒtdœ}t|| t|ƒu ƒ| _d S ©N)r    r$   r&   ÚNoneZblob©r    r$   r&   r   r+   rL   )r7   Ú	whichTyperL   ÚtheTyper   r   r   rC   p   s   ÿzAggrCheckType.stepc                 C   ó   | j S r   rK   r6   r   r   r   r;   u   ó   zAggrCheckType.finalizeNrF   r   r   r   r   rJ   l   s    rJ   c                   @   rD   )ÚAggrCheckTypesc                 C   ó
   d| _ d S )Nr   rK   r6   r   r   r   r8   y   rM   zAggrCheckTypes.__init__c                 G   s@   t tttd ƒtdœ}|D ]}|  jt|| t|ƒu ƒ7  _qd S rN   rP   )r7   rQ   ZvalsrR   rL   r   r   r   rC   |   s   ÿ ÿzAggrCheckTypes.stepc                 C   rS   r   rK   r6   r   r   r   r;   ‚   rT   zAggrCheckTypes.finalizeNrF   r   r   r   r   rU   x   s    rU   c                   @   rD   )ÚAggrSumc                 C   rV   )Nç        rK   r6   r   r   r   r8   †   rM   zAggrSum.__init__c                 C   s   |  j |7  _ d S r   rK   )r7   rL   r   r   r   rC   ‰   r0   zAggrSum.stepc                 C   rS   r   rK   r6   r   r   r   r;   Œ   rT   zAggrSum.finalizeNrF   r   r   r   r   rW   …   rG   rW   c                   @   rD   )ÚAggrTextc                 C   rV   )NÚ ©Útxtr6   r   r   r   r8      rM   zAggrText.__init__c                 C   s   | j | | _ d S r   r[   )r7   r\   r   r   r   rC   ’   r)   zAggrText.stepc                 C   rS   r   r[   r6   r   r   r   r;   ”   rT   zAggrText.finalizeNrF   r   r   r   r   rY      s    rY   c                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Ze ejd+k d,¡d-d.„ ƒZe ejd+k d,¡d/d0„ ƒZe ejd+kd1¡d2d3„ ƒZd4d5„ Zd6d7„ Z d8S )9ÚFunctionTestsc                 C   s  t  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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 S )Nú:memory:Z
returntextr   ZreturntextwithnullZreturnunicodeZ	returnintZreturnfloatZ
returnnullZ
returnblobZreturnlonglongZraiseexceptionÚisstringr:   ZisintZisfloatZisnoneZisblobZ
islonglongZspaméÿÿÿÿzcreate table test(t text))ÚsqliteÚconnectÚconÚcreate_functionr   r	   r   r   r   r   r   r   r   r#   r%   r'   r(   r-   r/   r3   Úexecuter6   r   r   r   ÚsetUp™   s$   zFunctionTests.setUpc                 C   s   | j  ¡  d S r   )rc   Úcloser6   r   r   r   ÚtearDown¯   r.   zFunctionTests.tearDownc                 C   sF   |   tj¡ | j dddd„ ¡ W d   ƒ d S 1 sw   Y  d S )NÚblaéœÿÿÿc                 S   s   d|  S )Né   r   )rB   r   r   r   Ú<lambda>´   s    z9FunctionTests.test_func_error_on_create.<locals>.<lambda>)ÚassertRaisesra   ÚOperationalErrorrc   rd   r6   r   r   r   Útest_func_error_on_create²   s   "ÿz'FunctionTests.test_func_error_on_createc                 C   s@   dd„ }|ƒ }|t ƒ d< | j dd|¡ | j ¡ }| d¡ d S )Nc                  S   s   dd„ } | S )Nc                   S   r   r9   r   r   r   r   r   Úf¸   r   z=FunctionTests.test_func_ref_count.<locals>.getfunc.<locals>.fr   )rp   r   r   r   Úgetfunc·   s   z2FunctionTests.test_func_ref_count.<locals>.getfuncr   Zreftestr   zselect reftest())Úglobalsrc   rd   Úcursorre   )r7   rq   rp   Úcurr   r   r   Útest_func_ref_count¶   s   

z!FunctionTests.test_func_ref_countc                 C   ó@   | j  ¡ }| d¡ | ¡ d }|  t|ƒt¡ |  |d¡ d S )Nzselect returntext()r   r   ©rc   rs   re   ÚfetchoneÚassertEqualr   r    ©r7   rt   rL   r   r   r   Útest_func_return_textÂ   ó
   

z#FunctionTests.test_func_return_textc                 C   s<   | j  ¡ }| d¡ ¡ d }|  t|ƒt¡ |  |d¡ d S )Nzselect returntextwithnull()r   r   rw   )r7   rt   Úresr   r   r   Ú$test_func_return_text_with_null_charÉ   s   
z2FunctionTests.test_func_return_text_with_null_charc                 C   rv   )Nzselect returnunicode()r   r
   rw   rz   r   r   r   Útest_func_return_unicodeÏ   r|   z&FunctionTests.test_func_return_unicodec                 C   rv   )Nzselect returnint()r   r   )rc   rs   re   rx   ry   r   r$   rz   r   r   r   Útest_func_return_intÖ   r|   z"FunctionTests.test_func_return_intc                 C   sR   | 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)rc   rs   re   rx   ry   r   r&   Úfailrz   r   r   r   Útest_func_return_floatÝ   s   

ÿz$FunctionTests.test_func_return_floatc                 C   sD   | j  ¡ }| d¡ | ¡ d }|  t|ƒtd ƒ¡ |  |d ¡ d S )Nzselect returnnull()r   )rc   rs   re   rx   ry   r   rz   r   r   r   Útest_func_return_nullå   s
   

z#FunctionTests.test_func_return_nullc                 C   rv   )Nzselect returnblob()r   r   )rc   rs   re   rx   ry   r   r+   rz   r   r   r   Útest_func_return_blobì   r|   z#FunctionTests.test_func_return_blobc                 C   s0   | j  ¡ }| d¡ | ¡ d }|  |d¡ d S )Nzselect returnlonglong()r   r   ©rc   rs   re   rx   ry   rz   r   r   r   Útest_func_return_long_longó   s   

z(FunctionTests.test_func_return_long_longc                 C   s^   | j  ¡ }|  tj¡}| d¡ | ¡  W d   ƒ n1 sw   Y  |  t|j	ƒd¡ d S )Nzselect raiseexception()z&user-defined function raised exception©
rc   rs   rm   ra   rn   re   rx   ry   r    Ú	exception©r7   rt   Úcmr   r   r   Útest_func_exceptionù   s   


þz!FunctionTests.test_func_exceptionc              	   C   sp   | j  ¡ }dtƒ fD ]+}| j|d | d|f¡ | ¡ d }|  |d¡ W d   ƒ q
1 s0w   Y  q
d S )Nr   )Útextzselect isstring(?)r   r:   )rc   rs   r    ÚsubTestre   rx   ry   )r7   rt   rŒ   rL   r   r   r   Útest_param_string   s   
ýÿzFunctionTests.test_param_stringc                 C   ó2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect isint(?)©r   r   r:   r…   rz   r   r   r   Útest_param_int  ó   
zFunctionTests.test_param_intc                 C   r   )Nzselect isfloat(?)©r   r   r:   r…   rz   r   r   r   Útest_param_float  r’   zFunctionTests.test_param_floatc                 C   r   )Nzselect isnone(?)r   r   r:   r…   rz   r   r   r   Útest_param_none  r’   zFunctionTests.test_param_nonec                 C   ó8   | j  ¡ }| dtdƒf¡ | ¡ d }|  |d¡ d S )Nzselect isblob(?)r   r   r:   ©rc   rs   re   r,   rx   ry   rz   r   r   r   Útest_param_blob  ó   
zFunctionTests.test_param_blobc                 C   r   )Nzselect islonglong(?))l        r   r:   r…   rz   r   r   r   Útest_param_long_long   r’   z"FunctionTests.test_param_long_longc                 C   r   )Nzselect spam(?, ?))r:   rk   r   rk   r…   rz   r   r   r   Útest_any_arguments&  r’   z FunctionTests.test_any_argumentsc                 C   s"   | j  d¡}|  | ¡ d ¡ d S )Nzselect isblob(x'')r   )rc   re   Z
assertTruerx   ©r7   rt   r   r   r   Útest_empty_blob,  s   zFunctionTests.test_empty_blob)é   é   rž   zRequires SQLite 3.8.3 or higherc                 C   sˆ   t jjd d}| jjdd|dd tjdk r%| j d¡ |  |j	d¡ d S |  
tj¡ | j d	¡ W d   ƒ d S 1 s=w   Y  d S )
N©Zreturn_valueZnondeterministicr   F©Údeterministic©rž   é   r   z.select nondeterministic() = nondeterministic()rk   z>create index t on test(t) where nondeterministic() is not null)ÚunittestÚmockÚMockrc   rd   ra   Úsqlite_version_infore   ry   Ú
call_countrm   rn   ©r7   r¦   r   r   r   Útest_func_non_deterministic7  s   
"ÿz)FunctionTests.test_func_non_deterministicc                 C   s~   t jjd d}| jjdd|dd tjdk r%| j d¡ |  |j	d¡ d S z	| j d	¡ W d S  tj
y>   |  d
¡ Y d S w )Nr    r¢   r   Tr¡   r£   z(select deterministic() = deterministic()r:   z;create index t on test(t) where deterministic() is not nullz/Unexpected failure while creating partial index)r¥   r¦   r§   rc   rd   ra   r¨   re   ry   r©   rn   r   rª   r   r   r   Útest_func_deterministicB  s   
ÿz%FunctionTests.test_func_deterministiczSQLite < 3.8.3 neededc                 C   sF   |   tj¡ | jjddtdd W d   ƒ d S 1 sw   Y  d S )Nr¢   r   Tr¡   )rm   ra   ZNotSupportedErrorrc   rd   r$   r6   r   r   r   Ú%test_func_deterministic_not_supportedO  s   "ÿz3FunctionTests.test_func_deterministic_not_supportedc                 C   sB   |   t¡ | j ddtd¡ W d   ƒ d S 1 sw   Y  d S )Nr¢   r   T)rm   Ú	TypeErrorrc   rd   r$   r6   r   r   r   Ú$test_func_deterministic_keyword_onlyT  s   "ÿz2FunctionTests.test_func_deterministic_keyword_onlyc                 C   sL   t  d¡}dd„ }| dd|¡ |dƒ}~~|g}| |¡ ~~t ¡  d S )Nr^   c                 S   r   r   r   )Útr   r   r   Úmd5sum\  r   z=FunctionTests.test_function_destructor_via_gc.<locals>.md5sumÚmd5r:   z(create table lang (name, first_appeared))ra   rb   rd   ÚappendÚgcZcollect)r7   Údestr±   rB   Úyr   r   r   Útest_function_destructor_via_gcX  s   

z-FunctionTests.test_function_destructor_via_gcN)!r<   r=   r>   rf   rh   ro   ru   r{   r~   r   r€   r‚   rƒ   r„   r†   r‹   rŽ   r‘   r”   r•   r˜   rš   r›   r   r¥   ZskipIfra   r¨   r«   r¬   r­   r¯   r·   r   r   r   r   r]   ˜   s<    



r]   c                   @   s”   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#S )$ÚAggregateTestsc              	   C   sÎ   t  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 (?, ?, ?, ?, ?)r   r   r   r   Znostepr:   Z
nofinalizeZexcInitZexcStepZexcFinalizeZ	checkTyperk   Z
checkTypesr`   ZmysumZaggtxt)ra   rb   rc   rs   re   r,   Zcreate_aggregater5   r@   rE   rH   rI   rJ   rU   rW   rY   rœ   r   r   r   rf   j  s   

	ÿzAggregateTests.setUpc                 C   r   r   r   r6   r   r   r   rh   ƒ  s   zAggregateTests.tearDownc                 C   sB   |   tj¡ | j ddt¡ W d   ƒ d S 1 sw   Y  d S )Nri   rj   )rm   ra   rn   rc   rd   rW   r6   r   r   r   Útest_aggr_error_on_createˆ  s   "ÿz(AggregateTests.test_aggr_error_on_createc                 C   sT   | j  ¡ }|  t¡}| d¡ W d   ƒ n1 sw   Y  |  t|jƒd¡ d S )Nzselect nostep(t) from testz+'AggrNoStep' object has no attribute 'step')rc   rs   rm   ÚAttributeErrorre   ry   r    rˆ   r‰   r   r   r   Útest_aggr_no_stepŒ  s
   
ÿz AggregateTests.test_aggr_no_stepc                 C   ób   | j  ¡ }|  tj¡}| d¡ | ¡ d }W d   ƒ n1 s!w   Y  |  t|j	ƒd¡ d S )Nzselect nofinalize(t) from testr   ú7user-defined aggregate's 'finalize' method raised errorr‡   ©r7   rt   rŠ   rL   r   r   r   Útest_aggr_no_finalize’  ó   

þz$AggregateTests.test_aggr_no_finalizec                 C   r¼   )Nzselect excInit(t) from testr   z7user-defined aggregate's '__init__' method raised errorr‡   r¾   r   r   r   Útest_aggr_exception_in_init™  rÀ   z*AggregateTests.test_aggr_exception_in_initc                 C   r¼   )Nzselect excStep(t) from testr   z3user-defined aggregate's 'step' method raised errorr‡   r¾   r   r   r   Útest_aggr_exception_in_step   rÀ   z*AggregateTests.test_aggr_exception_in_stepc                 C   r¼   )Nzselect excFinalize(t) from testr   r½   r‡   r¾   r   r   r   Útest_aggr_exception_in_finalize§  rÀ   z.AggregateTests.test_aggr_exception_in_finalizec                 C   s8   | j  ¡ }| ddtƒ f¡ | ¡ d }|  |d¡ d S )Nzselect checkTypes('str', ?, ?)r   r   rk   )rc   rs   re   r    rx   ry   rz   r   r   r   Útest_aggr_check_param_str®  r™   z(AggregateTests.test_aggr_check_param_strc                 C   r   )Nzselect checkType('int', ?)r   r   r:   r…   rz   r   r   r   Útest_aggr_check_param_int´  r’   z(AggregateTests.test_aggr_check_param_intc                 C   r   )Nzselect checkTypes('int', ?, ?))r   é   r   rk   r…   rz   r   r   r   Útest_aggr_check_params_intº  r’   z)AggregateTests.test_aggr_check_params_intc                 C   r   )Nzselect checkType('float', ?)r“   r   r:   r…   rz   r   r   r   Útest_aggr_check_param_floatÀ  r’   z*AggregateTests.test_aggr_check_param_floatc                 C   r   )Nzselect checkType('None', ?)r   r   r:   r…   rz   r   r   r   Útest_aggr_check_param_noneÆ  r’   z)AggregateTests.test_aggr_check_param_nonec                 C   r–   )Nzselect checkType('blob', ?)r   r   r:   r—   rz   r   r   r   Útest_aggr_check_param_blobÌ  r™   z)AggregateTests.test_aggr_check_param_blobc                 C   sJ   | 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   é<   )rc   rs   re   Zexecutemanyrx   ry   rz   r   r   r   Útest_aggr_check_aggr_sumÒ  s   


z'AggregateTests.test_aggr_check_aggr_sumc                 C   s&   | j  d¡}| ¡ d }|  |¡ d S )Nz1select mysum(i) from (select 1 as i) where i == 0r   )rc   re   rx   ZassertIsNonerz   r   r   r   Útest_aggr_no_matchÚ  s   z!AggregateTests.test_aggr_no_matchc              	   C   sj   | j  ¡ }dD ]+}| j|d | d|f¡ | ¡ d }|  ||¡ W d   ƒ q1 s-w   Y  qd S )N)r   r   r[   zselect aggtxt(?) from testr   )rc   rs   r   re   rx   ry   )r7   rt   r\   rL   r   r   r   Útest_aggr_textß  s   
ýÿzAggregateTests.test_aggr_textN)r<   r=   r>   rf   rh   r¹   r»   r¿   rÁ   rÂ   rÃ   rÄ   rÅ   rÇ   rÈ   rÉ   rÊ   rÏ   rÐ   rÑ   r   r   r   r   r¸   i  s$    r¸   c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚAuthorizerTestsc                 C   s,   | t jkrt jS |dks|dkrt jS t jS ©NÚc2Út2)ra   ÚSQLITE_SELECTZSQLITE_DENYÚ	SQLITE_OK©ÚactionZarg1Zarg2ZdbnameÚsourcer   r   r   Úauthorizer_cbé  s
   
zAuthorizerTests.authorizer_cbc                 C   s6   t  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)ra   rb   rc   Zexecutescriptre   Zset_authorizerrÛ   r6   r   r   r   rf   ñ  s   zAuthorizerTests.setUpc                 C   r   r   r   r6   r   r   r   rh   ÿ  r   zAuthorizerTests.tearDownc                 C   óN   |   tj¡}| j d¡ W d   ƒ n1 sw   Y  |  dt|jƒ¡ d S )Nzselect * from t2Ú
prohibited©rm   ra   ZDatabaseErrorrc   re   ZassertInr    rˆ   ©r7   rŠ   r   r   r   Útest_table_access  ó   ÿz!AuthorizerTests.test_table_accessc                 C   rÜ   )Nzselect c2 from t1rÝ   rÞ   rß   r   r   r   Útest_column_access  rá   z"AuthorizerTests.test_column_accessN)	r<   r=   r>   ÚstaticmethodrÛ   rf   rh   rà   râ   r   r   r   r   rÒ   è  s    
rÒ   c                   @   ó   e Zd Zedd„ ƒZdS )ÚAuthorizerRaiseExceptionTestsc                 C   s(   | t jkrt‚|dks|dkrt‚t jS rÓ   )ra   rÖ   Ú
ValueErrorr×   rØ   r   r   r   rÛ     ó
   
z+AuthorizerRaiseExceptionTests.authorizer_cbN©r<   r=   r>   rã   rÛ   r   r   r   r   rå     ó    rå   c                   @   rä   )ÚAuthorizerIllegalTypeTestsc                 C   ó(   | t jkrdS |dks|dkrdS t jS )NrX   rÔ   rÕ   ©ra   rÖ   r×   rØ   r   r   r   rÛ     rç   z(AuthorizerIllegalTypeTests.authorizer_cbNrè   r   r   r   r   rê     ré   rê   c                   @   rä   )ÚAuthorizerLargeIntegerTestsc                 C   rë   )Nl        rÔ   rÕ   rì   rØ   r   r   r   rÛ     rç   z)AuthorizerLargeIntegerTests.authorizer_cbNrè   r   r   r   r   rí     ré   rí   c                  C   s$   t tttttg} t dd„ | D ƒ¡S )Nc                 S   s   g | ]	}t  ¡  |¡‘qS r   )r¥   Z
TestLoaderZloadTestsFromTestCase)Ú.0r°   r   r   r   Ú
<listcomp>2  s    zsuite.<locals>.<listcomp>)r¸   rê   rí   rå   rÒ   r]   r¥   Z	TestSuite)Ztestsr   r   r   Úsuite(  s   úÿrð   c                  C   s   t  ¡ } |  tƒ ¡ d S r   )r¥   ZTextTestRunnerÚrunrð   )Zrunnerr   r   r   Útest5  s   rò   Ú__main__)(r¥   Zunittest.mockr´   Zsqlite3ra   r   r	   r   r   r   r   r   r   r   r#   r%   r'   r(   r-   r/   r3   r5   r@   rE   rH   rI   rJ   rU   rW   rY   ZTestCaser]   r¸   rÒ   rå   rê   rí   rð   rò   r<   r   r   r   r   Ú<module>   sR   



	 R$		

ÿ