
    daf0                     z   d dl Z d dlZd dlmZ d Z G d dej                        Z G d de j                        Z	 G d d	e j                        Z
 G d
 de j                        Z G d de j                        Z G d de j                        Z G d de j                        Zedk(  r e j                           yy)    N)Sequencec                 Z    i }t        | j                        D ]  \  }}||   ||d   <    |S )Nr   )	enumeratedescription)cursorrowdidxcols        9/root/Python-3.12.4/Lib/test/test_sqlite3/test_factory.pydict_factoryr      s;    
Af001 SH#a&	H    c                       e Zd Zd Zy)MyCursorc                 `    t        j                  j                  | g|i | t        | _        y N)sqliteCursor__init__r   row_factoryselfargskwargss      r   r   zMyCursor.__init__#   s&    t5d5f5'r   N__name__
__module____qualname__r    r   r   r   r   "   s    (r   r   c                       e Zd Zd Zd Zd Zy)ConnectionFactoryTestsc                     G d dt         j                        } G d dt         j                        }||fD ]F  }| j                  |      5  t        j                  d|      }| j	                  ||       d d d        H y # 1 sw Y   SxY w)Nc                       e Zd Zd Zy)GConnectionFactoryTests.test_connection_factories.<locals>.DefectFactoryc                      y r   r   r   s      r   r   zPConnectionFactoryTests.test_connection_factories.<locals>.DefectFactory.__init__*   s    r   Nr   r   r   r   DefectFactoryr$   )   s    r   r&   c                       e Zd Zd Zy)CConnectionFactoryTests.test_connection_factories.<locals>.OkFactoryc                 J    t        j                  j                  | g|i | y r   )r   
Connectionr   r   s      r   r   zLConnectionFactoryTests.test_connection_factories.<locals>.OkFactory.__init__-   s     !!**4A$A&Ar   Nr   r   r   r   	OkFactoryr(   ,   s    Br   r+   factory:memory:)r   r*   subTestconnectassertIsInstance)r   r&   r+   r-   cons        r   test_connection_factoriesz0ConnectionFactoryTests.test_connection_factories(   s    	F-- 		B)) 	B %i/ 	4Gg. 4nnZA%%c734 4	44 4s   *BB
	c                      G fddt         j                        t        j                  d      }| j                  |j                         | j                  |       y )Nc                   "     e Zd Z fdZ xZS )LConnectionFactoryTests.test_connection_factory_relayed_call.<locals>.Factoryc                 .    d |d<   t        |   |i | y )Nisolation_levelsuperr   r   r   r   Factory	__class__s      r   r   zUConnectionFactoryTests.test_connection_factory_relayed_call.<locals>.Factory.__init__8   s"    ,0()gt-t>v>r   r   r   r   r   __classcell__r=   r<   s   @r   r<   r6   7   s    ? ?r   r<   r.   r,   r   r*   r0   assertIsNoner8   r1   r   r2   r<   s     @r   $test_connection_factory_relayed_callz;ConnectionFactoryTests.test_connection_factory_relayed_call5   sK    	?f'' 	?
 nnZ9#--.c7+r   c                      G fddt         j                        t        j                  dddd d      }| j                  |j                         | j                  |       y )Nc                   "     e Zd Z fdZ xZS )QConnectionFactoryTests.test_connection_factory_as_positional_arg.<locals>.Factoryc                 $    t        |   |i | y r   r9   r;   s      r   r   zZConnectionFactoryTests.test_connection_factory_as_positional_arg.<locals>.Factory.__init__B   s    gt-t>v>r   r>   r@   s   @r   r<   rG   A   s    ? ?r   r<   r.   g      @r   TrA   rC   s     @r   )test_connection_factory_as_positional_argz@ConnectionFactoryTests.test_connection_factory_as_positional_arg@   sS    	?f'' 	? nnZatWE#--.c7+r   N)r   r   r   r3   rD   rI   r   r   r   r!   r!   '   s    4	,,r   r!   c                   $    e Zd Zd Zd Zd Zd Zy)CursorFactoryTestsc                 8    t        j                  d      | _        y Nr.   r   r0   r2   r   s    r   setUpzCursorFactoryTests.setUpK       >>*-r   c                 8    | j                   j                          y r   r2   closerO   s    r   tearDownzCursorFactoryTests.tearDownN       r   c                 H   | j                   j                         }| j                  |t        j                         | j                   j                  t
              }| j                  |t
               | j                   j                  d       }| j                  |t
               y )Nc                     t        |       S r   )r   r2   s    r   <lambda>z5CursorFactoryTests.test_is_instance.<locals>.<lambda>V   s
    (3- r   r,   )r2   r   r1   r   r   r   )r   curs     r   test_is_instancez#CursorFactoryTests.test_is_instanceQ   sm    hhooc6==1hhooh'c8,hhoo&?o@c8,r   c                 
   | j                  t        | j                  j                  d        | j                  t        | j                  j                  d        | j                  t        | j                  j                  d        y )Nc                       y r   r   r   r   r   rZ   z9CursorFactoryTests.test_invalid_factory.<locals>.<lambda>]       r   c                      y r   r   rY   s    r   rZ   z9CursorFactoryTests.test_invalid_factory.<locals>.<lambda>_   r_   r   )assertRaises	TypeErrorr2   r   rO   s    r   test_invalid_factoryz'CursorFactoryTests.test_invalid_factoryY   sQ    )TXX__d;)TXX__lC)TXX__6FGr   N)r   r   r   rP   rU   r\   rc   r   r   r   rK   rK   J   s    .-Hr   rK   c                       e Zd Zd Zd Zd Zy)RowFactoryTestsBackwardsCompatc                 8    t        j                  d      | _        y rM   rN   rO   s    r   rP   z$RowFactoryTestsBackwardsCompat.setUpb   rQ   r   c                     | j                   j                  t              }|j                  d       |j	                         }| j                  |t               |j                          y )Nr,   zselect 4+5 as foo)r2   r   r   executefetchoner1   dictrT   )r   r[   r   s      r   test_is_produced_by_factoryz:RowFactoryTestsBackwardsCompat.test_is_produced_by_factorye   sG    hhooho/'(llnc4(		r   c                 8    | j                   j                          y r   rS   rO   s    r   rU   z'RowFactoryTestsBackwardsCompat.tearDownl   rV   r   N)r   r   r   rP   rk   rU   r   r   r   re   re   a   s    .r   re   c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)RowFactoryTestsc                 v    t        j                  d      | _        t         j                  | j                  _        y rM   )r   r0   r2   Rowr   rO   s    r   rP   zRowFactoryTests.setUpp   s"    >>*-%zzr   c                     d | j                   _        | j                   j                  d      j                         }| j	                  |t
               y )Nc                     t        |      S r   )list)r[   r   s     r   rZ   z5RowFactoryTests.test_custom_factory.<locals>.<lambda>u   s
    S	 r   zselect 1, 2)r2   r   rh   ri   r1   rs   r   r   s     r   test_custom_factoryz#RowFactoryTests.test_custom_factoryt   s;    9hh}-668c4(r   c                    | j                   j                  d      j                         }| j                  |t        j
                         | j                  |d   dd       | j                  |d   dd       | j                  |d   dd	       | j                  |d
   dd       | j                  |d   dd       | j                  |d   dd       | j                  |d   dd       | j                  |d   dd       | j                  t              5  |d    d d d        | j                  t              5  |d    d d d        | j                  t              5  |d    d d d        | j                  t              5  |d    d d d        | j                  t              5  |d    d d d        | j                  t              5  |ddz      d d d        | j                  t              5  |t                   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)Nzselect 1 as a_1, 2 as ba_1   z&by name: wrong result for column 'a_1'b   z$by name: wrong result for column 'b'A_1z&by name: wrong result for column 'A_1'Bz$by name: wrong result for column 'B'r   z#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 -2cza_za1i  )
r2   rh   ri   r1   r   rp   assertEqualra   
IndexErrorcomplexrt   s     r   test_sqlite_row_indexz%RowFactoryTests.test_sqlite_row_indexy   s   hh89BBDc6::.UQ(PQS1&LMUQ(PQS1&LMQ$IJQ$IJR!%KLR!%KLz* 	H	z* 	M	z* 	M	z* 	F	z* 	G	z* 	4L	z* 		N	 		 		 		 		 		 		 		 	sT   G;2HH8HH+>	H7$I;HHHH(+H47I Ic                 <   | j                   j                  d      j                         }| j                  |d   d       | j	                  t
              5  |d    d d d        | j	                  t
              5  |d    d d d        y # 1 sw Y   -xY w# 1 sw Y   y xY w)Nu   select 1 as ÿ   ÿrx   u   Ÿ   ß)r2   rh   ri   r   ra   r   rt   s     r   test_sqlite_row_index_unicodez-RowFactoryTests.test_sqlite_row_index_unicode   s    hh12;;=Va(z* 	M	z* 	K	 		 		 	s   B7BBBc                    | j                   j                  d      j                         }| j                  |dd d       | j                  |dd d       | j                  |dd d       | j                  |dd d       | j                  |dd  d       | j                  |d d d	       | j                  |d
d d       | j                  |d
d  d       | j                  |ddd   d       | j                  |ddd
   d       y )Nzselect 1, 2, 3, 4r   r   rx   )rx      )rz   r   )rz   r      )rx   rz   r   r~   r}   )r   )r   r   r   rz   )rx   r   )r   rz   r2   rh   ri   r   rt   s     r   test_sqlite_row_slicez%RowFactoryTests.test_sqlite_row_slice   s   hh23<<>Qq2&Qq4(Qq6*Qq2&QR),Ra),RT*RS6*QqUV,QqVf-r   c                     | j                   j                  d      j                         }|D cg c]  }| }}| j                  |ddg       |D cg c]  }| }}| j                  |ddg       y c c}w c c}w )Nselect 1 as a, 2 as brx   rz   r   )r   r   r   itemss       r   test_sqlite_row_iterz$RowFactoryTests.test_sqlite_row_iter   s|    hh67@@B !$$$$A' !$$$$A' % %s   	A1	A6c                     | j                   j                  d      j                         }t        |      }| j	                  ||d   |d   f       y Nr   ary   )r2   rh   ri   tupler   )r   r   ts      r   test_sqlite_row_as_tuplez(RowFactoryTests.test_sqlite_row_as_tuple   sF    hh67@@B#JSXs3x01r   c                     | j                   j                  d      j                         }t        |      }| j	                  |d   |d          | j	                  |d   |d          y r   )r2   rh   ri   rj   r   )r   r   r	   s      r   test_sqlite_row_as_dictz'RowFactoryTests.test_sqlite_row_as_dict   sY    hh67@@BI3S*3S*r   c                 ^   | j                   j                  d      j                         }| j                   j                  d      j                         }| j                   j                  d      j                         }| j                   j                  d      j                         }| j                   j                  d      j                         }| j                  ||k(         | j                  ||k(         | j	                  ||k(         | j	                  ||k(         | j	                  ||k(         | j	                  |t               k(         | j	                  ||k7         | j	                  ||k7         | j                  ||k7         | j                  ||k7         | j                  ||k7         | j                  |t               k7         | j                  t              5  ||kD   d d d        | j                  t              5  ||k   d d d        | j                  t              5  ||k\   d d d        | j                  t              5  ||k   d d d        | j                  t        |      t        |             y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   RxY w)Nr   zselect 1 as a, 3 as bzselect 1 as b, 2 as azselect 2 as b, 1 as a)
r2   rh   ri   
assertTrueassertFalseobjectra   rb   r   hash)r   row_1row_2row_3row_4row_5s         r   test_sqlite_row_hash_cmpz(RowFactoryTests.test_sqlite_row_hash_cmp   s,     !89BBD  !89BBD  !89BBD  !89BBD  !89BBD''%(%(%(&(*+%(%(''')*y) 	EM	y) 	EM	y) 	UN	y) 	UN	 	ed5k2	 		 		 		 	s0   #I?J)JJ#?JJJ #J,c                    | j                   j                  d      j                         }t        |      }| j	                  t        t        |            t        t        |                   | j                  |t               y )Nr   )	r2   rh   ri   r   r   rs   reversedr1   r   )r   r   as_tuples      r   test_sqlite_row_as_sequencez+RowFactoryTests.test_sqlite_row_as_sequence   s\    hh67@@B:hsm,d8H3E.FGc8,r   c                     | j                   j                  d      j                         }| j                  |j	                         ddg       y r   )r2   rh   ri   r   keysrt   s     r   test_sqlite_row_keysz$RowFactoryTests.test_sqlite_row_keys   s:    hh67@@Bc3Z0r   c                      G d dt               }| j                  t        | j                  j                  |       | j                  t        t
        j                   |       d       y )Nc                   $    e Zd Zej                  Zy):RowFactoryTests.test_fake_cursor_class.<locals>.FakeCursorN)r   r   r   r   r   r=   r   r   r   
FakeCursorr      s    Ir   r   r   )strra   rb   r2   r   r   rp   )r   r   s     r   test_fake_cursor_classz&RowFactoryTests.test_fake_cursor_class   sB    	& 	&)TXX__jA)VZZrBr   c                 8    | j                   j                          y r   rS   rO   s    r   rU   zRowFactoryTests.tearDown   rV   r   N)r   r   r   rP   ru   r   r   r   r   r   r   r   r   r   r   rU   r   r   r   rn   rn   o   sE    *)
<."
(2+3B-1
Cr   rn   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TextFactoryTestsc                 8    t        j                  d      | _        y rM   rN   rO   s    r   rP   zTextFactoryTests.setUp  rQ   r   c                     d}| j                   j                  d|f      j                         }| j                  t	        |d         t
        d       y )N   Österreichselect ?r   type of row[0] must be unicode)r2   rh   ri   r   typer   r   austriar   s      r   test_unicodezTextFactoryTests.test_unicode  sC    hhzG:6??Ac!fs,LMr   c                    t         | j                  _        d}| j                  j                  d|f      j	                         }| j                  t        |d         t         d       | j                  |d   |j                  d      d       y )Nr   r   r   ztype of row[0] must be bytesutf-8z(column must equal original data in UTF-8)bytesr2   text_factoryrh   ri   r   r   encoder   s      r   test_stringzTextFactoryTests.test_string  so     %hhzG:6??Ac!fu.LMQ!8:der   c                    d | j                   _        d}| j                   j                  d|f      j                         }| j	                  t        |d         t        d       | j                  |d   j                  d      d       y )Nc                     t        | dd      S )Nr   ignore)r   xs    r   rZ   z.TextFactoryTests.test_custom.<locals>.<lambda>  s    #a(*C r   r   r   r   r   reichz!column must contain original data)	r2   r   rh   ri   r   r   r   r   endswithr   s      r   test_customzTextFactoryTests.test_custom  sk     ChhzG:6??Ac!fs,LMA02UVr   c                 8    | j                   j                          y r   rS   rO   s    r   rU   zTextFactoryTests.tearDown  rV   r   N)r   r   r   rP   r   r   r   rU   r   r   r   r   r     s    .N
fWr   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)%TextFactoryTestsWithEmbeddedZeroBytesc                     t        j                  d      | _        | j                  j                  d       | j                  j                  dd       y )Nr.   zcreate table test (value text)z#insert into test (value) values (?))a b)r   r0   r2   rh   rO   s    r   rP   z+TextFactoryTestsWithEmbeddedZeroBytes.setUp  s:    >>*-9:>Lr   c                     | j                   j                  d      j                         }| j                  t	        |d         t
               | j                  |d   d       y )Nselect value from testr   r   )r2   rh   ri   assertIsr   r   r   rt   s     r   r   z1TextFactoryTestsWithEmbeddedZeroBytes.test_string#  sJ    hh78AACd3q6lC(Q*r   c                     t         | j                  _        | j                  j                  d      j	                         }| j                  t        |d         t                | j                  |d   d       y Nr   r      a b)r   r2   r   rh   ri   r   r   r   rt   s     r   
test_bytesz0TextFactoryTestsWithEmbeddedZeroBytes.test_bytes)  sV     %hh78AACd3q6lE*Q+r   c                     t         | j                  _        | j                  j                  d      j	                         }| j                  t        |d         t                | j                  |d   d       y r   )	bytearrayr2   r   rh   ri   r   r   r   rt   s     r   test_bytearrayz4TextFactoryTestsWithEmbeddedZeroBytes.test_bytearray/  sV     )hh78AACd3q6lI.Q+r   c                     d | j                   _        | j                   j                  d      j                         }| j	                  t        |d         t               | j                  |d   d       y )Nc                     | S r   r   r   s    r   rZ   zCTextFactoryTestsWithEmbeddedZeroBytes.test_custom.<locals>.<lambda>7  s    ! r   r   r   r   )r2   r   rh   ri   r   r   r   r   rt   s     r   r   z1TextFactoryTestsWithEmbeddedZeroBytes.test_custom5  sV     +hh78AACd3q6lE*Q+r   c                 8    | j                   j                          y r   rS   rO   s    r   rU   z.TextFactoryTestsWithEmbeddedZeroBytes.tearDown<  rV   r   N)	r   r   r   rP   r   r   r   r   rU   r   r   r   r   r     s!    M
+,,,r   r   __main__)unittestsqlite3r   collections.abcr   r   r   r   TestCaser!   rK   re   rn   r   r   r   mainr   r   r   <module>r      s   .   $(v}} (
 ,X..  ,FH** H.X%6%6 Rh'' Rhx(( 4 H,=,=  F zHMMO r   