B
    18™\;  ã               @   s‚  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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 d.d/„ d/ƒZG d0d1„ d1e jƒZG d2d3„ d3e jƒZG d4d5„ d5e jƒZG d6d7„ d7eƒZG d8d9„ d9eƒZG d:d;„ d;eƒZ d<d=„ Z!d>d?„ Z"e#d@kr~e"ƒ  dS )Aé    Nc               C   s   dS )NÚfoo© r   r   r   ú^/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/sqlite3/test/userfunctions.pyÚfunc_returntext   s    r   c               C   s   dS )NÚbarr   r   r   r   r   Úfunc_returnunicode   s    r   c               C   s   dS )Né*   r   r   r   r   r   Úfunc_returnint    s    r	   c               C   s   dS )Ng…ëQ¸	@r   r   r   r   r   Úfunc_returnfloat"   s    r
   c               C   s   d S )Nr   r   r   r   r   Úfunc_returnnull$   s    r   c               C   s   dS )Ns   blobr   r   r   r   r   Úfunc_returnblob&   s    r   c               C   s   dS )Nl        r   r   r   r   r   Úfunc_returnlonglong(   s    r   c               C   s   dd  d S )Né   r   r   r   r   r   r   Úfunc_raiseexception*   s    r   c             C   s   t | ƒtkS )N)ÚtypeÚstr)Úvr   r   r   Úfunc_isstring-   s    r   c             C   s   t | ƒtkS )N)r   Úint)r   r   r   r   Ú
func_isint/   s    r   c             C   s   t | ƒtkS )N)r   Úfloat)r   r   r   r   Úfunc_isfloat1   s    r   c             C   s   t | ƒt d ƒkS )N)r   )r   r   r   r   Úfunc_isnone3   s    r   c             C   s   t | ttfƒS )N)Ú
isinstanceÚbytesÚ
memoryview)r   r   r   r   Úfunc_isblob5   s    r   c             C   s   t | tƒo| dkS )Nl        )r   r   )r   r   r   r   Úfunc_islonglong7   s    r   c              G   s   t | ƒS )N)Úlen)Úargsr   r   r   Úfunc:   s    r    c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú
AggrNoStepc             C   s   d S )Nr   )Úselfr   r   r   Ú__init__>   s    zAggrNoStep.__init__c             C   s   dS )Né   r   )r"   r   r   r   ÚfinalizeA   s    zAggrNoStep.finalizeN)Ú__name__Ú
__module__Ú__qualname__r#   r%   r   r   r   r   r!   =   s   r!   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚAggrNoFinalizec             C   s   d S )Nr   )r"   r   r   r   r#   E   s    zAggrNoFinalize.__init__c             C   s   d S )Nr   )r"   Úxr   r   r   ÚstepH   s    zAggrNoFinalize.stepN)r&   r'   r(   r#   r+   r   r   r   r   r)   D   s   r)   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚAggrExceptionInInitc             C   s   dd  d S )Nr   r   r   )r"   r   r   r   r#   L   s    zAggrExceptionInInit.__init__c             C   s   d S )Nr   )r"   r*   r   r   r   r+   O   s    zAggrExceptionInInit.stepc             C   s   d S )Nr   )r"   r   r   r   r%   R   s    zAggrExceptionInInit.finalizeN)r&   r'   r(   r#   r+   r%   r   r   r   r   r,   K   s   r,   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚAggrExceptionInStepc             C   s   d S )Nr   )r"   r   r   r   r#   V   s    zAggrExceptionInStep.__init__c             C   s   dd  d S )Nr   r   r   )r"   r*   r   r   r   r+   Y   s    zAggrExceptionInStep.stepc             C   s   dS )Nr   r   )r"   r   r   r   r%   \   s    zAggrExceptionInStep.finalizeN)r&   r'   r(   r#   r+   r%   r   r   r   r   r-   U   s   r-   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚAggrExceptionInFinalizec             C   s   d S )Nr   )r"   r   r   r   r#   `   s    z AggrExceptionInFinalize.__init__c             C   s   d S )Nr   )r"   r*   r   r   r   r+   c   s    zAggrExceptionInFinalize.stepc             C   s   dd  d S )Nr   r   r   )r"   r   r   r   r%   f   s    z AggrExceptionInFinalize.finalizeN)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S )ÚAggrCheckTypec             C   s
   d | _ d S )N)Úval)r"   r   r   r   r#   j   s    zAggrCheckType.__init__c             C   s.   t tttd ƒtdœ}t|| t|ƒkƒ| _d S )N)r   r   r   ÚNoneÚblob)r   r   r   r   r   r0   )r"   Ú	whichTyper0   ÚtheTyper   r   r   r+   m   s    zAggrCheckType.stepc             C   s   | j S )N)r0   )r"   r   r   r   r%   r   s    zAggrCheckType.finalizeN)r&   r'   r(   r#   r+   r%   r   r   r   r   r/   i   s   r/   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚAggrCheckTypesc             C   s
   d| _ d S )Nr   )r0   )r"   r   r   r   r#   v   s    zAggrCheckTypes.__init__c             G   sD   t tttd ƒtdœ}x*|D ]"}|  jt|| t|ƒkƒ7  _qW d S )N)r   r   r   r1   r2   )r   r   r   r   r   r0   )r"   r3   Úvalsr4   r0   r   r   r   r+   y   s    
zAggrCheckTypes.stepc             C   s   | j S )N)r0   )r"   r   r   r   r%      s    zAggrCheckTypes.finalizeN)r&   r'   r(   r#   r+   r%   r   r   r   r   r5   u   s   r5   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚAggrSumc             C   s
   d| _ d S )Ng        )r0   )r"   r   r   r   r#   ƒ   s    zAggrSum.__init__c             C   s   |  j |7  _ d S )N)r0   )r"   r0   r   r   r   r+   †   s    zAggrSum.stepc             C   s   | j S )N)r0   )r"   r   r   r   r%   ‰   s    zAggrSum.finalizeN)r&   r'   r(   r#   r+   r%   r   r   r   r   r7   ‚   s   r7   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'S )(Ú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¡ d S )Nz:memory:Z
returntextr   ZreturnunicodeZ	returnintZreturnfloatZ
returnnullZ
returnblobZreturnlonglongZraiseexceptionÚisstringr$   ZisintZisfloatZisnoneZisblobZ
islonglongZspaméÿÿÿÿ)ÚsqliteÚconnectÚconÚcreate_functionr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r    )r"   r   r   r   ÚsetUp   s     zFunctionTests.setUpc             C   s   | j  ¡  d S )N)r=   Úclose)r"   r   r   r   ÚtearDown¡   s    zFunctionTests.tearDownc          	   C   s0   |   tj¡ | j dddd„ ¡ W d Q R X d S )NÚblaiœÿÿÿc             S   s   d|  S )Né   r   )r*   r   r   r   Ú<lambda>¦   ó    z6FunctionTests.CheckFuncErrorOnCreate.<locals>.<lambda>)ÚassertRaisesr;   ÚOperationalErrorr=   r>   )r"   r   r   r   ÚCheckFuncErrorOnCreate¤   s    z$FunctionTests.CheckFuncErrorOnCreatec             C   s@   dd„ }|ƒ }|t ƒ d< | j dd|¡ | j ¡ }| d¡ d S )Nc              S   s   dd„ } | S )Nc               S   s   dS )Nr$   r   r   r   r   r   Úfª   s    z;FunctionTests.CheckFuncRefCount.<locals>.getfunc.<locals>.fr   )rI   r   r   r   Úgetfunc©   s    z0FunctionTests.CheckFuncRefCount.<locals>.getfuncr   Zreftestr   zselect reftest())Úglobalsr=   r>   ÚcursorÚexecute)r"   rJ   rI   Úcurr   r   r   ÚCheckFuncRefCount¨   s    

zFunctionTests.CheckFuncRefCountc             C   s@   | j  ¡ }| d¡ | ¡ d }|  t|ƒt¡ |  |d¡ d S )Nzselect returntext()r   r   )r=   rL   rM   ÚfetchoneÚassertEqualr   r   )r"   rN   r0   r   r   r   ÚCheckFuncReturnText´   s
    

z!FunctionTests.CheckFuncReturnTextc             C   s@   | j  ¡ }| d¡ | ¡ d }|  t|ƒt¡ |  |d¡ d S )Nzselect returnunicode()r   r   )r=   rL   rM   rP   rQ   r   r   )r"   rN   r0   r   r   r   ÚCheckFuncReturnUnicode»   s
    

z$FunctionTests.CheckFuncReturnUnicodec             C   s@   | j  ¡ }| d¡ | ¡ d }|  t|ƒt¡ |  |d¡ d S )Nzselect returnint()r   r   )r=   rL   rM   rP   rQ   r   r   )r"   rN   r0   r   r   r   ÚCheckFuncReturnIntÂ   s
    

z FunctionTests.CheckFuncReturnIntc             C   sN   | j  ¡ }| d¡ | ¡ d }|  t|ƒt¡ |dk s@|dkrJ|  d¡ d S )Nzselect returnfloat()r   gé&1¬	@gTã¥›Ä 	@zwrong value)r=   rL   rM   rP   rQ   r   r   Úfail)r"   rN   r0   r   r   r   ÚCheckFuncReturnFloatÉ   s    

z"FunctionTests.CheckFuncReturnFloatc             C   sD   | j  ¡ }| d¡ | ¡ d }|  t|ƒtd ƒ¡ |  |d ¡ d S )Nzselect returnnull()r   )r=   rL   rM   rP   rQ   r   )r"   rN   r0   r   r   r   ÚCheckFuncReturnNullÑ   s
    

z!FunctionTests.CheckFuncReturnNullc             C   s@   | j  ¡ }| d¡ | ¡ d }|  t|ƒt¡ |  |d¡ d S )Nzselect returnblob()r   s   blob)r=   rL   rM   rP   rQ   r   r   )r"   rN   r0   r   r   r   ÚCheckFuncReturnBlobØ   s
    

z!FunctionTests.CheckFuncReturnBlobc             C   s0   | j  ¡ }| d¡ | ¡ d }|  |d¡ d S )Nzselect returnlonglong()r   l        )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckFuncReturnLongLongß   s    

z%FunctionTests.CheckFuncReturnLongLongc          	   C   sJ   | j  ¡ }|  tj¡}| d¡ | ¡  W d Q R X |  t|j	ƒd¡ d S )Nzselect raiseexception()z&user-defined function raised exception)
r=   rL   rF   r;   rG   rM   rP   rQ   r   Ú	exception)r"   rN   Úcmr   r   r   ÚCheckFuncExceptionå   s
    

z FunctionTests.CheckFuncExceptionc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect isstring(?))r   r   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckParamStringì   s    
zFunctionTests.CheckParamStringc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect isint(?))r   r   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckParamIntò   s    
zFunctionTests.CheckParamIntc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect isfloat(?))g…ëQ¸	@r   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckParamFloatø   s    
zFunctionTests.CheckParamFloatc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect isnone(?))Nr   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckParamNoneþ   s    
zFunctionTests.CheckParamNonec             C   s8   | j  ¡ }| dtdƒf¡ | ¡ d }|  |d¡ d S )Nzselect isblob(?)s   blobr   r$   )r=   rL   rM   r   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckParamBlob  s    
zFunctionTests.CheckParamBlobc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect islonglong(?))l        r   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckParamLongLong
  s    
z FunctionTests.CheckParamLongLongc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect spam(?, ?))r$   rC   r   rC   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckAnyArguments  s    
zFunctionTests.CheckAnyArgumentsN)r&   r'   r(   r?   rA   rH   rO   rR   rS   rT   rV   rW   rX   rY   r\   r]   r^   r_   r`   ra   rb   rc   r   r   r   r   r8   Œ   s&   r8   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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¡ d S )Nz:memory:z´
            create table test(
                t text,
                i integer,
                f float,
                n,
                b blob
                )
            z6insert into test(t, i, f, n, b) values (?, ?, ?, ?, ?)r   r   g…ëQ¸	@s   blobZnostepr$   Z
nofinalizeZexcInitZexcStepZexcFinalizeZ	checkTyperC   Z
checkTypesr:   Zmysum)r;   r<   r=   rL   rM   r   Úcreate_aggregater!   r)   r,   r-   r.   r/   r5   r7   )r"   rN   r   r   r   r?     s    
zAggregateTests.setUpc             C   s   d S )Nr   )r"   r   r   r   rA   0  s    zAggregateTests.tearDownc          	   C   s,   |   tj¡ | j ddt¡ W d Q R X d S )NrB   iœÿÿÿ)rF   r;   rG   r=   r>   r7   )r"   r   r   r   ÚCheckAggrErrorOnCreate5  s    z%AggregateTests.CheckAggrErrorOnCreatec          	   C   s@   | j  ¡ }|  t¡}| d¡ W d Q R X |  t|jƒd¡ d S )Nzselect nostep(t) from testz+'AggrNoStep' object has no attribute 'step')r=   rL   rF   ÚAttributeErrorrM   rQ   r   rZ   )r"   rN   r[   r   r   r   ÚCheckAggrNoStep9  s    
zAggregateTests.CheckAggrNoStepc          	   C   sN   | j  ¡ }|  tj¡}| d¡ | ¡ d }W d Q R X |  t|j	ƒd¡ d S )Nzselect nofinalize(t) from testr   z7user-defined aggregate's 'finalize' method raised error)
r=   rL   rF   r;   rG   rM   rP   rQ   r   rZ   )r"   rN   r[   r0   r   r   r   ÚCheckAggrNoFinalize?  s
    

z"AggregateTests.CheckAggrNoFinalizec          	   C   sN   | j  ¡ }|  tj¡}| d¡ | ¡ d }W d Q R X |  t|j	ƒd¡ d S )Nzselect excInit(t) from testr   z7user-defined aggregate's '__init__' method raised error)
r=   rL   rF   r;   rG   rM   rP   rQ   r   rZ   )r"   rN   r[   r0   r   r   r   ÚCheckAggrExceptionInInitF  s
    

z'AggregateTests.CheckAggrExceptionInInitc          	   C   sN   | j  ¡ }|  tj¡}| d¡ | ¡ d }W d Q R X |  t|j	ƒd¡ d S )Nzselect excStep(t) from testr   z3user-defined aggregate's 'step' method raised error)
r=   rL   rF   r;   rG   rM   rP   rQ   r   rZ   )r"   rN   r[   r0   r   r   r   ÚCheckAggrExceptionInStepM  s
    

z'AggregateTests.CheckAggrExceptionInStepc          	   C   sN   | j  ¡ }|  tj¡}| d¡ | ¡ d }W d Q R X |  t|j	ƒd¡ d S )Nzselect excFinalize(t) from testr   z7user-defined aggregate's 'finalize' method raised error)
r=   rL   rF   r;   rG   rM   rP   rQ   r   rZ   )r"   rN   r[   r0   r   r   r   ÚCheckAggrExceptionInFinalizeT  s
    

z+AggregateTests.CheckAggrExceptionInFinalizec             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect checkType('str', ?))r   r   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckAggrCheckParamStr[  s    
z%AggregateTests.CheckAggrCheckParamStrc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect checkType('int', ?))r   r   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckAggrCheckParamInta  s    
z%AggregateTests.CheckAggrCheckParamIntc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect checkTypes('int', ?, ?))r   é   r   rC   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckAggrCheckParamsIntg  s    
z&AggregateTests.CheckAggrCheckParamsIntc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect checkType('float', ?))g…ëQ¸	@r   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckAggrCheckParamFloatm  s    
z'AggregateTests.CheckAggrCheckParamFloatc             C   s2   | j  ¡ }| dd¡ | ¡ d }|  |d¡ d S )Nzselect checkType('None', ?))Nr   r$   )r=   rL   rM   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckAggrCheckParamNones  s    
z&AggregateTests.CheckAggrCheckParamNonec             C   s8   | j  ¡ }| dtdƒf¡ | ¡ d }|  |d¡ d S )Nzselect checkType('blob', ?)s   blobr   r$   )r=   rL   rM   r   rP   rQ   )r"   rN   r0   r   r   r   ÚCheckAggrCheckParamBloby  s    
z&AggregateTests.CheckAggrCheckParamBlobc             C   sL   | j  ¡ }| d¡ | ddddg¡ | d¡ | ¡ d }|  |d¡ d S )	Nzdelete from testzinsert into test(i) values (?))é
   )é   )é   zselect mysum(i) from testr   é<   )r=   rL   rM   ÚexecutemanyrP   rQ   )r"   rN   r0   r   r   r   ÚCheckAggrCheckAggrSum  s    


z$AggregateTests.CheckAggrCheckAggrSumN)r&   r'   r(   r?   rA   rf   rh   ri   rj   rk   rl   rm   rn   rp   rq   rr   rs   ry   r   r   r   r   rd     s   rd   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)r;   ÚSQLITE_SELECTÚSQLITE_DENYÚ	SQLITE_OK)ÚactionÚarg1Úarg2ÚdbnameÚsourcer   r   r   Úauthorizer_cbˆ  s
    
zAuthorizerTests.authorizer_cbc             C   s6   t  d¡| _| j d¡ | j d¡ | j | j¡ d S )Nz:memory: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=   ÚexecutescriptrM   Úset_authorizerr…   )r"   r   r   r   r?     s
    zAuthorizerTests.setUpc             C   s   d S )Nr   )r"   r   r   r   rA   ž  s    zAuthorizerTests.tearDownc          	   C   s:   |   tj¡}| j d¡ W d Q R X |  dt|jƒ¡ d S )Nzselect * from t2Ú
prohibited)rF   r;   ÚDatabaseErrorr=   rM   ÚassertInr   rZ   )r"   r[   r   r   r   Útest_table_access¡  s    z!AuthorizerTests.test_table_accessc          	   C   s:   |   tj¡}| j d¡ W d Q R X |  dt|jƒ¡ d S )Nzselect c2 from t1rˆ   )rF   r;   r‰   r=   rM   rŠ   r   rZ   )r"   r[   r   r   r   Útest_column_access¦  s    z"AuthorizerTests.test_column_accessN)	r&   r'   r(   Ústaticmethodr…   r?   rA   r‹   rŒ   r   r   r   r   rz   ‡  s
   rz   c               @   s   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 )Nr{   r|   )r;   r}   Ú
ValueErrorr   )r€   r   r‚   rƒ   r„   r   r   r   r…   ¬  s
    
z+AuthorizerRaiseExceptionTests.authorizer_cbN)r&   r'   r(   r   r…   r   r   r   r   rŽ   «  s   rŽ   c               @   s   e Zd Zedd„ ƒZdS )ÚAuthorizerIllegalTypeTestsc             C   s(   | t jkrdS |dks|dkr"dS t jS )Ng        r{   r|   )r;   r}   r   )r€   r   r‚   rƒ   r„   r   r   r   r…   µ  s
    
z(AuthorizerIllegalTypeTests.authorizer_cbN)r&   r'   r(   r   r…   r   r   r   r   r   ´  s   r   c               @   s   e Zd Zedd„ ƒZdS )ÚAuthorizerLargeIntegerTestsc             C   s(   | t jkrdS |dks|dkr"dS t jS )Nl        r{   r|   )r;   r}   r   )r€   r   r‚   rƒ   r„   r   r   r   r…   ¾  s
    
z)AuthorizerLargeIntegerTests.authorizer_cbN)r&   r'   r(   r   r…   r   r   r   r   r‘   ½  s   r‘   c           
   C   sJ   t  td¡} t  td¡}t  t¡}t  | ||t  t¡t  t¡t  t¡f¡S )NÚCheck)	ÚunittestÚ	makeSuiter8   rd   rz   Ú	TestSuiterŽ   r   r‘   )Zfunction_suiteZaggregate_suiteZauthorizer_suiter   r   r   ÚsuiteÇ  s    
r–   c              C   s   t  ¡ } |  tƒ ¡ d S )N)r“   ÚTextTestRunnerÚrunr–   )Úrunnerr   r   r   ÚtestÔ  s    rš   Ú__main__)$r“   Úsqlite3r;   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r    r!   r)   r,   r-   r.   r/   r5   r7   ÚTestCaser8   rd   rz   rŽ   r   r‘   r–   rš   r&   r   r   r   r   Ú<module>   sF   



 p$		

