B –@H9<¬Vã@s‚ddlZddlZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZGd d!„d!ƒZGd"d#„d#ƒZGd$d%„d%ƒZGd&d'„d'ƒZGd(d)„d)ƒZGd*d+„d+ƒZGd,d-„d-ƒZGd.d/„d/ƒZGd0d1„d1ejƒZGd2d3„d3ejƒZGd4d5„d5ejƒZGd6d7„d7eƒZGd8d9„d9eƒZGd:d;„d;eƒZ dd?„Z"e#d@kr~e"ƒdS)AéNcCsdS)NÚfoo©rrrú?/opt/alt/python37/lib64/python3.7/sqlite3/test/userfunctions.pyÚfunc_returntextsrcCsdS)NÚbarrrrrrÚfunc_returnunicodesrcCsdS)Né*rrrrrÚfunc_returnint sr cCsdS)Ng…ëQ¸ @rrrrrÚfunc_returnfloat"sr cCsdS)NrrrrrÚfunc_returnnull$sr cCsdS)NsblobrrrrrÚfunc_returnblob&sr cCsdS)NlrrrrrÚfunc_returnlonglong(sr cCs dddS)NérrrrrrÚfunc_raiseexception*srcCs t|ƒtkS)N)ÚtypeÚstr)ÚvrrrÚ func_isstring-srcCs t|ƒtkS)N)rÚint)rrrrÚ func_isint/srcCs t|ƒtkS)N)rÚfloat)rrrrÚ func_isfloat1srcCst|ƒtdƒkS)N)r)rrrrÚ func_isnone3srcCst|ttfƒS)N)Ú isinstanceÚbytesÚ memoryview)rrrrÚ func_isblob5srcCst|tƒo|dkS)Nl)rr)rrrrÚfunc_islonglong7srcGst|ƒS)N)Úlen)ÚargsrrrÚfunc:sr c@seZdZdd„Zdd„ZdS)Ú AggrNoStepcCsdS)Nr)ÚselfrrrÚ__init__>szAggrNoStep.__init__cCsdS)Nér)r"rrrÚfinalizeAszAggrNoStep.finalizeN)Ú__name__Ú __module__Ú __qualname__r#r%rrrrr!=sr!c@seZdZdd„Zdd„ZdS)ÚAggrNoFinalizecCsdS)Nr)r"rrrr#EszAggrNoFinalize.__init__cCsdS)Nr)r"ÚxrrrÚstepHszAggrNoFinalize.stepN)r&r'r(r#r+rrrrr)Dsr)c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInInitcCs dddS)Nrrr)r"rrrr#LszAggrExceptionInInit.__init__cCsdS)Nr)r"r*rrrr+OszAggrExceptionInInit.stepcCsdS)Nr)r"rrrr%RszAggrExceptionInInit.finalizeN)r&r'r(r#r+r%rrrrr,Ksr,c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInStepcCsdS)Nr)r"rrrr#VszAggrExceptionInStep.__init__cCs dddS)Nrrr)r"r*rrrr+YszAggrExceptionInStep.stepcCsdS)Nrr)r"rrrr%\szAggrExceptionInStep.finalizeN)r&r'r(r#r+r%rrrrr-Usr-c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInFinalizecCsdS)Nr)r"rrrr#`sz AggrExceptionInFinalize.__init__cCsdS)Nr)r"r*rrrr+cszAggrExceptionInFinalize.stepcCs dddS)Nrrr)r"rrrr%fsz AggrExceptionInFinalize.finalizeN)r&r'r(r#r+r%rrrrr._sr.c@s$eZdZdd„Zdd„Zdd„ZdS)Ú AggrCheckTypecCs d|_dS)N)Úval)r"rrrr#jszAggrCheckType.__init__cCs.ttttdƒtdœ}t||t|ƒkƒ|_dS)N)rrrÚNoneÚblob)rrrrrr0)r"Ú whichTyper0ÚtheTyperrrr+ms zAggrCheckType.stepcCs|jS)N)r0)r"rrrr%rszAggrCheckType.finalizeN)r&r'r(r#r+r%rrrrr/isr/c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrCheckTypescCs d|_dS)Nr)r0)r"rrrr#vszAggrCheckTypes.__init__cGsDttttdƒtdœ}x*|D]"}|jt||t|ƒkƒ7_qWdS)N)rrrr1r2)rrrrrr0)r"r3Zvalsr4r0rrrr+ys  zAggrCheckTypes.stepcCs|jS)N)r0)r"rrrr%szAggrCheckTypes.finalizeN)r&r'r(r#r+r%rrrrr5usr5c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrSumcCs d|_dS)Ng)r0)r"rrrr#ƒszAggrSum.__init__cCs|j|7_dS)N)r0)r"r0rrrr+†sz AggrSum.stepcCs|jS)N)r0)r"rrrr%‰szAggrSum.finalizeN)r&r'r(r#r+r%rrrrr6‚sr6c@s¤eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'S)(Ú FunctionTestscCst d¡|_|j ddt¡|j ddt¡|j ddt¡|j ddt¡|j ddt¡|j ddt ¡|j d dt ¡|j d dt ¡|j d d t ¡|j d d t ¡|j dd t¡|j dd t¡|j dd t¡|j dd t¡|j ddt¡dS)Nz:memory:Z returntextrZ returnunicodeZ returnintZ returnfloatZ returnnullZ returnblobZreturnlonglongZraiseexceptionÚisstringr$ZisintZisfloatZisnoneZisblobZ islonglongZspaméÿÿÿÿ)ÚsqliteÚconnectÚconÚcreate_functionrrr r r r r rrrrrrrr )r"rrrÚsetUps  zFunctionTests.setUpcCs|j ¡dS)N)r<Úclose)r"rrrÚtearDown¡szFunctionTests.tearDownc Cs0| tj¡|j dddd„¡WdQRXdS)NÚblaiœÿÿÿcSsd|S)Nér)r*rrrÚ¦óz6FunctionTests.CheckFuncErrorOnCreate..)Ú assertRaisesr:ÚOperationalErrorr<r=)r"rrrÚCheckFuncErrorOnCreate¤sz$FunctionTests.CheckFuncErrorOnCreatecCs@dd„}|ƒ}|tƒd<|j dd|¡|j ¡}| d¡dS)NcSs dd„}|S)NcSsdS)Nr$rrrrrÚfªsz;FunctionTests.CheckFuncRefCount..getfunc..fr)rHrrrÚgetfunc©sz0FunctionTests.CheckFuncRefCount..getfuncrZreftestrzselect reftest())Úglobalsr<r=ÚcursorÚexecute)r"rIrHÚcurrrrÚCheckFuncRefCount¨s   zFunctionTests.CheckFuncRefCountcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returntext()rr)r<rKrLÚfetchoneÚ assertEqualrr)r"rMr0rrrÚCheckFuncReturnText´s    z!FunctionTests.CheckFuncReturnTextcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnunicode()rr)r<rKrLrOrPrr)r"rMr0rrrÚCheckFuncReturnUnicode»s    z$FunctionTests.CheckFuncReturnUnicodecCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnint()rr)r<rKrLrOrPrr)r"rMr0rrrÚCheckFuncReturnIntÂs    z FunctionTests.CheckFuncReturnIntcCsN|j ¡}| d¡| ¡d}| t|ƒt¡|dks@|dkrJ| d¡dS)Nzselect returnfloat()rgé&1¬ @gTã¥›Ä @z wrong value)r<rKrLrOrPrrZfail)r"rMr0rrrÚCheckFuncReturnFloatÉs    z"FunctionTests.CheckFuncReturnFloatcCsD|j ¡}| d¡| ¡d}| t|ƒtdƒ¡| |d¡dS)Nzselect returnnull()r)r<rKrLrOrPr)r"rMr0rrrÚCheckFuncReturnNullÑs    z!FunctionTests.CheckFuncReturnNullcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnblob()rsblob)r<rKrLrOrPrr)r"rMr0rrrÚCheckFuncReturnBlobØs    z!FunctionTests.CheckFuncReturnBlobcCs0|j ¡}| d¡| ¡d}| |d¡dS)Nzselect returnlonglong()rl)r<rKrLrOrP)r"rMr0rrrÚCheckFuncReturnLongLongßs   z%FunctionTests.CheckFuncReturnLongLongc CsJ|j ¡}| tj¡}| d¡| ¡WdQRX| t|j ƒd¡dS)Nzselect raiseexception()z&user-defined function raised exception) r<rKrEr:rFrLrOrPrÚ exception)r"rMÚcmrrrÚCheckFuncExceptionås   z FunctionTests.CheckFuncExceptioncCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isstring(?))rrr$)r<rKrLrOrP)r"rMr0rrrÚCheckParamStringìs   zFunctionTests.CheckParamStringcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isint(?))rrr$)r<rKrLrOrP)r"rMr0rrrÚ CheckParamIntòs   zFunctionTests.CheckParamIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isfloat(?))g…ëQ¸ @rr$)r<rKrLrOrP)r"rMr0rrrÚCheckParamFloatøs   zFunctionTests.CheckParamFloatcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isnone(?))Nrr$)r<rKrLrOrP)r"rMr0rrrÚCheckParamNoneþs   zFunctionTests.CheckParamNonecCs8|j ¡}| dtdƒf¡| ¡d}| |d¡dS)Nzselect isblob(?)sblobrr$)r<rKrLrrOrP)r"rMr0rrrÚCheckParamBlobs  zFunctionTests.CheckParamBlobcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect islonglong(?))lrr$)r<rKrLrOrP)r"rMr0rrrÚCheckParamLongLong s   z FunctionTests.CheckParamLongLongcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect spam(?, ?))r$rBrrB)r<rKrLrOrP)r"rMr0rrrÚCheckAnyArgumentss   zFunctionTests.CheckAnyArgumentsN)r&r'r(r>r@rGrNrQrRrSrTrUrVrWrZr[r\r]r^r_r`rarrrrr7Œs& r7c@s„eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS) ÚAggregateTestsc Cs¾t d¡|_|j ¡}| d¡| dddddtdƒf¡|j dd t¡|j d d t¡|j d d t ¡|j d d t ¡|j d d t ¡|j ddt ¡|j ddt ¡|j dd t¡dS)Nz:memory:z´ create table test( t text, i integer, f float, n, b blob ) z6insert into test(t, i, f, n, b) values (?, ?, ?, ?, ?)rrg…ëQ¸ @sblobZnostepr$Z nofinalizeZexcInitZexcStepZ excFinalizeZ checkTyperBZ checkTypesr9Zmysum)r:r;r<rKrLrZcreate_aggregater!r)r,r-r.r/r5r6)r"rMrrrr>s  zAggregateTests.setUpcCsdS)Nr)r"rrrr@0szAggregateTests.tearDownc Cs,| tj¡|j ddt¡WdQRXdS)NrAiœÿÿÿ)rEr:rFr<r=r6)r"rrrÚCheckAggrErrorOnCreate5sz%AggregateTests.CheckAggrErrorOnCreatec Cs@|j ¡}| t¡}| d¡WdQRX| t|jƒd¡dS)Nzselect nostep(t) from testz+'AggrNoStep' object has no attribute 'step')r<rKrEÚAttributeErrorrLrPrrX)r"rMrYrrrÚCheckAggrNoStep9s  zAggregateTests.CheckAggrNoStepc CsN|j ¡}| tj¡}| d¡| ¡d}WdQRX| t|j ƒd¡dS)Nzselect nofinalize(t) from testrz7user-defined aggregate's 'finalize' method raised error) r<rKrEr:rFrLrOrPrrX)r"rMrYr0rrrÚCheckAggrNoFinalize?s   z"AggregateTests.CheckAggrNoFinalizec CsN|j ¡}| tj¡}| d¡| ¡d}WdQRX| t|j ƒd¡dS)Nzselect excInit(t) from testrz7user-defined aggregate's '__init__' method raised error) r<rKrEr:rFrLrOrPrrX)r"rMrYr0rrrÚCheckAggrExceptionInInitFs   z'AggregateTests.CheckAggrExceptionInInitc CsN|j ¡}| tj¡}| d¡| ¡d}WdQRX| t|j ƒd¡dS)Nzselect excStep(t) from testrz3user-defined aggregate's 'step' method raised error) r<rKrEr:rFrLrOrPrrX)r"rMrYr0rrrÚCheckAggrExceptionInStepMs   z'AggregateTests.CheckAggrExceptionInStepc CsN|j ¡}| tj¡}| d¡| ¡d}WdQRX| t|j ƒd¡dS)Nzselect excFinalize(t) from testrz7user-defined aggregate's 'finalize' method raised error) r<rKrEr:rFrLrOrPrrX)r"rMrYr0rrrÚCheckAggrExceptionInFinalizeTs   z+AggregateTests.CheckAggrExceptionInFinalizecCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('str', ?))rrr$)r<rKrLrOrP)r"rMr0rrrÚCheckAggrCheckParamStr[s   z%AggregateTests.CheckAggrCheckParamStrcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('int', ?))rrr$)r<rKrLrOrP)r"rMr0rrrÚCheckAggrCheckParamIntas   z%AggregateTests.CheckAggrCheckParamIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkTypes('int', ?, ?))rérrB)r<rKrLrOrP)r"rMr0rrrÚCheckAggrCheckParamsIntgs   z&AggregateTests.CheckAggrCheckParamsIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('float', ?))g…ëQ¸ @rr$)r<rKrLrOrP)r"rMr0rrrÚCheckAggrCheckParamFloatms   z'AggregateTests.CheckAggrCheckParamFloatcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('None', ?))Nrr$)r<rKrLrOrP)r"rMr0rrrÚCheckAggrCheckParamNoness   z&AggregateTests.CheckAggrCheckParamNonecCs8|j ¡}| dtdƒf¡| ¡d}| |d¡dS)Nzselect checkType('blob', ?)sblobrr$)r<rKrLrrOrP)r"rMr0rrrÚCheckAggrCheckParamBlobys  z&AggregateTests.CheckAggrCheckParamBlobcCsL|j ¡}| d¡| ddddg¡| d¡| ¡d}| |d¡dS) Nzdelete from testzinsert into test(i) values (?))é )é)ézselect mysum(i) from testré<)r<rKrLZ executemanyrOrP)r"rMr0rrrÚCheckAggrCheckAggrSums     z$AggregateTests.CheckAggrCheckAggrSumN)r&r'r(r>r@rcrerfrgrhrirjrkrmrnrorprurrrrrbsrbc@s8eZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd S) ÚAuthorizerTestscCs,|tjkrtjS|dks |dkr&tjStjS)NÚc2Út2)r:Ú SQLITE_SELECTZ SQLITE_DENYÚ SQLITE_OK)ÚactionÚarg1Úarg2ÚdbnameÚsourcerrrÚ authorizer_cbˆs  zAuthorizerTests.authorizer_cbcCs6t d¡|_|j d¡|j d¡|j |j¡dS)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); zselect c2 from t2)r:r;r<Z executescriptrLZset_authorizerr€)r"rrrr>s   zAuthorizerTests.setUpcCsdS)Nr)r"rrrr@žszAuthorizerTests.tearDownc Cs:| tj¡}|j d¡WdQRX| dt|jƒ¡dS)Nzselect * from t2Ú prohibited)rEr:Ú DatabaseErrorr<rLÚassertInrrX)r"rYrrrÚtest_table_access¡sz!AuthorizerTests.test_table_accessc Cs:| tj¡}|j d¡WdQRX| dt|jƒ¡dS)Nzselect c2 from t1r)rEr:r‚r<rLrƒrrX)r"rYrrrÚtest_column_access¦sz"AuthorizerTests.test_column_accessN) r&r'r(Ú staticmethodr€r>r@r„r…rrrrrv‡s  rvc@seZdZedd„ƒZdS)ÚAuthorizerRaiseExceptionTestscCs(|tjkrt‚|dks|dkr"t‚tjS)Nrwrx)r:ryÚ ValueErrorrz)r{r|r}r~rrrrr€¬s  z+AuthorizerRaiseExceptionTests.authorizer_cbN)r&r'r(r†r€rrrrr‡«sr‡c@seZdZedd„ƒZdS)ÚAuthorizerIllegalTypeTestscCs(|tjkrdS|dks|dkr"dStjS)Ngrwrx)r:ryrz)r{r|r}r~rrrrr€µs  z(AuthorizerIllegalTypeTests.authorizer_cbN)r&r'r(r†r€rrrrr‰´sr‰c@seZdZedd„ƒZdS)ÚAuthorizerLargeIntegerTestscCs(|tjkrdS|dks|dkr"dStjS)Nlrwrx)r:ryrz)r{r|r}r~rrrrr€¾s  z)AuthorizerLargeIntegerTests.authorizer_cbN)r&r'r(r†r€rrrrrнsrŠc CsJt td¡}t td¡}t t¡}t |||t t¡t t¡t t¡f¡S)NZCheck) ÚunittestZ makeSuiter7rbrvZ TestSuiter‡r‰rŠ)Zfunction_suiteZaggregate_suiteZauthorizer_suiterrrÚsuiteÇs   rŒcCst ¡}| tƒ¡dS)N)r‹ZTextTestRunnerÚrunrŒ)ZrunnerrrrÚtestÔsrŽÚ__main__)$r‹Zsqlite3r:rrr r r r r rrrrrrrr r!r)r,r-r.r/r5r6ZTestCaser7rbrvr‡r‰rŠrŒrŽr&rrrrÚsF       p$