
    <e                     v    d dl Z d dlZddlmZ  G d de j                  Zedk    r e j                     dS dS )    N   )memory_databasec                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )	DumpTestsc                 t    t          j        d          | _        | j                                        | _        d S )Nz:memory:)sqliteconnectcxcursorcuselfs    2/usr/lib/python3.11/test/test_sqlite3/test_dump.pysetUpzDumpTests.setUp	   s*    .,,'..""    c                 8    | j                                          d S N)r
   closer   s    r   tearDownzDumpTests.tearDown   s    r   c                      g d fdD               j                                         }d |D             dgz   dgz    fdt          t                              D              d S )N)
z#CREATE TABLE "index"("index" blob);z"INSERT INTO "index" VALUES(X'01');z3CREATE TABLE "quoted""table"("quoted""field" text);z4INSERT INTO "quoted""table" VALUES('quoted''value');zCREATE TABLE t1(id integer primary key, s1 text, t1_i1 integer not null, i2 integer, unique (s1), constraint t1_idx1 unique (i2));z'INSERT INTO "t1" VALUES(1,'foo',10,20);z(INSERT INTO "t1" VALUES(2,'foo2',30,30);ztCREATE TABLE t2(id integer, t2_i1 integer, t2_i2 integer, primary key (id),foreign key(t2_i1) references t1(t1_i1));zrCREATE TRIGGER trigger_1 update of t1_i1 on t1 begin update t2 set t2_i1 = new.t1_i1 where t2_i1 = old.t1_i1; end;z;CREATE VIEW v1 as select * from t1 left join t2 using (id);c                 D    g | ]}j                             |          S  )r   execute).0sr   s     r   
<listcomp>z-DumpTests.test_table_dump.<locals>.<listcomp>.   s'    333		333r   c                     g | ]}|S r   r   )r   r   s     r   r   z-DumpTests.test_table_dump.<locals>.<listcomp>0   s    nnnQqnnnr   BEGIN TRANSACTION;COMMIT;c                 T    g | ]$}                     |         |                   %S r   )assertEqual)r   iactual_sqlsexpected_sqlsr   s     r   r   z-DumpTests.test_table_dump.<locals>.<listcomp>3   sB     	0 	0 	0 
		-*KN	;	; 	0 	0 	0r   )r
   iterdumprangelen)r   r"   r#   r$   s   ` @@r   test_table_dumpzDumpTests.test_table_dump   s      : 	4333]3333G$n!nnn-.>K	0 	0 	0 	0 	0 	03}--..	0 	0 	0 	0 	0 	0r   c                 r   g d}| j                             d                    |                     |d                             dd          |d<   |                    dd           |                    g d           d	 | j                                        D             }|                     ||           d S )
N)z9CREATE TABLE "t1" (id integer primary key autoincrement);zINSERT INTO "t1" VALUES(NULL);z9CREATE TABLE "t2" (id integer primary key autoincrement); r   NULL1r   r   )zDELETE FROM "sqlite_sequence";z-INSERT INTO "sqlite_sequence" VALUES('t1',1);r   c                     g | ]}|S r   r   )r   stmts     r   r   z5DumpTests.test_dump_autoincrement.<locals>.<listcomp>G   s    6664$666r   )	r   executescriptjoinreplaceinsertextendr
   r%   r!   )r   expectedactuals      r   test_dump_autoincrementz!DumpTests.test_dump_autoincrement6   s    
 
 

 	bggh//000 qk))&#66/000 
 
 
 	 	 	 7647#3#3#5#56666*****r   c                    | j                             d           | j                             d           | j                             d           | j                             dd t          d          D                        | j                             dd t          d	          D                        | j                                         t                      5 }d
                    | j                                                  }|	                    |           |
                                }d}|D ]\  }}|                     ||          5  |                    d|f          }|                                }|                     |d         d         |           d d d            n# 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )NzBEGIN TRANSACTIONz6CREATE TABLE t1 (id integer primary key autoincrement)z6CREATE TABLE t2 (id integer primary key autoincrement)zINSERT INTO t1 VALUES(?)c              3      K   | ]}d V  dS r   Nr   r   _s     r   	<genexpr>zBDumpTests.test_dump_autoincrement_create_new_db.<locals>.<genexpr>N   "      8S8SQ8S8S8S8S8S8Sr   	   zINSERT INTO t2 VALUES(?)c              3      K   | ]}d V  dS r9   r   r:   s     r   r<   zBDumpTests.test_dump_autoincrement_create_new_db.<locals>.<genexpr>O   r=   r      r*   ))t1r>   )t2r@   )tableseqzc
                        SELECT "seq" FROM "sqlite_sequence" WHERE "name" == ?
                    r   )r   r   executemanyr&   r
   commitr   r0   r%   r/   r   subTestfetchallr!   )	r   cx2querycu2datasetrC   rD   resrowss	            r   %test_dump_autoincrement_create_new_dbz/DumpTests.test_dump_autoincrement_create_new_dbJ   s5   +,,,PQQQPQQQ68S8S%PQ((8S8S8STTT68S8S%PQ((8S8S8STTT 	6#GGDG,,..//Ee$$$**,,CG & 6 6
s\\3\77 6 6++ '# #C <<>>D$$T!WQZ5556 6 6 6 6 6 6 6 6 6 6 6 6 6 66	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s8   A6GAF*G*F..G1F.2GGGc                 ,    G d d          }|| j         _        d}d}d||dg}| j                            |           | j                            |           t	          | j                                                   }|                     ||           d S )Nc                       e Zd Zd Zd ZdS )6DumpTests.test_unorderable_row.<locals>.UnorderableRowc                     || _         d S r   row)r   r   rU   s      r   __init__z?DumpTests.test_unorderable_row.<locals>.UnorderableRow.__init__f   s    r   c                     | j         |         S r   rT   )r   indexs     r   __getitem__zBDumpTests.test_unorderable_row.<locals>.UnorderableRow.__getitem__h   s    x&r   N)__name__
__module____qualname__rV   rY   r   r   r   UnorderableRowrR   e   s2          ' ' ' ' 'r   r]   zCREATE TABLE "alpha" ("one");zCREATE TABLE "beta" ("two");r   r   )r
   row_factoryr   r   listr%   r!   )r   r]   CREATE_ALPHACREATE_BETAr4   gots         r   test_unorderable_rowzDumpTests.test_unorderable_rowc   s    	' 	' 	' 	' 	' 	' 	' 	'
 -:8 	 	$$$%%%47##%%&&3'''''r   N)	rZ   r[   r\   r   r   r(   r6   rO   rc   r   r   r   r   r      so        # # #  $0 $0 $0L+ + +(6 6 62( ( ( ( (r   r   __main__)	unittestsqlite3r   
test_dbapir   TestCaser   rZ   mainr   r   r   <module>rj      s         ' ' ' ' ' 'n( n( n( n( n(! n( n( n(b zHMOOOOO r   