U .‘cËCã@sŠddlZddlZddlZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„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ƒZ Gd:d;„d;eƒZ!dd?„Z#e$d@kr†e#ƒdS)AéNcCsdS)NÚfoo©rrrú?/opt/alt/python38/lib64/python3.8/sqlite3/test/userfunctions.pyÚfunc_returntextsrcCsdS)NÚbarrrrrrÚfunc_returnunicodesrcCsdS©Né*rrrrrÚfunc_returnint sr cCsdS)Nç…ëQ¸ @rrrrrÚfunc_returnfloat"sr cCsdS©NrrrrrÚfunc_returnnull$srcCsdS)NóblobrrrrrÚfunc_returnblob&srcCsdS©NìrrrrrÚfunc_returnlonglong(srcCs dddS©NérrrrrrÚfunc_raiseexception*srcCs t|ƒtkSr )ÚtypeÚstr©ÚvrrrÚ func_isstring-srcCs t|ƒtkSr )rÚintrrrrÚ func_isint/srcCs t|ƒtkSr )rÚfloatrrrrÚ func_isfloat1srcCst|ƒtdƒkSr )rrrrrÚ func_isnone3sr cCst|ttfƒSr )Ú isinstanceÚbytesÚ memoryviewrrrrÚ func_isblob5sr$cCst|tƒo|dkSr)r!rrrrrÚfunc_islonglong7sr%cGst|ƒSr )Úlen)ÚargsrrrÚfunc:sr(c@seZdZdd„Zdd„ZdS)Ú AggrNoStepcCsdSr r©ÚselfrrrÚ__init__>szAggrNoStep.__init__cCsdS©Nérr*rrrÚfinalizeAszAggrNoStep.finalizeN)Ú__name__Ú __module__Ú __qualname__r,r/rrrrr)=sr)c@seZdZdd„Zdd„ZdS)ÚAggrNoFinalizecCsdSr rr*rrrr,EszAggrNoFinalize.__init__cCsdSr r©r+ÚxrrrÚstepHszAggrNoFinalize.stepN)r0r1r2r,r6rrrrr3Dsr3c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInInitcCs dddSrrr*rrrr,LszAggrExceptionInInit.__init__cCsdSr rr4rrrr6OszAggrExceptionInInit.stepcCsdSr rr*rrrr/RszAggrExceptionInInit.finalizeN©r0r1r2r,r6r/rrrrr7Ksr7c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInStepcCsdSr rr*rrrr,VszAggrExceptionInStep.__init__cCs dddSrrr4rrrr6YszAggrExceptionInStep.stepcCsdSrrr*rrrr/\szAggrExceptionInStep.finalizeNr8rrrrr9Usr9c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrExceptionInFinalizecCsdSr rr*rrrr,`sz AggrExceptionInFinalize.__init__cCsdSr rr4rrrr6cszAggrExceptionInFinalize.stepcCs dddSrrr*rrrr/fsz AggrExceptionInFinalize.finalizeNr8rrrrr:_sr:c@s$eZdZdd„Zdd„Zdd„ZdS)Ú AggrCheckTypecCs d|_dSr ©Úvalr*rrrr,jszAggrCheckType.__init__cCs.ttttdƒtdœ}t||t|ƒkƒ|_dS©N)rrrÚNoneZblob©rrrrr"r=)r+Ú whichTyper=ÚtheTyperrrr6ms ÿzAggrCheckType.stepcCs|jSr r<r*rrrr/rszAggrCheckType.finalizeNr8rrrrr;isr;c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrCheckTypescCs d|_dS)Nrr<r*rrrr,vszAggrCheckTypes.__init__cGs@ttttdƒtdœ}|D]"}|jt||t|ƒkƒ7_qdSr>r@)r+rAZvalsrBr=rrrr6ys  ÿzAggrCheckTypes.stepcCs|jSr r<r*rrrr/szAggrCheckTypes.finalizeNr8rrrrrCusrCc@s$eZdZdd„Zdd„Zdd„ZdS)ÚAggrSumcCs d|_dS)Nçr<r*rrrr,ƒszAggrSum.__init__cCs|j|7_dSr r<)r+r=rrrr6†sz AggrSum.stepcCs|jSr r<r*rrrr/‰szAggrSum.finalizeNr8rrrrrD‚srDc@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&„Ze ejd'kd(¡d)d*„ƒZe ejd'kd(¡d+d,„ƒZe ejd'kd-¡d.d/„ƒZd0d1„Zd2S)3Ú FunctionTestscCs t 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¡|j d¡dS)Nú:memory:Z returntextrZ returnunicodeZ returnintZ returnfloatZ returnnullZ returnblobZreturnlonglongZraiseexceptionÚisstringr.ZisintZisfloatZisnoneZisblobZ islonglongZspaméÿÿÿÿzcreate table test(t text))ÚsqliteÚconnectÚconÚcreate_functionrrr r rrrrrrrr r$r%r(Úexecuter*rrrÚsetUps" zFunctionTests.setUpcCs|j ¡dSr )rLÚcloser*rrrÚtearDown¢szFunctionTests.tearDownc Cs0| tj¡|j dddd„¡W5QRXdS)NÚblaéœÿÿÿcSsd|S)Nér)r5rrrÚ§óz6FunctionTests.CheckFuncErrorOnCreate..)Ú assertRaisesrJÚOperationalErrorrLrMr*rrrÚCheckFuncErrorOnCreate¥sz$FunctionTests.CheckFuncErrorOnCreatecCs@dd„}|ƒ}|tƒd<|j dd|¡|j ¡}| d¡dS)NcSs dd„}|S)NcSsdSr-rrrrrÚf«sz;FunctionTests.CheckFuncRefCount..getfunc..fr)rZrrrÚgetfuncªsz0FunctionTests.CheckFuncRefCount..getfuncrZreftestrzselect reftest())ÚglobalsrLrMÚcursorrN)r+r[rZÚcurrrrÚCheckFuncRefCount©s   zFunctionTests.CheckFuncRefCountcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returntext()rr©rLr]rNÚfetchoneÚ assertEqualrr©r+r^r=rrrÚCheckFuncReturnTextµs    z!FunctionTests.CheckFuncReturnTextcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnunicode()rrr`rcrrrÚCheckFuncReturnUnicode¼s    z$FunctionTests.CheckFuncReturnUnicodecCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnint()rr )rLr]rNrarbrrrcrrrÚCheckFuncReturnIntÃs    z FunctionTests.CheckFuncReturnIntcCsN|j ¡}| d¡| ¡d}| t|ƒt¡|dks@|dkrJ| d¡dS)Nzselect returnfloat()rgé&1¬ @gTã¥›Ä @z wrong value)rLr]rNrarbrrÚfailrcrrrÚCheckFuncReturnFloatÊs    z"FunctionTests.CheckFuncReturnFloatcCsD|j ¡}| d¡| ¡d}| t|ƒtdƒ¡| |d¡dS)Nzselect returnnull()r)rLr]rNrarbrrcrrrÚCheckFuncReturnNullÒs    z!FunctionTests.CheckFuncReturnNullcCs@|j ¡}| d¡| ¡d}| t|ƒt¡| |d¡dS)Nzselect returnblob()rr)rLr]rNrarbrr"rcrrrÚCheckFuncReturnBlobÙs    z!FunctionTests.CheckFuncReturnBlobcCs0|j ¡}| d¡| ¡d}| |d¡dS)Nzselect returnlonglong()rr©rLr]rNrarbrcrrrÚCheckFuncReturnLongLongàs   z%FunctionTests.CheckFuncReturnLongLongc CsJ|j ¡}| tj¡}| d¡| ¡W5QRX| t|j ƒd¡dS)Nzselect raiseexception()z&user-defined function raised exception© rLr]rWrJrXrNrarbrÚ exception©r+r^ÚcmrrrÚCheckFuncExceptionæs   z FunctionTests.CheckFuncExceptioncCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isstring(?)©rrr.rkrcrrrÚCheckParamStringís   zFunctionTests.CheckParamStringcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isint(?)©r rr.rkrcrrrÚ CheckParamIntós   zFunctionTests.CheckParamIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isfloat(?)©r rr.rkrcrrrÚCheckParamFloatùs   zFunctionTests.CheckParamFloatcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect isnone(?)r rr.rkrcrrrÚCheckParamNoneÿs   zFunctionTests.CheckParamNonecCs8|j ¡}| dtdƒf¡| ¡d}| |d¡dS)Nzselect isblob(?)rrr.©rLr]rNr#rarbrcrrrÚCheckParamBlobs  zFunctionTests.CheckParamBlobcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect islonglong(?))lrr.rkrcrrrÚCheckParamLongLong s   z FunctionTests.CheckParamLongLongcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect spam(?, ?))r.rTrrTrkrcrrrÚCheckAnyArgumentss   zFunctionTests.CheckAnyArguments)éér}zRequires SQLite 3.8.3 or higherc Csptjjdd}|jjdd|ddtjdkrH|j d¡| |j d¡n$|  tj ¡|j d ¡W5QRXdS) N©Z return_valueZnondeterministicrF©Ú deterministic©r}érz.select nondeterministic() = nondeterministic()rTz>create index t on test(t) where nondeterministic() is not null) ÚunittestÚmockÚMockrLrMrJÚsqlite_version_inforNrbÚ call_countrWrX©r+r…rrrÚCheckFuncNonDeterministics  z'FunctionTests.CheckFuncNonDeterministiccCs~tjjdd}|jjdd|ddtjdkrH|j d¡| |j d¡n2z|j d ¡Wn tj k rx|  d ¡YnXdS) NrrrTr€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†rLrMrJr‡rNrbrˆrXrgr‰rrrÚCheckFuncDeterministic)s  z$FunctionTests.CheckFuncDeterministiczSQLite < 3.8.3 neededc Cs0| tj¡|jjddtddW5QRXdS)NrrTr€)rWrJZNotSupportedErrorrLrMrr*rrrÚ"CheckFuncDeterministicNotSupported6sz0FunctionTests.CheckFuncDeterministicNotSupportedc Cs,| t¡|j ddtd¡W5QRXdS)NrrT)rWÚ TypeErrorrLrMrr*rrrÚ!CheckFuncDeterministicKeywordOnly;s z/FunctionTests.CheckFuncDeterministicKeywordOnlyN)r0r1r2rOrQrYr_rdrerfrhrirjrlrqrsrurwrxrzr{r|r„ZskipIfrJr‡rŠr‹rŒrŽrrrrrFŒs4     rFc@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)NrGz´ create table test( t text, i integer, f float, n, b blob ) z6insert into test(t, i, f, n, b) values (?, ?, ?, ?, ?)rrr rZnostepr.Z nofinalizeZexcInitZexcStepZ excFinalizeZ checkTyperTZ checkTypesrIZmysum)rJrKrLr]rNr#Zcreate_aggregater)r3r7r9r:r;rCrD)r+r^rrrrOAs   ÿzAggregateTests.setUpcCsdSr rr*rrrrQYszAggregateTests.tearDownc Cs,| tj¡|j ddt¡W5QRXdS)NrRrS)rWrJrXrLrMrDr*rrrÚCheckAggrErrorOnCreate^sz%AggregateTests.CheckAggrErrorOnCreatec Cs@|j ¡}| t¡}| d¡W5QRX| t|jƒd¡dS)Nzselect nostep(t) from testz+'AggrNoStep' object has no attribute 'step')rLr]rWÚAttributeErrorrNrbrrnrorrrÚCheckAggrNoStepbs  zAggregateTests.CheckAggrNoStepc CsN|j ¡}| tj¡}| d¡| ¡d}W5QRX| t|j ƒd¡dS)Nzselect nofinalize(t) from testrú7user-defined aggregate's 'finalize' method raised errorrm©r+r^rpr=rrrÚCheckAggrNoFinalizehs   z"AggregateTests.CheckAggrNoFinalizec CsN|j ¡}| tj¡}| d¡| ¡d}W5QRX| t|j ƒd¡dS)Nzselect excInit(t) from testrz7user-defined aggregate's '__init__' method raised errorrmr”rrrÚCheckAggrExceptionInInitos   z'AggregateTests.CheckAggrExceptionInInitc CsN|j ¡}| tj¡}| d¡| ¡d}W5QRX| t|j ƒd¡dS)Nzselect excStep(t) from testrz3user-defined aggregate's 'step' method raised errorrmr”rrrÚCheckAggrExceptionInStepvs   z'AggregateTests.CheckAggrExceptionInStepc CsN|j ¡}| tj¡}| d¡| ¡d}W5QRX| t|j ƒd¡dS)Nzselect excFinalize(t) from testrr“rmr”rrrÚCheckAggrExceptionInFinalize}s   z+AggregateTests.CheckAggrExceptionInFinalizecCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('str', ?)rrrr.rkrcrrrÚCheckAggrCheckParamStr„s   z%AggregateTests.CheckAggrCheckParamStrcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('int', ?)rtrr.rkrcrrrÚCheckAggrCheckParamIntŠs   z%AggregateTests.CheckAggrCheckParamIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkTypes('int', ?, ?))r érrTrkrcrrrÚCheckAggrCheckParamsInts   z&AggregateTests.CheckAggrCheckParamsIntcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('float', ?)rvrr.rkrcrrrÚCheckAggrCheckParamFloat–s   z'AggregateTests.CheckAggrCheckParamFloatcCs2|j ¡}| dd¡| ¡d}| |d¡dS)Nzselect checkType('None', ?)r rr.rkrcrrrÚCheckAggrCheckParamNoneœs   z&AggregateTests.CheckAggrCheckParamNonecCs8|j ¡}| dtdƒf¡| ¡d}| |d¡dS)Nzselect checkType('blob', ?)rrr.ryrcrrrÚCheckAggrCheckParamBlob¢s  z&AggregateTests.CheckAggrCheckParamBlobcCsL|j ¡}| d¡| ddddg¡| d¡| ¡d}| |d¡dS) Nzdelete from testzinsert into test(i) values (?))é )é)ézselect mysum(i) from testré<)rLr]rNZ executemanyrarbrcrrrÚCheckAggrCheckAggrSum¨s     z$AggregateTests.CheckAggrCheckAggrSumN)r0r1r2rOrQrr’r•r–r—r˜r™ršrœrržrŸr¤rrrrr@src@s8eZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd S) ÚAuthorizerTestscCs,|tjkrtjS|dks |dkr&tjStjS©NÚc2Út2)rJÚ SQLITE_SELECTZ SQLITE_DENYÚ SQLITE_OK©ÚactionZarg1Zarg2ZdbnameÚsourcerrrÚ authorizer_cb±s  zAuthorizerTests.authorizer_cbcCs6t d¡|_|j d¡|j d¡|j |j¡dS)NrGz¿ 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)rJrKrLZ executescriptrNZset_authorizerr®r*rrrrO¹s   zAuthorizerTests.setUpcCsdSr rr*rrrrQÇszAuthorizerTests.tearDownc Cs:| tj¡}|j d¡W5QRX| dt|jƒ¡dS)Nzselect * from t2Ú prohibited©rWrJZ DatabaseErrorrLrNZassertInrrn©r+rprrrÚtest_table_accessÊsz!AuthorizerTests.test_table_accessc Cs:| tj¡}|j d¡W5QRX| dt|jƒ¡dS)Nzselect c2 from t1r¯r°r±rrrÚtest_column_accessÏsz"AuthorizerTests.test_column_accessN) r0r1r2Ú staticmethodr®rOrQr²r³rrrrr¥°s  r¥c@seZdZedd„ƒZdS)ÚAuthorizerRaiseExceptionTestscCs(|tjkrt‚|dks|dkr"t‚tjSr¦)rJr©Ú ValueErrorrªr«rrrr®Õs  z+AuthorizerRaiseExceptionTests.authorizer_cbN©r0r1r2r´r®rrrrrµÔsrµc@seZdZedd„ƒZdS)ÚAuthorizerIllegalTypeTestscCs(|tjkrdS|dks|dkr"dStjS)NrEr§r¨©rJr©rªr«rrrr®Þs  z(AuthorizerIllegalTypeTests.authorizer_cbNr·rrrrr¸Ýsr¸c@seZdZedd„ƒZdS)ÚAuthorizerLargeIntegerTestscCs(|tjkrdS|dks|dkr"dStjS)Nlr§r¨r¹r«rrrr®çs  z)AuthorizerLargeIntegerTests.authorizer_cbNr·rrrrrºæsrºc CsJt td¡}t td¡}t t¡}t |||t t¡t t¡t t¡f¡S)NZCheck) r„Z makeSuiterFrr¥Z TestSuiterµr¸rº)Zfunction_suiteZaggregate_suiteZauthorizer_suiterrrÚsuiteðs   úr»cCst ¡}| tƒ¡dSr )r„ZTextTestRunnerÚrunr»)ZrunnerrrrÚtestýsr½Ú__main__)%r„Z unittest.mockZsqlite3rJrrr r rrrrrrrr r$r%r(r)r3r7r9r:r;rCrDZTestCaserFrr¥rµr¸rºr»r½r0rrrrÚsH      5p$