o ­=?h=0ã@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„ZedkrkeƒdSdS)éN)ÚSequencec@óeZdZdd„ZdS)Ú MyConnectioncOstjj|g|¢Ri|¤ŽdS©N)ÚsqliteÚ ConnectionÚ__init__©ÚselfÚargsÚkwargs©r ú;/opt/alt/python310/lib64/python3.10/sqlite3/test/factory.pyrszMyConnection.__init__N©Ú__name__Ú __module__Ú __qualname__rr r r rró rcCs,i}t|jƒD] \}}||||d<q|S)Nr)Ú enumerateÚ description)ÚcursorÚrowÚdÚidxÚcolr r rÚ dict_factorysrc@r)ÚMyCursorcOs$tjj|g|¢Ri|¤Žt|_dSr)rÚCursorrrÚ row_factoryr r r rr&s zMyCursor.__init__Nrr r r rr%rrc@ó$eZdZdd„Zdd„Zdd„ZdS)ÚConnectionFactoryTestscCstjdtd|_dS)Nú:memory:©Úfactory)rÚconnectrÚcon©r r r rÚsetUp+szConnectionFactoryTests.setUpcCó|j ¡dSr©r%Úcloser&r r rÚtearDown.ózConnectionFactoryTests.tearDowncCs| |jt¡dSr)ÚassertIsInstancer%rr&r r rÚtest_is_instance1sz'ConnectionFactoryTests.test_is_instanceN)rrrr'r+r.r r r rr *s r c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚCursorFactoryTestscCót d¡|_dS©Nr!©rr$r%r&r r rr'5ózCursorFactoryTests.setUpcCr(rr)r&r r rr+8r,zCursorFactoryTests.tearDowncCsR|j ¡}| |tj¡|j t¡}| |t¡|jjdd„d}| |t¡dS)NcSst|ƒSr)r©r%r r rÚ@óz5CursorFactoryTests.test_is_instance..r")r%rr-rrr)r Úcurr r rr.;s   z#CursorFactoryTests.test_is_instancecCsB| t|jjd¡| t|jjdd„¡| t|jjdd„¡dS)NcSódSrr r r r rr5Góz9CursorFactoryTests.test_invalid_factory..cSr8rr r4r r rr5Ir9)Ú assertRaisesÚ TypeErrorr%rr&r r rÚtest_invalid_factoryCsz'CursorFactoryTests.test_invalid_factoryN)rrrr'r+r.r<r r r rr/4s  r/c@r)ÚRowFactoryTestsBackwardsCompatcCr0r1r2r&r r rr'Lr3z$RowFactoryTestsBackwardsCompat.setUpcCs8|jjtd}| d¡| ¡}| |t¡| ¡dS)Nr"zselect 4+5 as foo)r%rrÚexecuteÚfetchoner-Údictr*)r r7rr r rÚtest_is_produced_by_factoryOs    z:RowFactoryTestsBackwardsCompat.test_is_produced_by_factorycCr(rr)r&r r rr+Vr,z'RowFactoryTestsBackwardsCompat.tearDownN)rrrr'rAr+r r r rr=Ks r=c@sleZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚRowFactoryTestscCr0r1r2r&r r rr'Zr3zRowFactoryTests.setUpcCs,dd„|j_|j d¡ ¡}| |t¡dS)NcSst|ƒSr)Úlist)r7rr r rr5^r6z5RowFactoryTests.test_custom_factory..z select 1, 2)r%rr>r?r-rC©r rr r rÚtest_custom_factory]s z#RowFactoryTests.test_custom_factorycCsîtj|j_|j d¡ ¡}| |tj¡| |ddd¡| |ddd¡| |ddd ¡| |d dd ¡| |d dd ¡| |ddd¡| |ddd¡| |ddd¡| t ¡ |dWdƒn1spwY| t ¡ |dWdƒn1s‰wY| t ¡ |dWdƒn1s¢wY| t ¡ |dWdƒn1s»wY| t ¡ |dWdƒn1sÔwY| t ¡|ddWdƒdS1sðwYdS)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ÚRowr%rr>r?r-Ú assertEqualr:Ú IndexErrorrDr r rÚtest_sqlite_row_indexbs:   ÿ  ÿ  ÿ  ÿ  ÿ "ÿz%RowFactoryTests.test_sqlite_row_indexcCs”tj|j_|j d¡ ¡}| |dd¡| t¡ |dWdƒn1s)wY| t¡ |dWdƒdS1sCwYdS)Nuselect 1 as ÿõÿrFuŸõß) rrNr%rr>r?rOr:rPrDr r rÚtest_sqlite_row_index_unicodes   ÿ  "ÿz-RowFactoryTests.test_sqlite_row_index_unicodecCsê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 rF)rFé)rHrU)rHrUé)rFrHrUrKrJ)rU)rUrVrVrH)rFrU)rVrH©rrNr%rr>r?rOrDr r rÚtest_sqlite_row_sliceˆs z%RowFactoryTests.test_sqlite_row_slicecCsZtj|j_|j d¡ ¡}dd„|Dƒ}| |ddg¡dd„|Dƒ}| |ddg¡dS)z$Checks if the row object is iterableúselect 1 as a, 2 as bcSóg|]}|‘qSr r ©Ú.0rr r rÚ  óz8RowFactoryTests.test_sqlite_row_iter..rFrHcSrZr r r[r r rr]¤r^NrW)r rÚitemsr r rÚtest_sqlite_row_iteršs z$RowFactoryTests.test_sqlite_row_itercCs>tj|j_|j d¡ ¡}t|ƒ}| ||d|df¡dS)z4Checks if the row object can be converted to a tuplerYÚarGN)rrNr%rr>r?ÚtuplerO)r rÚtr r rÚtest_sqlite_row_as_tuple§s z(RowFactoryTests.test_sqlite_row_as_tuplecCsNtj|j_|j d¡ ¡}t|ƒ}| |d|d¡| |d|d¡dS)zCChecks if the row object can be correctly converted to a dictionaryrYrarGN)rrNr%rr>r?r@rO)r rrr r rÚtest_sqlite_row_as_dict®s z'RowFactoryTests.test_sqlite_row_as_dictcCsæ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 ¡ ||kWdƒn1s—wY|  t ¡ ||kWdƒn1s°wY|  t ¡ ||kWdƒn1sÉwY|  t ¡ ||kWdƒn1sâwY|  t |ƒt |ƒ¡dS)z6Checks if the row object compares and hashes correctlyrYzselect 1 as a, 3 as bzselect 1 as b, 2 as azselect 2 as b, 1 as aN) rrNr%rr>r?Ú assertTrueZ assertFalseÚobjectr:r;rOÚhash)r Zrow_1Zrow_2Zrow_3Zrow_4Zrow_5r r rÚtest_sqlite_row_hash_cmp¶s>   ÿ  ÿ  ÿ  ÿz(RowFactoryTests.test_sqlite_row_hash_cmpcCsNtj|j_|j d¡ ¡}t|ƒ}| tt |ƒƒtt |ƒƒ¡|  |t ¡dS)z2 Checks if the row object can act like a sequence rYN) rrNr%rr>r?rbrOrCÚreversedr-r)r rZas_tupler r rÚtest_sqlite_row_as_sequenceØs z+RowFactoryTests.test_sqlite_row_as_sequencecCsDGdd„dtƒ}tj|j_| t|jj|¡| ttj|ƒd¡dS)Nc@seZdZejZdS)z:RowFactoryTests.test_fake_cursor_class..FakeCursorN)rrrrrÚ __class__r r r rÚ FakeCursorås rmr )ÚstrrrNr%rr:r;r)r rmr r rÚtest_fake_cursor_classás z&RowFactoryTests.test_fake_cursor_classcCr(rr)r&r r rr+ër,zRowFactoryTests.tearDownN)rrrr'rErQrTrXr`rdrerirkror+r r r rrBYs  " rBc@ó<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTextFactoryTestscCr0r1r2r&r r rr'ïr3zTextFactoryTests.setUpcCs2d}|j d|f¡ ¡}| t|dƒtd¡dS)Nõ Österreichúselect ?rútype of row[0] must be unicode)r%r>r?rOÚtypern©r Úaustriarr r rÚ test_unicodeòszTextFactoryTests.test_unicodecCsRt|j_d}|j d|f¡ ¡}| t|dƒtd¡| |d| d¡d¡dS)Nrrrsrztype of row[0] must be bytesúutf-8z(column must equal original data in UTF-8)Úbytesr%Ú text_factoryr>r?rOruÚencodervr r rÚ test_string÷s zTextFactoryTests.test_stringcCsTdd„|j_d}|j d|f¡ ¡}| t|dƒtd¡| |d d¡d¡dS) NcSs t|ddƒS)NryÚignore)rn©Úxr r rr5ÿs z.TextFactoryTests.test_custom..rrrsrrtZreichz!column must contain original data) r%r{r>r?rOrurnrfÚendswithrvr r rÚ test_customþs zTextFactoryTests.test_customcCs¢| t¡ }tj|j_Wdƒn1swY| d|j¡d}d}|j d|f¡  ¡}|j d|f¡  ¡}|  t |dƒt d¡|  t |dƒt d¡dS)Nz factory.pyrrZ Deutchlandrsrz!type of non-ASCII row must be strz"type of ASCII-only row must be str) Z assertWarnsÚDeprecationWarningrZOptimizedUnicoder%r{ZassertInÚfilenamer>r?rOrurn)r ÚcmrwZgermanyZa_rowZd_rowr r rÚtest_optimized_unicodes  ÿz'TextFactoryTests.test_optimized_unicodecCr(rr)r&r r rr+r,zTextFactoryTests.tearDownN) rrrr'rxr}r‚r†r+r r r rrqîs rqc@rp)Ú%TextFactoryTestsWithEmbeddedZeroBytescCs*t d¡|_|j d¡|j dd¡dS)Nr!zcreate table test (value text)z#insert into test (value) values (?))úab)rr$r%r>r&r r rr's  z+TextFactoryTestsWithEmbeddedZeroBytes.setUpcCs8|j d¡ ¡}| t|dƒt¡| |dd¡dS)Núselect value from testrrˆ)r%r>r?ÚassertIsrurnrOrDr r rr}sz1TextFactoryTestsWithEmbeddedZeroBytes.test_stringcCó@t|j_|j d¡ ¡}| t|dƒt¡| |dd¡dS©Nr‰róab)rzr%r{r>r?rŠrurOrDr r rÚ test_bytes óz0TextFactoryTestsWithEmbeddedZeroBytes.test_bytescCr‹rŒ)Ú bytearrayr%r{r>r?rŠrurOrDr r rÚtest_bytearray&rz4TextFactoryTestsWithEmbeddedZeroBytes.test_bytearraycCsDdd„|j_|j d¡ ¡}| t|dƒt¡| |dd¡dS)NcSs|Srr rr r rr5.r9zCTextFactoryTestsWithEmbeddedZeroBytes.test_custom..r‰rr)r%r{r>r?rŠrurzrOrDr r rr‚,s z1TextFactoryTestsWithEmbeddedZeroBytes.test_customcCr(rr)r&r r rr+3r,z.TextFactoryTestsWithEmbeddedZeroBytes.tearDownN) rrrr'r}rŽr‘r‚r+r r r rr‡s r‡cCs$ttttttg}t dd„|Dƒ¡S)NcSsg|] }t ¡ |¡‘qSr )ÚunittestZ TestLoaderZloadTestsFromTestCase)r\rcr r rr]@szsuite..)r r/rBr=rqr‡r’Z TestSuite)Ztestsr r rÚsuite6sú ÿr“cCst ¡}| tƒ¡dSr)r’ZTextTestRunnerÚrunr“)Zrunnerr r rÚtestCsr•Ú__main__)r’Zsqlite3rZcollections.abcrrrrrrZTestCaser r/r=rBrqr‡r“r•rr r r rÚs$  &"  ÿ