B N%Ž__$ã@sÖddlZddlZddlmZGdd„dejƒZdd„ZGdd„dejƒZ Gd d „d ej ƒZ Gd d „d ej ƒZ Gd d„dej ƒZ Gdd„dej ƒZGdd„dej ƒZGdd„dej ƒZdd„Zdd„ZedkrÒeƒdS)éN)ÚSequencec@seZdZdd„ZdS)Ú MyConnectioncOstjj|f|ž|ŽdS)N)ÚsqliteÚ ConnectionÚ__init__)ÚselfÚargsÚkwargs©r ú9/opt/alt/python37/lib64/python3.7/sqlite3/test/factory.pyrszMyConnection.__init__N)Ú__name__Ú __module__Ú __qualname__rr r r r rsrcCs0i}x&t|jƒD]\}}||||d<qW|S)Nr)Ú enumerateZ description)ÚcursorÚrowÚdÚidxÚcolr r r Ú dict_factory src@seZdZdd„ZdS)ÚMyCursorcOstjj|f|ž|Žt|_dS)N)rÚCursorrrÚ row_factory)rrr r r r r'szMyCursor.__init__N)r r rrr r r r r&src@s$eZdZdd„Zdd„Zdd„ZdS)ÚConnectionFactoryTestscCstjdtd|_dS)Nz:memory:)Úfactory)rÚconnectrÚcon)rr r r ÚsetUp,szConnectionFactoryTests.setUpcCs|j ¡dS)N)rÚclose)rr r r ÚtearDown/szConnectionFactoryTests.tearDowncCs| |jt¡dS)N)ÚassertIsInstancerr)rr r r ÚCheckIsInstance2sz&ConnectionFactoryTests.CheckIsInstanceN)r r rrrr!r r r r r+src@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚCursorFactoryTestscCst d¡|_dS)Nz:memory:)rrr)rr r r r6szCursorFactoryTests.setUpcCs|j ¡dS)N)rr)rr r r r9szCursorFactoryTests.tearDowncCsR|j ¡}| |tj¡|j t¡}| |t¡|jjdd„d}| |t¡dS)NcSst|ƒS)N)r)rr r r ÚAóz4CursorFactoryTests.CheckIsInstance..)r)rrr rrr)rÚcurr r r r!<s    z"CursorFactoryTests.CheckIsInstancecCsB| t|jjd¡| t|jjdd„¡| t|jjdd„¡dS)NcSsdS)Nr r r r r r#Hr$z8CursorFactoryTests.CheckInvalidFactory..cSsdS)Nr )rr r r r#Jr$)Ú assertRaisesÚ TypeErrorrr)rr r r ÚCheckInvalidFactoryDsz&CursorFactoryTests.CheckInvalidFactoryN)r r rrrr!r(r r r r r"5sr"c@s$eZdZdd„Zdd„Zdd„ZdS)ÚRowFactoryTestsBackwardsCompatcCst d¡|_dS)Nz:memory:)rrr)rr r r rMsz$RowFactoryTestsBackwardsCompat.setUpcCs8|jjtd}| d¡| ¡}| |t¡| ¡dS)N)rzselect 4+5 as foo)rrrÚexecuteÚfetchoner Údictr)rr%rr r r ÚCheckIsProducedByFactoryPs   z7RowFactoryTestsBackwardsCompat.CheckIsProducedByFactorycCs|j ¡dS)N)rr)rr r r rWsz'RowFactoryTestsBackwardsCompat.tearDownN)r r rrr-rr r r r r)Lsr)c@sleZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚRowFactoryTestscCst d¡|_dS)Nz:memory:)rrr)rr r r r[szRowFactoryTests.setUpcCs,dd„|j_|j d¡ ¡}| |t¡dS)NcSst|ƒS)N)Úlist)r%rr r r r#_r$z4RowFactoryTests.CheckCustomFactory..z select 1, 2)rrr*r+r r/)rrr r r ÚCheckCustomFactory^s z"RowFactoryTests.CheckCustomFactoryc Csttj|j_|j d¡ ¡}| |tj¡| |ddd¡| |ddd¡| |ddd ¡| |d dd ¡| |d dd ¡| |ddd¡| |ddd¡| |ddd¡| t ¡|dWdQRX| t ¡|dWdQRX| t ¡|dWdQRX| t ¡|dWdQRX| t ¡|dWdQRX| t ¡|ddWdQRXdS)Nzselect 1 as a_1, 2 as bZa_1éz&by name: wrong result for column 'a_1'Úbéz$by name: wrong result for column 'b'ZA_1z&by name: wrong result for column 'A_1'ÚBz$by name: wrong result for column 'B'rz#by index: wrong result for column 0z#by index: wrong result for column 1éÿÿÿÿz$by index: wrong result for column -1éþÿÿÿz$by index: wrong result for column -2Úcza_za1éýÿÿÿiè) rÚRowrrr*r+r Ú assertEqualr&Ú IndexError)rrr r r ÚCheckSqliteRowIndexcs.       z#RowFactoryTests.CheckSqliteRowIndexc Csjtj|j_|j d¡ ¡}| |dd¡| t¡|dWdQRX| t¡|dWdQRXdS)Nuselect 1 as ÿõÿr1uŸõß) rr9rrr*r+r:r&r;)rrr r r ÚCheckSqliteRowIndexUnicode€s   z*RowFactoryTests.CheckSqliteRowIndexUnicodecCsêtj|j_|j d¡ ¡}| |dd…d¡| |dd…d¡| |dd…d¡| |dd…d¡| |dd…d¡| |dd…d ¡| |d d …d ¡| |d d…d ¡| |ddd…d¡| |ddd …d¡dS)Nzselect 1, 2, 3, 4rr r1)r1é)r3r@)r3r@é)r1r3r@r6r5)r@)r@rArAr3)r1r@)rAr3)rr9rrr*r+r:)rrr r r ÚCheckSqliteRowSlice‰s z#RowFactoryTests.CheckSqliteRowSlicecCs,tj|j_|j d¡ ¡}x |D]}q WdS)z$Checks if the row object is iterablezselect 1 as a, 2 as bN)rr9rrr*r+)rrrr r r ÚCheckSqliteRowIter›s  z"RowFactoryTests.CheckSqliteRowItercCs>tj|j_|j d¡ ¡}t|ƒ}| ||d|df¡dS)z4Checks if the row object can be converted to a tuplezselect 1 as a, 2 as bÚar2N)rr9rrr*r+Útupler:)rrÚtr r r ÚCheckSqliteRowAsTuple¢s z%RowFactoryTests.CheckSqliteRowAsTuplecCsNtj|j_|j d¡ ¡}t|ƒ}| |d|d¡| |d|d¡dS)zCChecks if the row object can be correctly converted to a dictionaryzselect 1 as a, 2 as brDr2N)rr9rrr*r+r,r:)rrrr r r ÚCheckSqliteRowAsDict©s  z$RowFactoryTests.CheckSqliteRowAsDictc Cs–tj|j_|j d¡ ¡}|j d¡ ¡}|j d¡ ¡}|j d¡ ¡}|j d¡ ¡}| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| |tƒk¡| ||k¡| ||k¡| ||k¡| ||k¡| ||k¡| |tƒk¡|  t ¡||kWdQRX|  t ¡||kWdQRX|  t ¡||kWdQRX|  t ¡||kWdQRX|  t |ƒt |ƒ¡dS)z6Checks if the row object compares and hashes correctlyzselect 1 as a, 2 as bzselect 1 as a, 3 as bzselect 1 as b, 2 as azselect 2 as b, 1 as aN) rr9rrr*r+Ú assertTrueZ assertFalseÚobjectr&r'r:Úhash)rZrow_1Zrow_2Zrow_3Zrow_4Zrow_5r r r ÚCheckSqliteRowHashCmp±s6     z%RowFactoryTests.CheckSqliteRowHashCmpcCsNtj|j_|j d¡ ¡}t|ƒ}| tt |ƒƒtt |ƒƒ¡|  |t ¡dS)z2 Checks if the row object can act like a sequence zselect 1 as a, 2 as bN) rr9rrr*r+rEr:r/Úreversedr r)rrZas_tupler r r ÚCheckSqliteRowAsSequenceÓs  z(RowFactoryTests.CheckSqliteRowAsSequencecCsDGdd„dtƒ}tj|j_| t|jj|¡| ttj|ƒd¡dS)Nc@seZdZejZdS)z8RowFactoryTests.CheckFakeCursorClass..FakeCursorN)r r rrrÚ __class__r r r r Ú FakeCursoràsrPr )Ústrrr9rrr&r'r)rrPr r r ÚCheckFakeCursorClassÜs z$RowFactoryTests.CheckFakeCursorClasscCs|j ¡dS)N)rr)rr r r ræszRowFactoryTests.tearDownN)r r rrr0r<r?rBrCrGrHrLrNrRrr r r r r.Zs "  r.c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTextFactoryTestscCst d¡|_dS)Nz:memory:)rrr)rr r r rêszTextFactoryTests.setUpcCs2d}|j d|f¡ ¡}| t|dƒtd¡dS)Nu Österreichzselect ?rztype of row[0] must be unicode)rr*r+r:ÚtyperQ)rÚaustriarr r r Ú CheckUnicodeíszTextFactoryTests.CheckUnicodecCsRt|j_d}|j d|f¡ ¡}| t|dƒtd¡| |d| d¡d¡dS)Nu Österreichzselect ?rztype of row[0] must be byteszutf-8z(column must equal original data in UTF-8)ÚbytesrÚ text_factoryr*r+r:rTÚencode)rrUrr r r Ú CheckStringòs zTextFactoryTests.CheckStringcCsTdd„|j_d}|j d|f¡ ¡}| t|dƒtd¡| |d d¡d¡dS) NcSs t|ddƒS)Nzutf-8Úignore)rQ)Úxr r r r#úr$z.TextFactoryTests.CheckCustom..u Österreichzselect ?rztype of row[0] must be unicodeZreichz!column must contain original data) rrXr*r+r:rTrQrIÚendswith)rrUrr r r Ú CheckCustomùs  zTextFactoryTests.CheckCustomcCsjtj|j_d}d}|j d|f¡ ¡}|j d|f¡ ¡}| t|dƒtd¡| t|dƒtd¡dS)Nu ÖsterreichZ Deutchlandzselect ?rz!type of non-ASCII row must be strz"type of ASCII-only row must be str) rZOptimizedUnicoderrXr*r+r:rTrQ)rrUZgermanyZa_rowZd_rowr r r ÚCheckOptimizedUnicodes z&TextFactoryTests.CheckOptimizedUnicodecCs|j ¡dS)N)rr)rr r r r szTextFactoryTests.tearDownN) r r rrrVrZr^r_rr r r r rSés  rSc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú%TextFactoryTestsWithEmbeddedZeroBytescCs*t d¡|_|j d¡|j dd¡dS)Nz:memory:zcreate table test (value text)z#insert into test (value) values (?))zab)rrrr*)rr r r rs  z+TextFactoryTestsWithEmbeddedZeroBytes.setUpcCs8|j d¡ ¡}| t|dƒt¡| |dd¡dS)Nzselect value from testrzab)rr*r+ÚassertIsrTrQr:)rrr r r rZsz1TextFactoryTestsWithEmbeddedZeroBytes.CheckStringcCs@t|j_|j d¡ ¡}| t|dƒt¡| |dd¡dS)Nzselect value from testrsab)rWrrXr*r+rarTr:)rrr r r Ú CheckBytessz0TextFactoryTestsWithEmbeddedZeroBytes.CheckBytescCs@t|j_|j d¡ ¡}| t|dƒt¡| |dd¡dS)Nzselect value from testrsab)Ú bytearrayrrXr*r+rarTr:)rrr r r ÚCheckBytearray sz4TextFactoryTestsWithEmbeddedZeroBytes.CheckBytearraycCsDdd„|j_|j d¡ ¡}| t|dƒt¡| |dd¡dS)NcSs|S)Nr )r\r r r r#(r$zCTextFactoryTestsWithEmbeddedZeroBytes.CheckCustom..zselect value from testrsab)rrXr*r+rarTrWr:)rrr r r r^&s z1TextFactoryTestsWithEmbeddedZeroBytes.CheckCustomcCs|j ¡dS)N)rr)rr r r r-sz.TextFactoryTestsWithEmbeddedZeroBytes.tearDownN) r r rrrZrbrdr^rr r r r r`s r`cCs^t td¡}t td¡}t td¡}t td¡}t td¡}t td¡}t ||||||f¡S)NZCheck) ÚunittestZ makeSuiterr"r)r.rSr`Z TestSuite)Zconnection_suiteZ cursor_suiteZrow_suite_compatZ row_suiteZ text_suiteZtext_zero_bytes_suiter r r Úsuite0s      rfcCst ¡}| tƒ¡dS)N)reZTextTestRunnerÚrunrf)Zrunnerr r r Útest9srhÚ__main__)reZsqlite3rZcollections.abcrrrrrrZTestCaserr"r)r.rSr`rfrhr r r r r Ús   %"