Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/sqlite3/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/sqlite3/test/__pycache__/dbapi.cpython-35.pyc



��Yf���
@s{ddlZddlZyddlZWnek
rBdZYnXddlmZmZGdd�dej�Z	Gdd�dej�Z
Gdd�dej�Zejed	�Gd
d�dej��Z
Gdd
�d
ej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Zdd�Zdd�Zedkrwe�dS)�N)�TESTFN�unlinkc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�ModuleTestscCs!|jtjddtj�dS)Nz2.0zapilevel is %s, should be 2.0)�assertEqual�sqliteZapilevel)�self�r�7/opt/alt/python35/lib64/python3.5/sqlite3/test/dbapi.py�
CheckAPILevel#szModuleTests.CheckAPILevelcCs!|jtjddtj�dS)N�zthreadsafety is %d, should be 1)rrZthreadsafety)rrrr	�CheckThreadSafety'szModuleTests.CheckThreadSafetycCs!|jtjddtj�dS)NZqmarkz%paramstyle is '%s', should be 'qmark')rrZ
paramstyle)rrrr	�CheckParamStyle+szModuleTests.CheckParamStylecCs |jttjt�d�dS)Nz&Warning is not a subclass of Exception)�
assertTrue�
issubclassr�Warning�	Exception)rrrr	�CheckWarning0szModuleTests.CheckWarningcCs |jttjt�d�dS)Nz$Error is not a subclass of Exception)rrr�Errorr)rrrr	�
CheckError4szModuleTests.CheckErrorcCs#|jttjtj�d�dS)Nz)InterfaceError is not a subclass of Error)rrr�InterfaceErrorr)rrrr	�CheckInterfaceError8szModuleTests.CheckInterfaceErrorcCs#|jttjtj�d�dS)Nz(DatabaseError is not a subclass of Error)rrr�
DatabaseErrorr)rrrr	�CheckDatabaseError<szModuleTests.CheckDatabaseErrorcCs#|jttjtj�d�dS)Nz,DataError is not a subclass of DatabaseError)rrr�	DataErrorr)rrrr	�CheckDataError@szModuleTests.CheckDataErrorcCs#|jttjtj�d�dS)Nz3OperationalError is not a subclass of DatabaseError)rrr�OperationalErrorr)rrrr	�CheckOperationalErrorDsz!ModuleTests.CheckOperationalErrorcCs#|jttjtj�d�dS)Nz1IntegrityError is not a subclass of DatabaseError)rrr�IntegrityErrorr)rrrr	�CheckIntegrityErrorHszModuleTests.CheckIntegrityErrorcCs#|jttjtj�d�dS)Nz0InternalError is not a subclass of DatabaseError)rrr�
InternalErrorr)rrrr	�CheckInternalErrorLszModuleTests.CheckInternalErrorcCs#|jttjtj�d�dS)Nz3ProgrammingError is not a subclass of DatabaseError)rrr�ProgrammingErrorr)rrrr	�CheckProgrammingErrorPsz!ModuleTests.CheckProgrammingErrorcCs#|jttjtj�d�dS)Nz4NotSupportedError is not a subclass of DatabaseError)rrr�NotSupportedErrorr)rrrr	�CheckNotSupportedErrorTs	z"ModuleTests.CheckNotSupportedErrorN)�__name__�
__module__�__qualname__r
rr
rrrrrrrr r"r$rrrr	r"src@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zejejd!kd�dd��Zd S)"�ConnectionTestscCsBtjd�|_|jj�}|jd�|jdd�dS)Nz:memory:z4create table test(id integer primary key, name text)z!insert into test(name) values (?)�foo)r))r�connect�cx�cursor�execute)r�currr	�setUp[s
zConnectionTests.setUpcCs|jj�dS)N)r+�close)rrrr	�tearDownaszConnectionTests.tearDowncCs|jj�dS)N)r+�commit)rrrr	�CheckCommitdszConnectionTests.CheckCommitcCs|jj�|jj�dS)zV
        A commit should also work when no changes were made to the database.
        N)r+r2)rrrr	�CheckCommitAfterNoChangesgs
z)ConnectionTests.CheckCommitAfterNoChangescCs|jj�dS)N)r+�rollback)rrrr	�
CheckRollbacknszConnectionTests.CheckRollbackcCs|jj�|jj�dS)zX
        A rollback should also work when no changes were made to the database.
        N)r+r5)rrrr	�CheckRollbackAfterNoChangesqs
z+ConnectionTests.CheckRollbackAfterNoChangescCs|jj�}dS)N)r+r,)rr.rrr	�CheckCursorxszConnectionTests.CheckCursorc	Cs3d}|jtj��tj|�}WdQRXdS)Nz/foo/bar/bla/23534/mydb.db)�assertRaisesrrr*)rZYOU_CANNOT_OPEN_THIS�conrrr	�CheckFailedOpen{szConnectionTests.CheckFailedOpencCs|jj�dS)N)r+r0)rrrr	�
CheckClose�szConnectionTests.CheckClosecCs�|j|jjtj�|j|jjtj�|j|jjtj�|j|jjtj�|j|jjtj�|j|jjtj�|j|jj	tj	�|j|jj
tj
�|j|jjtj�|j|jjtj�dS)N)
rr+rrrrrrrrrr!r#)rrrr	�CheckExceptions�szConnectionTests.CheckExceptionscCs�tjd�}|j�}|j|jd�|jd�|j|jd�|jdd�|j|jd�|jddg�|j�}|j|jd�|j�|j|jd�|jddg�|j�}|j|jd�dS)	Nz:memory:Fz?create table transactiontest(id integer primary key, name text)z,insert into transactiontest(name) values (?)r)Tz-select name from transactiontest where name=?)r))rr*r,r�in_transactionr-�fetchoner2)rr+r.�rowrrr	�CheckInTransaction�s

z"ConnectionTests.CheckInTransactionc	Cs'|jt��d|j_WdQRXdS)NT)r9�AttributeErrorr+r>)rrrr	�CheckInTransactionRO�sz$ConnectionTests.CheckInTransactionROc%Cs�tjdkr@|jtj��tjddd�WdQRXdS|jtt�tjt��}|jd�WdQRXtjdtdd��}|jd�WdQRXtjdtd	dd��.}|jtj	��|jd
�WdQRXWdQRXdS)N��z:memory:ZuriTzcreate table test(id integer)zfile:zinsert into test(id) values(0)z?mode=rozinsert into test(id) values(1))rDrErE)
r�sqlite_version_infor9r#r*Z
addCleanuprrr-r)rr+rrr	�CheckOpenUri�s zConnectionTests.CheckOpenUrirDrz&needs sqlite versions older than 3.3.1cCsL|jtj��}tjddd�WdQRX|jt|j�d�dS)Nz:memory:Zcheck_same_threadFz shared connections not available)r9rr#r*r�str�	exception)r�cmrrr	� CheckSameThreadErrorOnOldVersion�sz0ConnectionTests.CheckSameThreadErrorOnOldVersionN)rDrDr)r%r&r'r/r1r3r4r6r7r8r;r<r=rArCrG�unittestZskipIfrrFrKrrrr	r(Ys
r(c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_S)`�CursorTestscCsKtjd�|_|jj�|_|jjd�|jjdd�dS)Nz:memory:zCcreate table test(id integer primary key, name text, income number)z!insert into test(name) values (?)r))r))rr*r+r,r.r-)rrrr	r/�szCursorTests.setUpcCs|jj�|jj�dS)N)r.r0r+)rrrr	r1�s
zCursorTests.tearDowncCs|jjd�dS)Nzdelete from test)r.r-)rrrr	�CheckExecuteNoArgs�szCursorTests.CheckExecuteNoArgsc	Cs.|jtj��|jjd�WdQRXdS)Nzselect asdf)r9rrr.r-)rrrr	�CheckExecuteIllegalSql�sz"CursorTests.CheckExecuteIllegalSqlc	Cs.|jtj��|jjd�WdQRXdS)Nzselect 5+4; select 4+5)r9rrr.r-)rrrr	�CheckExecuteTooMuchSql�sz"CursorTests.CheckExecuteTooMuchSqlcCs|jjd�dS)Nzselect 5+4; -- foo bar)r.r-)rrrr	�CheckExecuteTooMuchSql2�sz#CursorTests.CheckExecuteTooMuchSql2cCs|jjd�dS)NzT
            select 5+4;

            /*
            foo
            */
            )r.r-)rrrr	�CheckExecuteTooMuchSql3�s	z#CursorTests.CheckExecuteTooMuchSql3c	Cs+|jt��|jjd�WdQRXdS)N�*)r9�
ValueErrorr.r-)rrrr	�CheckExecuteWrongSqlArg�sz#CursorTests.CheckExecuteWrongSqlArgcCs|jjdd�dS)Nzinsert into test(id) values (?)rS)rS)r.r-)rrrr	�CheckExecuteArgInt�szCursorTests.CheckExecuteArgIntcCs|jjdd�dS)Nz#insert into test(income) values (?)�q=
ף��@)rW)r.r-)rrrr	�CheckExecuteArgFloat�sz CursorTests.CheckExecuteArgFloatcCs|jjdd�dS)Nz!insert into test(name) values (?)�Hugo)rY)r.r-)rrrr	�CheckExecuteArgString�sz!CursorTests.CheckExecuteArgStringcCsV|jjdd�|jjd|jjf�|jj�}|j|dd�dS)Nz!insert into test(name) values (?)�Hugoz select name from test where id=?r)r[)r.r-Z	lastrowidr?r)rr@rrr	�!CheckExecuteArgStringWithZeroByte�sz-CursorTests.CheckExecuteArgStringWithZeroBytec
CsI|jt��}|jjdd�WdQRX|jt|j�d�dS)Nzinsert into test(id) values (?)rSz"parameters are of unsupported type)r9rTr.r-rrHrI)rrJrrr	�CheckExecuteNonIterable�sz#CursorTests.CheckExecuteNonIterablecCs1|jtj��|jjdd�WdQRXdS)Nzinsert into test(id) values (?)��Egon)r^r_)r9rr!r.r-)rrrr	�CheckExecuteWrongNoOfArgs1�sz&CursorTests.CheckExecuteWrongNoOfArgs1c	Cs.|jtj��|jjd�WdQRXdS)Nzinsert into test(id) values (?))r9rr!r.r-)rrrr	�CheckExecuteWrongNoOfArgs2�sz&CursorTests.CheckExecuteWrongNoOfArgs2c	Cs.|jtj��|jjd�WdQRXdS)Nzinsert into test(id) values (?))r9rr!r.r-)rrrr	�CheckExecuteWrongNoOfArgs3sz&CursorTests.CheckExecuteWrongNoOfArgs3cCsM|jjd�|jjddg�|jj�}|j|dd�dS)Nz%insert into test(name) values ('foo')z"select name from test where name=?r)r)r.r-r?r)rr@rrr	�CheckExecuteParamListsz!CursorTests.CheckExecuteParamListcCscGdd�dt�}|jjd�|jjd|��|jj�}|j|dd�dS)Nc@s(eZdZdd�Zdd�ZdS)z0CursorTests.CheckExecuteParamSequence.<locals>.LcSsdS)Nrr)rrrr	�__len__
sz8CursorTests.CheckExecuteParamSequence.<locals>.L.__len__cSs|dkst�dS)Nrr))�AssertionError)r�xrrr	�__getitem__sz<CursorTests.CheckExecuteParamSequence.<locals>.L.__getitem__N)r%r&r'rdrgrrrr	�Lsrhz%insert into test(name) values ('foo')z"select name from test where name=?rr))�objectr.r-r?r)rrhr@rrr	�CheckExecuteParamSequences
z%CursorTests.CheckExecuteParamSequencecCsP|jjd�|jjdddi�|jj�}|j|dd�dS)Nz%insert into test(name) values ('foo')z&select name from test where name=:name�namer)r)r.r-r?r)rr@rrr	�CheckExecuteDictMappingsz#CursorTests.CheckExecuteDictMappingcCscGdd�dt�}|jjd�|jjd|��|jj�}|j|dd�dS)Nc@seZdZdd�ZdS)z6CursorTests.CheckExecuteDictMapping_Mapping.<locals>.DcSsdS)Nr)r)r�keyrrr	�__missing__ szBCursorTests.CheckExecuteDictMapping_Mapping.<locals>.D.__missing__N)r%r&r'rnrrrr	�Dsroz%insert into test(name) values ('foo')z&select name from test where name=:namerr))�dictr.r-r?r)rror@rrr	�CheckExecuteDictMapping_Mappings
z+CursorTests.CheckExecuteDictMapping_MappingcCsG|jjd�|jtj��|jjdddi�WdQRXdS)Nz%insert into test(name) values ('foo')z1select name from test where name=:name and id=:idrkr))r.r-r9rr!)rrrr	�$CheckExecuteDictMappingTooLittleArgs(sz0CursorTests.CheckExecuteDictMappingTooLittleArgsc	Cs>|jjd�|jtj��|jjd�WdQRXdS)Nz%insert into test(name) values ('foo')z&select name from test where name=:name)r.r-r9rr!)rrrr	�CheckExecuteDictMappingNoArgs-sz)CursorTests.CheckExecuteDictMappingNoArgscCsG|jjd�|jtj��|jjdddi�WdQRXdS)Nz%insert into test(name) values ('foo')z"select name from test where name=?rkr))r.r-r9rr!)rrrr	�CheckExecuteDictMappingUnnamed2sz*CursorTests.CheckExecuteDictMappingUnnamedcCs|jj�dS)N)r.r0)rrrr	r<7szCursorTests.CheckClosecCsZ|jjd�|jjd�|jjd�|jjd�|j|jjd�dS)Nzdelete from testz%insert into test(name) values ('foo')zupdate test set name='bar'�)r.r-r�rowcount)rrrr	�CheckRowcountExecute:s
z CursorTests.CheckRowcountExecutecCs*|jjd�|j|jjd�dS)z�
        pysqlite does not know the rowcount of SELECT statements, because we
        don't fetch all rows after executing the select statement. The rowcount
        has thus to be -1.
        zselect 5 union select 6rN���)r.r-rrv)rrrr	�CheckRowcountSelectAszCursorTests.CheckRowcountSelectcCsF|jjd�|jjddddg�|j|jjd�dS)	Nzdelete from testz!insert into test(name) values (?)rrurD)r)ru)rD)r.r-�executemanyrrv)rrrr	�CheckRowcountExecutemanyJsz$CursorTests.CheckRowcountExecutemanycCs@|jjd�|jjd�|jd|jjdd�dS)Nz%insert into test(name) values ('foo')ru�msgz"total changes reported wrong value)r.r-Z
assertLessr+Z
total_changes)rrrr	�CheckTotalChangesOszCursorTests.CheckTotalChangescCs-|jjddd�tdd�D��dS)Nz#insert into test(income) values (?)cSsg|]}|f�qSrr)�.0rfrrr	�
<listcomp>Ys	z8CursorTests.CheckExecuteManySequence.<locals>.<listcomp>�d�n)r.rz�range)rrrr	�CheckExecuteManySequenceXsz$CursorTests.CheckExecuteManySequencecCs-Gdd�d�}|jjd|��dS)Nc@s(eZdZdd�Zdd�ZdS)z4CursorTests.CheckExecuteManyIterator.<locals>.MyItercSs
d|_dS)N�)�value)rrrr	�__init__]sz=CursorTests.CheckExecuteManyIterator.<locals>.MyIter.__init__cSs5|jdkrt�n|jd7_|jfSdS)N�
r)r��
StopIteration)rrrr	�__next__`s	z=CursorTests.CheckExecuteManyIterator.<locals>.MyIter.__next__N)r%r&r'r�r�rrrr	�MyIter\sr�z#insert into test(income) values (?))r.rz)rr�rrr	�CheckExecuteManyIterator[sz$CursorTests.CheckExecuteManyIteratorcCs&dd�}|jjd|��dS)Ncss#xtd�D]}|fVq
WdS)Nr�)r�)�irrr	�mygenjsz4CursorTests.CheckExecuteManyGenerator.<locals>.mygenz#insert into test(income) values (?))r.rz)rr�rrr	�CheckExecuteManyGeneratorisz%CursorTests.CheckExecuteManyGeneratorc
Cs1|jt��|jjddg�WdQRXdS)NrSrD)rD)r9rTr.rz)rrrr	�CheckExecuteManyWrongSqlArgpsz'CursorTests.CheckExecuteManyWrongSqlArgc
Cs4|jtj��|jjddg�WdQRXdS)Nzselect ?rD)rD)r9rr!r.rz)rrrr	�CheckExecuteManySelecttsz"CursorTests.CheckExecuteManySelectc
Cs.|jt��|jjdd�WdQRXdS)Nz#insert into test(income) values (?)rS)r9�	TypeErrorr.rz)rrrr	�CheckExecuteManyNotIterablexsz'CursorTests.CheckExecuteManyNotIterablecCs�|jjd�|jjdd�|jjdd	�|jjd�g}x"|jD]}|j|d�qVW|j|dd�|j|dd�dS)
Nzdelete from testzinsert into test(id) values (?)r��zselect id from test order by idrr)r�)r�)r.r-�appendr)rZlstr@rrr	�CheckFetchIter|szCursorTests.CheckFetchItercCsV|jjd�|jj�}|j|dd�|jj�}|j|d�dS)Nzselect name from testrr))r.r-r?r)rr@rrr	�
CheckFetchone�s
zCursorTests.CheckFetchonecCs/|jj�}|j�}|j|d�dS)N)r+r,r?r)r�curr@rrr	�CheckFetchoneNoStatement�sz$CursorTests.CheckFetchoneNoStatementcCs�|j|jjd�d|j_|jjd�|jjd�|jjd�|jjd�|jjd�|jj�}|jt|�d�dS)Nrruzdelete from testz#insert into test(name) values ('A')z#insert into test(name) values ('B')z#insert into test(name) values ('C')zselect name from test)rr.Z	arraysizer-�	fetchmany�len)r�resrrr	�CheckArraySize�szCursorTests.CheckArraySizecCs^|jjd�|jjd�}|jt|�d�|jjd�}|j|g�dS)Nzselect name from testr�r)r.r-r�rr�)rr�rrr	�CheckFetchmany�s
zCursorTests.CheckFetchmanycCs?|jjd�|jjdd�}|jt|�d�dS)z0Checks if fetchmany works with keyword argumentszselect name from test�sizer�rN)r.r-r�rr�)rr�rrr	�CheckFetchmanyKwArg�szCursorTests.CheckFetchmanyKwArgcCsX|jjd�|jj�}|jt|�d�|jj�}|j|g�dS)Nzselect name from testr)r.r-�fetchallrr�)rr�rrr	�
CheckFetchall�s
zCursorTests.CheckFetchallcCs|jjdddg�dS)NrD�r�)r.Z
setinputsizes)rrrr	�CheckSetinputsizes�szCursorTests.CheckSetinputsizescCs|jjdd�dS)Nr�r)r.�
setoutputsize)rrrr	�CheckSetoutputsize�szCursorTests.CheckSetoutputsizecCs|jjd�dS)NrS)r.r�)rrrr	�CheckSetoutputsizeNoColumn�sz&CursorTests.CheckSetoutputsizeNoColumncCs|j|jj|j�dS)N)rr.Z
connectionr+)rrrr	�CheckCursorConnection�sz!CursorTests.CheckCursorConnectionc	Cs9|jt��#dd�}|jj|�}WdQRXdS)NcSsdS)Nrrrrr	�f�sz/CursorTests.CheckWrongCursorCallable.<locals>.f)r9r�r+r,)rr�r�rrr	�CheckWrongCursorCallable�sz$CursorTests.CheckWrongCursorCallablec	CsFGdd�d�}|�}|jt��tj|�}WdQRXdS)Nc@seZdZdS)z.CursorTests.CheckCursorWrongClass.<locals>.FooN)r%r&r'rrrr	�Foo�sr�)r9r�rZCursor)rr�r)r�rrr	�CheckCursorWrongClass�s	z!CursorTests.CheckCursorWrongClassN)2r%r&r'r/r1rNrOrPrQrRrUrVrXrZr\r]r`rarbrcrjrlrqrrrsrtr<rwryr{r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	rM�s^	

		rMzThis test requires threading.c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�ThreadTestscCs8tjd�|_|jj�|_|jjd�dS)Nz:memory:z\create table test(id integer primary key, name text, bin binary, ratio number, ts timestamp))rr*r:r,r�r-)rrrr	r/�szThreadTests.setUpcCs|jj�|jj�dS)N)r�r0r:)rrrr	r1�s
zThreadTests.tearDowncCsydd�}g}tjd|dd|jd|i�}|j�|j�t|�dkru|jdj|��dS)	NcSsUy!|j�}|jd�dSWn-tjk
r<dSYn|jd�YnXdS)Nzdid not raise ProgrammingErrorzraised wrong exception)r,r�rr!)r:�errorsr�rrr	�run�s
z'ThreadTests.CheckConCursor.<locals>.run�target�kwargsr:r�r�
)�	threading�Threadr:�start�joinr��fail)rr�r��trrr	�CheckConCursor�s
'

zThreadTests.CheckConCursorcCsydd�}g}tjd|dd|jd|i�}|j�|j�t|�dkru|jdj|��dS)	NcSsSy|j�|jd�dSWn-tjk
r:dSYn|jd�YnXdS)Nzdid not raise ProgrammingErrorzraised wrong exception)r2r�rr!)r:r�rrr	r��s

z'ThreadTests.CheckConCommit.<locals>.runr�r�r:r�rr�)r�r�r:r�r�r�r�)rr�r�r�rrr	�CheckConCommit�s
'

zThreadTests.CheckConCommitcCsydd�}g}tjd|dd|jd|i�}|j�|j�t|�dkru|jdj|��dS)	NcSsSy|j�|jd�dSWn-tjk
r:dSYn|jd�YnXdS)Nzdid not raise ProgrammingErrorzraised wrong exception)r5r�rr!)r:r�rrr	r�s

z)ThreadTests.CheckConRollback.<locals>.runr�r�r:r�rr�)r�r�r:r�r�r�r�)rr�r�r�rrr	�CheckConRollbacks
'

zThreadTests.CheckConRollbackcCsydd�}g}tjd|dd|jd|i�}|j�|j�t|�dkru|jdj|��dS)	NcSsSy|j�|jd�dSWn-tjk
r:dSYn|jd�YnXdS)Nzdid not raise ProgrammingErrorzraised wrong exception)r0r�rr!)r:r�rrr	r�s

z&ThreadTests.CheckConClose.<locals>.runr�r�r:r�rr�)r�r�r:r�r�r�r�)rr�r�r�rrr	�
CheckConCloses
'

zThreadTests.CheckConClosecCsydd�}g}tjd|dd|jd|i�}|j�|j�t|�dkru|jdj|��dS)	NcSsVy"|jd�|jd�dSWn-tjk
r=dSYn|jd�YnXdS)Nz#insert into test(name) values ('a')zdid not raise ProgrammingErrorzraised wrong exception)r-r�rr!)r�r�rrr	r�%s

z.ThreadTests.CheckCurImplicitBegin.<locals>.runr�r�r�r�rr�)r�r�r�r�r�r�r�)rr�r�r�rrr	�CheckCurImplicitBegin$s
'

z!ThreadTests.CheckCurImplicitBegincCsydd�}g}tjd|dd|jd|i�}|j�|j�t|�dkru|jdj|��dS)	NcSsSy|j�|jd�dSWn-tjk
r:dSYn|jd�YnXdS)Nzdid not raise ProgrammingErrorzraised wrong exception)r0r�rr!)r�r�rrr	r�7s

z&ThreadTests.CheckCurClose.<locals>.runr�r�r�r�rr�)r�r�r�r�r�r�r�)rr�r�r�rrr	�
CheckCurClose6s
'

zThreadTests.CheckCurClosecCs�dd�}g}|jjd�tjd|dd|jd|i�}|j�|j�t|�dkr�|jd	j|��dS)
NcSsVy"|jd�|jd�dSWn-tjk
r=dSYn|jd�YnXdS)Nzselect name from testzdid not raise ProgrammingErrorzraised wrong exception)r-r�rr!)r�r�rrr	r�Is

z(ThreadTests.CheckCurExecute.<locals>.runz#insert into test(name) values ('a')r�r�r�r�rr�)r�r-r�r�r�r�r�r�)rr�r�r�rrr	�CheckCurExecuteHs
'

zThreadTests.CheckCurExecutecCs�dd�}g}|jjd�|jjd�tjd|dd|jd|i�}|j�|j�t|�d	kr�|jd
j|��dS)NcSsUy!|j�}|jd�dSWn-tjk
r<dSYn|jd�YnXdS)Nzdid not raise ProgrammingErrorzraised wrong exception)r?r�rr!)r�r�r@rrr	r�\s
z)ThreadTests.CheckCurIterNext.<locals>.runz#insert into test(name) values ('a')zselect name from testr�r�r�r�rr�)r�r-r�r�r�r�r�r�)rr�r�r�rrr	�CheckCurIterNext[s
'

zThreadTests.CheckCurIterNextN)
r%r&r'r/r1r�r�r�r�r�r�r�r�rrrr	r��sr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ConstructorTestscCstjddd�}dS)Ni�r��)rZDate)r�drrr	�	CheckDatepszConstructorTests.CheckDatecCstjddd�}dS)N��'�#)rZTime)rr�rrr	�	CheckTimesszConstructorTests.CheckTimecCs"tjdddddd�}dS)Ni�r�r�r�r�r�)rZ	Timestamp)r�tsrrr	�CheckTimestampvszConstructorTests.CheckTimestampcCstjd�}dS)NrS)rZ
DateFromTicks)rr�rrr	�CheckDateFromTicksysz#ConstructorTests.CheckDateFromTickscCstjd�}dS)NrS)rZ
TimeFromTicks)rr�rrr	�CheckTimeFromTicks|sz#ConstructorTests.CheckTimeFromTickscCstjd�}dS)NrS)rZTimestampFromTicks)rr�rrr	�CheckTimestampFromTickssz(ConstructorTests.CheckTimestampFromTickscCstjd�}dS)Ns')rZBinary)r�brrr	�CheckBinary�szConstructorTests.CheckBinaryN)
r%r&r'r�r�r�r�r�r�r�rrrr	r�osr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ExtensionTestscCsYtjd�}|j�}|jd�|jd�|j�d}|j|d�dS)Nz:memory:z�
            -- bla bla
            /* a stupid comment */
            create table a(i);
            insert into a(i) values (5);
            zselect i from arr�)rr*r,�
executescriptr-r?r)rr:r�r�rrr	�CheckScriptStringSql�s
z#ExtensionTests.CheckScriptStringSqlc	CsFtjd�}|j�}|jtj��|jd�WdQRXdS)Nz:memory:z1create table test(x); asdf; create table test2(x))rr*r,r9rr�)rr:r�rrr	�CheckScriptSyntaxError�sz%ExtensionTests.CheckScriptSyntaxErrorc	CsFtjd�}|j�}|jtj��|jd�WdQRXdS)Nz:memory:z5create table test(sadfsadfdsa); select foo from hurz;)rr*r,r9rr�)rr:r�rrr	�CheckScriptErrorNormal�sz%ExtensionTests.CheckScriptErrorNormalc
Cs^tjd�}|j�}|jt��}|jd�WdQRX|jt|j�d�dS)Nz:memory:s9create table test(foo); insert into test(foo) values (5);z script argument must be unicode.)	rr*r,r9rTr�rrHrI)rr:r�rJrrr	�CheckCursorExecutescriptAsBytes�s
z.ExtensionTests.CheckCursorExecutescriptAsBytescCs?tjd�}|jd�j�d}|j|dd�dS)Nz:memory:zselect 5rr�z Basic test of Connection.execute)rr*r-r?r)rr:�resultrrr	�CheckConnectionExecute�sz%ExtensionTests.CheckConnectionExecutecCs�tjd�}|jd�|jdd
dg�|jd�j�}|j|dddd�|j|d	ddd�dS)Nz:memory:zcreate table test(foo)z insert into test(foo) values (?)rDr�z!select foo from test order by foorz$Basic test of Connection.executemanyr)rD)r�)rr*r-rzr�r)rr:r�rrr	�CheckConnectionExecutemany�s
z)ExtensionTests.CheckConnectionExecutemanycCsLtjd�}|jd�|jd�j�d}|j|dd�dS)Nz:memory:z9create table test(foo); insert into test(foo) values (5);zselect foo from testrr�z&Basic test of Connection.executescript)rr*r�r-r?r)rr:r�rrr	�CheckConnectionExecutescript�s
z+ExtensionTests.CheckConnectionExecutescriptN)
r%r&r'r�r�r�r�r�r�r�rrrr	r��s
r�c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�ClosedConTestsc	CsCtjd�}|j�|jtj��|j�}WdQRXdS)Nz:memory:)rr*r0r9r!r,)rr:r�rrr	�CheckClosedConCursor�s
z#ClosedConTests.CheckClosedConCursorc	CsAtjd�}|j�|jtj��|j�WdQRXdS)Nz:memory:)rr*r0r9r!r2)rr:rrr	�CheckClosedConCommit�s
z#ClosedConTests.CheckClosedConCommitc	CsAtjd�}|j�|jtj��|j�WdQRXdS)Nz:memory:)rr*r0r9r!r5)rr:rrr	�CheckClosedConRollback�s
z%ClosedConTests.CheckClosedConRollbackc	CsPtjd�}|j�}|j�|jtj��|jd�WdQRXdS)Nz:memory:zselect 4)rr*r,r0r9r!r-)rr:r�rrr	�CheckClosedCurExecute�s

z$ClosedConTests.CheckClosedCurExecutecCsVtjd�}|j�dd�}|jtj��|jdd|�WdQRXdS)Nz:memory:cSsdS)Nr^r)rfrrr	r��sz3ClosedConTests.CheckClosedCreateFunction.<locals>.fr)r)rr*r0r9r!Zcreate_function)rr:r�rrr	�CheckClosedCreateFunction�s

z(ClosedConTests.CheckClosedCreateFunctioncCs]tjd�}|j�Gdd�d�}|jtj��|jdd|�WdQRXdS)Nz:memory:c@s4eZdZdd�Zdd�Zdd�ZdS)z6ClosedConTests.CheckClosedCreateAggregate.<locals>.AggcSsdS)Nr)rrrr	r��sz?ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.__init__cSsdS)Nr)rrfrrr	�step�sz;ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.stepcSsdS)Nr^r)rrrr	�finalize�sz?ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.finalizeN)r%r&r'r�r�r�rrrr	�Agg�sr�r)r)rr*r0r9r!Zcreate_aggregate)rr:r�rrr	�CheckClosedCreateAggregate�s

z)ClosedConTests.CheckClosedCreateAggregatec	CsPtjd�}|j�dd�}|jtj��|j|�WdQRXdS)Nz:memory:cWstjS)N)rZDENY)�argsrrr	�
authorizer�sz;ClosedConTests.CheckClosedSetAuthorizer.<locals>.authorizer)rr*r0r9r!Zset_authorizer)rr:r�rrr	�CheckClosedSetAuthorizer�s

z'ClosedConTests.CheckClosedSetAuthorizerc
CsStjd�}|j�dd�}|jtj��|j|d�WdQRXdS)Nz:memory:cSsdS)Nrrrrr	�progress�sz?ClosedConTests.CheckClosedSetProgressCallback.<locals>.progressr�)rr*r0r9r!Zset_progress_handler)rr:r�rrr	�CheckClosedSetProgressCallback�s

z-ClosedConTests.CheckClosedSetProgressCallbackc	Cs>tjd�}|j�|jtj��|�WdQRXdS)Nz:memory:)rr*r0r9r!)rr:rrr	�CheckClosedCall�s
zClosedConTests.CheckClosedCallN)r%r&r'r�r�r�r�r�r�r�r�r�rrrr	r��s
r�c@seZdZdd�ZdS)�ClosedCurTestscCs�tjd�}|j�}|j�x}dD]u}|d
krGd}n'|dkrhd	ddgf}ng}|jtj��t||�}||�WdQRXq,WdS)Nz:memory:r-rzr�r�r�r?�select 4 union select 5zinsert into foo(bar) values (?)rDr�)r-rzr�r�r�r?)r-r�)r�)rD)r�)rr*r,r0r9r!�getattr)rr:r�Zmethod_nameZparams�methodrrr	�CheckClosed�s

	zClosedCurTests.CheckClosedN)r%r&r'r�rrrr	r��sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�SqliteOnConflictTestszz
    Tests for SQLite's "insert on conflict" feature.

    See https://www.sqlite.org/lang_conflict.html for details.
    cCs8tjd�|_|jj�|_|jjd�dS)Nz:memory:zz
          CREATE TABLE test(
            id INTEGER PRIMARY KEY, name TEXT, unique_name TEXT UNIQUE
          );
        )rr*r+r,r.r-)rrrr	r/s	zSqliteOnConflictTests.setUpcCs|jj�|jj�dS)N)r.r0r+)rrrr	r1s
zSqliteOnConflictTests.tearDownc
Cs�d|j_|jj�|_|jjd�|jjd�|jjd�|jtj��|jjd�WdQRX|jj�|jjd�|j	|jj
�g�dS)N�BEGINz,INSERT INTO test(name) VALUES ('abort_test')z8INSERT OR ROLLBACK INTO test(unique_name) VALUES ('foo')z"SELECT name, unique_name from test)r+�isolation_levelr,r.r-r9rrr2rr�)rrrr	�.CheckOnConflictRollbackWithExplicitTransaction#s
zDSqliteOnConflictTests.CheckOnConflictRollbackWithExplicitTransactioncCs�d|j_|jj�|_|jjd�|jjd�|jjd�|jtj��|jjd�WdQRX|jj�|jjd�|j	|jj
�ddg�dS)	Nr�z,INSERT INTO test(name) VALUES ('abort_test')z5INSERT OR ABORT INTO test(unique_name) VALUES ('foo')z"SELECT name, unique_name FROM test�
abort_testr))r�N)Nr))r+r�r,r.r-r9rrr2rr�)rrrr	�2CheckOnConflictAbortRaisesWithExplicitTransactions2s
zHSqliteOnConflictTests.CheckOnConflictAbortRaisesWithExplicitTransactionsc
Csw|jjd�|jjd�|jtj��|jjd�WdQRX|jjd�|j|jj�g�dS)Nz,INSERT INTO test(name) VALUES ('abort_test')z8INSERT OR ROLLBACK INTO test(unique_name) VALUES ('foo')z"SELECT name, unique_name FROM test)r.r-r9rrrr�)rrrr	�)CheckOnConflictRollbackWithoutTransactionBsz?SqliteOnConflictTests.CheckOnConflictRollbackWithoutTransactioncCs}|jjd�|jjd�|jtj��|jjd�WdQRX|jjd�|j|jj�ddg�dS)Nz,INSERT INTO test(name) VALUES ('abort_test')z5INSERT OR ABORT INTO test(unique_name) VALUES ('foo')z"SELECT name, unique_name FROM testr�r))r�N)Nr))r.r-r9rrrr�)rrrr	�-CheckOnConflictAbortRaisesWithoutTransactionsLszCSqliteOnConflictTests.CheckOnConflictAbortRaisesWithoutTransactionsc
CsW|jjd�|jtj��|jjd�WdQRX|j|jj�g�dS)Nz4INSERT OR FAIL INTO test(unique_name) VALUES ('foo'))r.r-r9rrrr�)rrrr	�CheckOnConflictFailWsz)SqliteOnConflictTests.CheckOnConflictFailcCsP|jjd�|jjd�|jjd�|j|jj�dg�dS)Nz6INSERT OR IGNORE INTO test(unique_name) VALUES ('foo')zSELECT unique_name FROM testr))r))r.r-rr�)rrrr	�CheckOnConflictIgnore]sz+SqliteOnConflictTests.CheckOnConflictIgnorecCsP|jjd�|jjd�|jjd�|j|jj�dg�dS)NzFINSERT OR REPLACE INTO test(name, unique_name) VALUES ('Data!', 'foo')zUINSERT OR REPLACE INTO test(name, unique_name) VALUES ('Very different data!', 'foo')z"SELECT name, unique_name FROM test�Very different data!r))r�r))r.r-rr�)rrrr	�CheckOnConflictReplacedsz,SqliteOnConflictTests.CheckOnConflictReplaceN)
r%r&r'�__doc__r/r1r�r�r�r�r�r�r�rrrr	r�s	
r�c	
Cs�tjtd�}tjtd�}tjtd�}tjtd�}tjtd�}tjtd�}tjtd�}tjt	d�}tjt
d�}tj|||||||||f	�S)NZCheck)rLZ	makeSuiterr(rMr�r�r�r�r�r�Z	TestSuite)	Zmodule_suiteZconnection_suiteZcursor_suiteZthread_suiteZconstructor_suiteZ	ext_suiteZclosed_con_suiteZclosed_cur_suiteZon_conflict_suiterrr	�suitelsr�cCs tj�}|jt��dS)N)rLZTextTestRunnerr�r�)Zrunnerrrr	�test|sr��__main__)rLZsqlite3rr��ImportErrorZtest.supportrrZTestCaserr(rMZ
skipUnlessr�r�r�r�r�r�r�r�r%rrrr	�<module>s*
7b��4C]