
    dafE                     x    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                          yy)    N   )memory_databasec                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
	DumpTestsc                 v    t        j                  d      | _        | j                  j                         | _        y )Nz:memory:)sqliteconnectcxcursorcuselfs    6/root/Python-3.12.4/Lib/test/test_sqlite3/test_dump.pysetUpzDumpTests.setUp	   s$    ..,''.."    c                 8    | j                   j                          y N)r
   closer   s    r   tearDownzDumpTests.tearDown   s    r   c                 R   g d}|D cg c]  }| j                   j                  |       c} | j                  j                         }|D cg c]  }| }}dg|z   dgz   }t	        t        |            D cg c]  }| j                  ||   ||          c} y c c}w c c}w c c}w )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);BEGIN TRANSACTION;COMMIT;)r   executer
   iterdumprangelenassertEqual)r   expected_sqlssiactual_sqlss        r   test_table_dumpzDumpTests.test_table_dump   s    : &33	3GG"#nQqnn-.>K 3}-.	0 
		-*KN	; 	0 	4$	0s   "B	B7B$c                 V   g d}| j                   j                  dj                  |             |d   j                  dd      |d<   |j	                  dd       |j                  g d       | j                  j                         D cg c]  }| }}| j                  ||       y c c}w )	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   )	r   executescriptjoinreplaceinsertextendr
   r   r   )r   expectedstmtactuals       r   test_dump_autoincrementz!DumpTests.test_dump_autoincrement6   s    

 	bggh/0 qk))&#6/0 
 	 $(77#3#3#564$666* 7s   	B&c                 <   | j                   j                  d       | j                   j                  d       | j                   j                  d       | j                   j                  dd t        d      D               | j                   j                  dd t        d	      D               | j                  j                          t               5 }d
j                  | j                  j                               }|j                  |       |j                         }d}|D ]\  \  }}| j                  ||      5  |j                  d|f      }|j                         }| j                  |d   d   |       d d d        ^ 	 d d d        y # 1 sw Y   rxY w# 1 sw Y   y xY w)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   ywr   N .0_s     r   	<genexpr>zBDumpTests.test_dump_autoincrement_create_new_db.<locals>.<genexpr>N        8SQ8S   	   zINSERT INTO t2 VALUES(?)c              3       K   | ]  }d   ywr2   r3   r4   s     r   r7   zBDumpTests.test_dump_autoincrement_create_new_db.<locals>.<genexpr>O   r8   r9      r$   ))t1r:   )t2r<   )tableseqzc
                        SELECT "seq" FROM "sqlite_sequence" WHERE "name" == ?
                    r   )r   r   executemanyr   r
   commitr   r(   r   r'   r   subTestfetchallr   )	r   cx2querycu2datasetr?   r@   resrowss	            r   %test_dump_autoincrement_create_new_dbz/DumpTests.test_dump_autoincrement_create_new_dbJ   s\   +,PQPQ68S%PQ(8ST68S%PQ(8ST 	6#GGDGG,,./Ee$**,CG & 6
s\\3\7 6++ '#C <<>D$$T!WQZ56 66	6 	66 6	6 	6s%   A(F6<F2
FFFFc                 $    G d d      }|| j                   _        d}d}d||dg}| j                  j                  |       | j                  j                  |       t	        | j                   j                               }| j                  ||       y )Nc                       e Zd Zd Zd Zy)6DumpTests.test_unorderable_row.<locals>.UnorderableRowc                     || _         y r   row)r   r   rQ   s      r   __init__z?DumpTests.test_unorderable_row.<locals>.UnorderableRow.__init__f   s	    r   c                      | j                   |   S r   rP   )r   indexs     r   __getitem__zBDumpTests.test_unorderable_row.<locals>.UnorderableRow.__getitem__h   s    xx&r   N)__name__
__module____qualname__rR   rU   r3   r   r   UnorderableRowrN   e   s    'r   rY   zCREATE TABLE "alpha" ("one");zCREATE TABLE "beta" ("two");r   r   r
   row_factoryr   r   listr   r   )r   rY   CREATE_ALPHACREATE_BETAr,   gots         r   test_unorderable_rowzDumpTests.test_unorderable_rowc   s    	' 	'
 -:8 	 	$%477##%&3'r   c                 &   d }|| j                   _        d}d|dg}| j                  j                  |       t	        | j                   j                               }| j                  ||       | j                  | j                   j                  |       y )Nc                 n    | j                   D cg c]  }|d   	 }}t        t        ||            S c c}w )Nr   )descriptiondictzip)r   rQ   colfieldss       r   dict_factoryz<DumpTests.test_dump_custom_row_factory.<locals>.dict_factoryz   s4    (*7c!f7F7FC()) 8s   2zCREATE TABLE test(t);r   r   rZ   )r   rh   CREATE_TABLEr,   r.   s        r   test_dump_custom_row_factoryz&DumpTests.test_dump_custom_row_factoryx   sw    	* +.(,	B%dgg&&()6*,,l;r   c                     g d}| j                   j                  d       t        | j                  j	                               }| j                  ||       y )N)
r   zPRAGMA writable_schema=ON;zINSERT INTO sqlite_master(type,name,tbl_name,rootpage,sql)VALUES('table','test','test',0,'CREATE VIRTUAL TABLE test USING fts4(example)');zDCREATE TABLE 'test_content'(docid INTEGER PRIMARY KEY, 'c0example');zBCREATE TABLE 'test_docsize'(docid INTEGER PRIMARY KEY, size BLOB);zCREATE TABLE 'test_segdir'(level INTEGER,idx INTEGER,start_block INTEGER,leaves_end_block INTEGER,end_block INTEGER,root BLOB,PRIMARY KEY(level, idx));zFCREATE TABLE 'test_segments'(blockid INTEGER PRIMARY KEY, block BLOB);z=CREATE TABLE 'test_stat'(id INTEGER PRIMARY KEY, value BLOB);zPRAGMA writable_schema=OFF;r   z-CREATE VIRTUAL TABLE test USING fts4(example))r   r   r\   r
   r   r   )r   r,   r.   s      r   test_dump_virtual_tablesz"DumpTests.test_dump_virtual_tables   sC    
 	GHdgg&&()6*r   N)rV   rW   rX   r   r   r"   r/   rK   r`   rj   rl   r3   r   r   r   r      s+    #$0L+(62(*<+r   r   __main__)	unittestsqlite3r   
test_dbapir   TestCaser   rV   mainr3   r   r   <module>rs      s?      'Q+!! Q+h zHMMO r   