asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T a bYh0@sddlZddlZddlmZGdddejZddZGdddejZ Gd d d ej Z Gd d d ej Z Gd ddej Z Gdddej ZGdddej ZGdddej ZddZddZedkredS)N)Sequencec@seZdZddZdS) MyConnectioncOstjj|g|Ri|dSN)sqlite Connection__init__selfargskwargsr 0/usr/local/lib/python3.9/sqlite3/test/factory.pyrszMyConnection.__init__N__name__ __module__ __qualname__rr r r r rsrcCs,i}t|jD]\}}||||d<q|S)Nr) enumerate description)cursorrowdidxcolr r r dict_factory src@seZdZddZdS)MyCursorcOs$tjj|g|Ri|t|_dSr)rCursorrr row_factoryrr r r r'szMyCursor.__init__Nrr r r r r&src@s$eZdZddZddZddZdS)ConnectionFactoryTestscCstjdtd|_dS)N:memory:factory)rconnectrconr r r r setUp,szConnectionFactoryTests.setUpcCs|jdSrr"closer#r r r tearDown/szConnectionFactoryTests.tearDowncCs||jtdSr)assertIsInstancer"rr#r r r CheckIsInstance2sz&ConnectionFactoryTests.CheckIsInstanceN)rrrr$r'r)r r r r r+src@s,eZdZddZddZddZddZd S) CursorFactoryTestscCstd|_dSNrrr!r"r#r r r r$6szCursorFactoryTests.setUpcCs|jdSrr%r#r r r r'9szCursorFactoryTests.tearDowncCsR|j}||tj|jt}||t|jjddd}||tdS)NcSst|Sr)rr"r r r Az4CursorFactoryTests.CheckIsInstance..r)r"rr(rrr)r curr r r r)<s    z"CursorFactoryTests.CheckIsInstancecCsB|t|jjd|t|jjdd|t|jjdddS)NcSsdSrr r r r r r.Hr/z8CursorFactoryTests.CheckInvalidFactory..cSsdSrr r-r r r r.Jr/) assertRaises TypeErrorr"rr#r r r CheckInvalidFactoryDsz&CursorFactoryTests.CheckInvalidFactoryN)rrrr$r'r)r3r r r r r*5sr*c@s$eZdZddZddZddZdS)RowFactoryTestsBackwardsCompatcCstd|_dSr+r,r#r r r r$Msz$RowFactoryTestsBackwardsCompat.setUpcCs8|jjtd}|d|}||t|dS)Nrzselect 4+5 as foo)r"rrexecutefetchoner(dictr&)r r0rr r r CheckIsProducedByFactoryPs   z7RowFactoryTestsBackwardsCompat.CheckIsProducedByFactorycCs|jdSrr%r#r r r r'Wsz'RowFactoryTestsBackwardsCompat.tearDownN)rrrr$r8r'r r r r r4Lsr4c@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)RowFactoryTestscCstd|_dSr+r,r#r r r r$[szRowFactoryTests.setUpcCs,dd|j_|jd}||tdS)NcSst|Sr)list)r0rr r r r._r/z4RowFactoryTests.CheckCustomFactory..z select 1, 2)r"rr5r6r(r:r rr r r CheckCustomFactory^s z"RowFactoryTests.CheckCustomFactorycCstj|j_|jd}||tj||ddd||ddd||ddd ||d dd ||d dd ||ddd||ddd||ddd|t |dWdn1s0Y|t |dWdn1s0Y|t |dWdn1sH0Y|t |dWdn1s|0Y|t |dWdn1s0Y|t |ddWdn1s0YdS)Nzselect 1 as a_1, 2 as bZa_1z&by name: wrong result for column 'a_1'bz$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 1z$by index: wrong result for column -1z$by index: wrong result for column -2cza_za1i) rRowr"rr5r6r( assertEqualr1 IndexErrorr;r r r CheckSqliteRowIndexcs.  & ( ( ( ( z#RowFactoryTests.CheckSqliteRowIndexcCstj|j_|jd}||dd|t|dWdn1sR0Y|t|dWdn1s0YdS)Nuselect 1 as ÿÿr=uŸß) rrEr"rr5r6rFr1rGr;r r r CheckSqliteRowIndexUnicodes  & z*RowFactoryTests.CheckSqliteRowIndexUnicodecCstj|j_|jd}||ddd||ddd||ddd||ddd||ddd||ddd ||d d d ||d dd ||dddd||ddd ddS)Nzselect 1, 2, 3, 4rr r=)r=)r?rL)r?rL)r=r?rLrBrA)rL)rLrMrMr?)r=rL)rMr?)rrEr"rr5r6rFr;r r r CheckSqliteRowSlices z#RowFactoryTests.CheckSqliteRowSlicecCs(tj|j_|jd}|D]}qdS)z$Checks if the row object is iterableselect 1 as a, 2 as bN)rrEr"rr5r6)r rrr r r CheckSqliteRowIters z"RowFactoryTests.CheckSqliteRowItercCs>tj|j_|jd}t|}|||d|dfdS)z4Checks if the row object can be converted to a tuplerOar>N)rrEr"rr5r6tuplerF)r rtr r r CheckSqliteRowAsTuples z%RowFactoryTests.CheckSqliteRowAsTuplecCsNtj|j_|jd}t|}||d|d||d|ddS)zCChecks if the row object can be correctly converted to a dictionaryrOrQr>N)rrEr"rr5r6r7rF)r rrr r r CheckSqliteRowAsDicts  z$RowFactoryTests.CheckSqliteRowAsDictcCstj|j_|jd}|jd}|jd}|jd}|jd}|||k|||k|||k|||k|||k||tk|||k|||k|||k|||k|||k||tk| t ||kWdn1s00Y| t ||kWdn1sd0Y| t ||kWdn1s0Y| t ||kWdn1s0Y| t |t |dS)z6Checks if the row object compares and hashes correctlyrOzselect 1 as a, 3 as bzselect 1 as b, 2 as azselect 2 as b, 1 as aN) rrEr"rr5r6 assertTrueZ assertFalseobjectr1r2rFhash)r Zrow_1Zrow_2Zrow_3Zrow_4Zrow_5r r r CheckSqliteRowHashCmps6  ( ( ( (z%RowFactoryTests.CheckSqliteRowHashCmpcCsNtj|j_|jd}t|}|tt |tt || |t dS)z2 Checks if the row object can act like a sequence rON) rrEr"rr5r6rRrFr:reversedr(r)r rZas_tupler r r CheckSqliteRowAsSequences  z(RowFactoryTests.CheckSqliteRowAsSequencecCsDGdddt}tj|j_|t|jj||ttj|ddS)Nc@seZdZejZdS)z8RowFactoryTests.CheckFakeCursorClass..FakeCursorN)rrrrr __class__r r r r FakeCursorsr]r )strrrEr"rr1r2r)r r]r r r CheckFakeCursorClasss z$RowFactoryTests.CheckFakeCursorClasscCs|jdSrr%r#r r r r'szRowFactoryTests.tearDownN)rrrr$r<rHrKrNrPrTrUrYr[r_r'r r r r r9Zs "  r9c@s<eZdZddZddZddZddZd d Zd d Zd S)TextFactoryTestscCstd|_dSr+r,r#r r r r$szTextFactoryTests.setUpcCs2d}|jd|f}|t|dtddS)N Österreichselect ?rtype of row[0] must be unicode)r"r5r6rFtyper^r austriarr r r CheckUnicodeszTextFactoryTests.CheckUnicodecCsRt|j_d}|jd|f}|t|dtd||d|dddS)Nrarbrztype of row[0] must be bytesutf-8z(column must equal original data in UTF-8)bytesr" text_factoryr5r6rFrdencoderer r r CheckStrings zTextFactoryTests.CheckStringcCsTdd|j_d}|jd|f}|t|dtd||ddddS) NcSs t|ddS)Nrhignore)r^xr r r r.r/z.TextFactoryTests.CheckCustom..rarbrrcZreichz!column must contain original data) r"rjr5r6rFrdr^rVendswithrer r r CheckCustoms  zTextFactoryTests.CheckCustomcCsjtj|j_d}d}|jd|f}|jd|f}|t|dtd|t|dtddS)NraZ Deutchlandrbrz!type of non-ASCII row must be strz"type of ASCII-only row must be str) rZOptimizedUnicoder"rjr5r6rFrdr^)r rfZgermanyZa_rowZd_rowr r r CheckOptimizedUnicodes z&TextFactoryTests.CheckOptimizedUnicodecCs|jdSrr%r#r r r r' szTextFactoryTests.tearDownN) rrrr$rgrlrqrrr'r r r r r`s  r`c@s<eZdZddZddZddZddZd d Zd d Zd S)%TextFactoryTestsWithEmbeddedZeroBytescCs*td|_|jd|jdddS)Nrzcreate table test (value text)z#insert into test (value) values (?))ab)rr!r"r5r#r r r r$s  z+TextFactoryTestsWithEmbeddedZeroBytes.setUpcCs8|jd}|t|dt||dddS)Nselect value from testrrt)r"r5r6assertIsrdr^rFr;r r r rlsz1TextFactoryTestsWithEmbeddedZeroBytes.CheckStringcCs@t|j_|jd}|t|dt||dddSNrurab)rir"rjr5r6rvrdrFr;r r r CheckBytessz0TextFactoryTestsWithEmbeddedZeroBytes.CheckBytescCs@t|j_|jd}|t|dt||dddSrw) bytearrayr"rjr5r6rvrdrFr;r r r CheckBytearray sz4TextFactoryTestsWithEmbeddedZeroBytes.CheckBytearraycCsDdd|j_|jd}|t|dt||dddS)NcSs|Srr rnr r r r.(r/zCTextFactoryTestsWithEmbeddedZeroBytes.CheckCustom..rurrx)r"rjr5r6rvrdrirFr;r r r rq&s z1TextFactoryTestsWithEmbeddedZeroBytes.CheckCustomcCs|jdSrr%r#r r r r'-sz.TextFactoryTestsWithEmbeddedZeroBytes.tearDownN) rrrr$rlryr{rqr'r r r r rss rscCs^ttd}ttd}ttd}ttd}ttd}ttd}t||||||fS)NZCheck) unittestZ makeSuiterr*r4r9r`rsZ TestSuite)Zconnection_suiteZ cursor_suiteZrow_suite_compatZ row_suiteZ text_suiteZtext_zero_bytes_suiter r r suite0s      r}cCst}|tdSr)r|ZTextTestRunnerrunr})Zrunnerr r r test9sr__main__)r|Zsqlite3rcollections.abcrrrrrrZTestCaserr*r4r9r`rsr}rrr r r r s   %"