Annotation of embedaddon/sqlite3/test/tkt-b1d3a2e531.test, revision 1.1.1.1

1.1       misho       1: # 2011 August 22
                      2: #
                      3: # The author disclaims copyright to this source code.  In place of
                      4: # a legal notice, here is a blessing:
                      5: #
                      6: #    May you do good and not evil.
                      7: #    May you find forgiveness for yourself and forgive others.
                      8: #    May you share freely, never taking more than you give.
                      9: #
                     10: #***********************************************************************
                     11: # This file implements regression tests for SQLite library.
                     12: #
                     13: # This file implements tests for foreign keys. Specifically, it tests
                     14: # that ticket b1d3a2e531 has been fixed.
                     15: #
                     16: 
                     17: set testdir [file dirname $argv0]
                     18: source $testdir/tester.tcl
                     19: 
                     20: ifcapable {!foreignkey||!trigger} {
                     21:   finish_test
                     22:   return
                     23: }
                     24: set testprefix tkt-b1d3a2e531
                     25: 
                     26: do_execsql_test 1.0 { PRAGMA foreign_keys = ON }
                     27: 
                     28: do_execsql_test 1.1 {
                     29:   CREATE TABLE pp(x PRIMARY KEY);
                     30:   CREATE TABLE cc(y REFERENCES pp DEFERRABLE INITIALLY DEFERRED);
                     31:   INSERT INTO pp VALUES('abc');
                     32:   INSERT INTO cc VALUES('abc');
                     33: }
                     34: do_execsql_test 1.2 {
                     35:   BEGIN;
                     36:     DROP TABLE pp;
                     37:     DROP TABLE cc;
                     38:   COMMIT;
                     39: }
                     40: do_execsql_test 1.3 {
                     41:   CREATE TABLE pp(x PRIMARY KEY);
                     42:   CREATE TABLE cc(y REFERENCES pp DEFERRABLE INITIALLY DEFERRED);
                     43:   INSERT INTO pp VALUES('abc');
                     44:   INSERT INTO cc VALUES('abc');
                     45: }
                     46: do_execsql_test 1.4 {
                     47:   BEGIN;
                     48:     DROP TABLE cc;
                     49:     DROP TABLE pp;
                     50:   COMMIT;
                     51: }
                     52: 
                     53: do_execsql_test 2.1 {
                     54:   CREATE TABLE pp(x PRIMARY KEY);
                     55:   CREATE TABLE cc(
                     56:     y INTEGER PRIMARY KEY REFERENCES pp DEFERRABLE INITIALLY DEFERRED
                     57:   );
                     58:   INSERT INTO pp VALUES(5);
                     59:   INSERT INTO cc VALUES(5);
                     60: }
                     61: do_execsql_test 2.2 {
                     62:   BEGIN;
                     63:     DROP TABLE pp;
                     64:     DROP TABLE cc;
                     65:   COMMIT;
                     66: }
                     67: do_execsql_test 2.3 {
                     68:   CREATE TABLE pp(x PRIMARY KEY);
                     69:   CREATE TABLE cc(
                     70:     y INTEGER PRIMARY KEY REFERENCES pp DEFERRABLE INITIALLY DEFERRED
                     71:   );
                     72:   INSERT INTO pp VALUES(5);
                     73:   INSERT INTO cc VALUES(5);
                     74: }
                     75: do_execsql_test 2.4 {
                     76:   BEGIN;
                     77:     DROP TABLE cc;
                     78:     DROP TABLE pp;
                     79:   COMMIT;
                     80: }
                     81: 
                     82: do_execsql_test 3.1 {
                     83:   CREATE TABLE pp1(x PRIMARY KEY);
                     84:   CREATE TABLE cc1(y REFERENCES pp1 DEFERRABLE INITIALLY DEFERRED);
                     85: 
                     86:   CREATE TABLE pp2(x PRIMARY KEY);
                     87:   CREATE TABLE cc2(y REFERENCES pp1 DEFERRABLE INITIALLY DEFERRED);
                     88: 
                     89:   INSERT INTO pp1 VALUES(2200);
                     90:   INSERT INTO cc1 VALUES(NULL);
                     91: 
                     92:   INSERT INTO pp2 VALUES(2200);
                     93:   INSERT INTO cc2 VALUES(2200);
                     94: }
                     95: do_catchsql_test 3.2 {
                     96:   BEGIN;
                     97:     DELETE FROM pp2;
                     98:     DROP TABLE pp1;
                     99:     DROP TABLE cc1;
                    100:   COMMIT;
                    101: } {1 {foreign key constraint failed}}
                    102: do_catchsql_test 3.3 {
                    103:     DROP TABLE cc2;
                    104:   COMMIT;
                    105: } {0 {}}
                    106: 
                    107: 
                    108: 
                    109: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>