- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / sqlite / src / test / wal6.test
1 # 2010 December 1
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.  The
12 # focus of this file is testing the operation of the library in
13 # "PRAGMA journal_mode=WAL" mode.
14 #
15
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
18 source $testdir/lock_common.tcl
19 source $testdir/wal_common.tcl
20 source $testdir/malloc_common.tcl
21 ifcapable !wal {finish_test ; return }
22
23 #-------------------------------------------------------------------------
24 # Changing to WAL mode in one connection forces the change in others.
25 #
26 db close
27 forcedelete test.db
28
29 set all_journal_modes {delete persist truncate memory off}
30 foreach jmode $all_journal_modes {
31
32         do_test wal6-1.0.$jmode {
33     sqlite3 db test.db
34     execsql "PRAGMA journal_mode = $jmode;"
35         } $jmode
36
37         do_test wal6-1.1.$jmode {
38           execsql {
39             CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
40             INSERT INTO t1 VALUES(1,2);
41             SELECT * FROM t1;
42           }
43         } {1 2}
44
45 # Under Windows, you'll get an error trying to delete
46 # a file this is already opened.  For now, make sure 
47 # we get that error, then close the first connection
48 # so the other tests work.
49 if {$tcl_platform(platform)=="windows"} {
50   if {$jmode=="persist" || $jmode=="truncate"} {
51           do_test wal6-1.2.$jmode.win {
52             sqlite3 db2 test.db
53             catchsql {
54                     PRAGMA journal_mode=WAL;
55             } db2
56           } {1 {disk I/O error}}
57         db2 close
58           db close
59   }
60 }
61
62         do_test wal6-1.2.$jmode {
63           sqlite3 db2 test.db
64           execsql {
65                 PRAGMA journal_mode=WAL;
66                 INSERT INTO t1 VALUES(3,4);
67                 SELECT * FROM t1 ORDER BY a;
68           } db2
69         } {wal 1 2 3 4}
70
71 if {$tcl_platform(platform)=="windows"} {
72   if {$jmode=="persist" || $jmode=="truncate"} {
73           sqlite3 db test.db
74   }
75 }
76
77         do_test wal6-1.3.$jmode {
78           execsql {
79                   SELECT * FROM t1 ORDER BY a;
80           }
81         } {1 2 3 4}
82
83         db close
84         db2 close
85   forcedelete test.db
86
87 }
88
89 finish_test
90