- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / sqlite / src / tool / shell4.test
1 # 2010 July 28
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 #
12 # The focus of this file is testing the CLI shell tool.
13 # These tests are specific to the .stats command.
14 #
15 # $Id: shell4.test,v 1.7 2009/07/17 16:54:48 shaneh Exp $
16 #
17
18 # Test plan:
19 #
20 #   shell4-1.*: Basic tests specific to the "stats" command.
21 #
22
23 set CLI "./sqlite3"
24
25 proc do_test {name cmd expected} {
26   puts -nonewline "$name ..."
27   set res [uplevel $cmd]
28   if {$res eq $expected} {
29     puts Ok
30   } else {
31     puts Error
32     puts "  Got: $res"
33     puts "  Expected: $expected"
34     exit
35   }
36 }
37
38 proc catchcmd {db {cmd ""}} {
39   global CLI
40   set out [open cmds.txt w]
41   puts $out $cmd
42   close $out
43   set line "exec $CLI $db < cmds.txt"
44   set rc [catch { eval $line } msg]
45   list $rc $msg
46 }
47
48 file delete -force test.db test.db.journal
49
50 #----------------------------------------------------------------------------
51 # Test cases shell4-1.*: Tests specific to the "stats" command.
52 #
53
54 # should default to off
55 do_test shell4-1.1.1 {
56   set res [catchcmd "test.db" ".show"]
57   list [regexp {stats: off} $res]
58 } {1}
59
60 do_test shell4-1.1.2 {
61   set res [catchcmd "test.db" ".show"]
62   list [regexp {stats: on} $res]
63 } {0}
64
65 # -stats should turn it on
66 do_test shell4-1.2.1 {
67   set res [catchcmd "-stats test.db" ".show"]
68   list [regexp {stats: on} $res]
69 } {1}
70
71 do_test shell4-1.2.2 {
72   set res [catchcmd "-stats test.db" ".show"]
73   list [regexp {stats: off} $res]
74 } {0}
75
76 # .stats ON|OFF          Turn stats on or off
77 do_test shell4-1.3.1 {
78   catchcmd "test.db" ".stats"
79 } {1 {Error: unknown command or invalid arguments:  "stats". Enter ".help" for help}}
80 do_test shell4-1.3.2 {
81   catchcmd "test.db" ".stats ON"
82 } {0 {}}
83 do_test shell4-1.3.3 {
84   catchcmd "test.db" ".stats OFF"
85 } {0 {}}
86 do_test shell4-1.3.4 {
87   # too many arguments
88   catchcmd "test.db" ".stats OFF BAD"
89 } {1 {Error: unknown command or invalid arguments:  "stats". Enter ".help" for help}}
90
91 # NB. whitespace is important
92 do_test shell4-1.4.1 {
93   set res [catchcmd "test.db" {.show}]
94   list [regexp {stats: off} $res]
95 } {1}
96
97 do_test shell4-1.4.2 {
98   set res [catchcmd "test.db" {.stats ON
99 .show
100 }]
101   list [regexp {stats: on} $res]
102 } {1}
103
104 do_test shell4-1.4.3 {
105   set res [catchcmd "test.db" {.stats OFF
106 .show
107 }]
108   list [regexp {stats: off} $res]
109 } {1}
110
111 # make sure stats not present when off
112 do_test shell4-1.5.1 {
113   set res [catchcmd "test.db" {SELECT 1;}]
114   list [regexp {Memory Used} $res] \
115        [regexp {Heap Usage} $res] \
116        [regexp {Autoindex Inserts} $res]
117 } {0 0 0}
118
119 # make sure stats are present when on
120 do_test shell4-1.5.2 {
121   set res [catchcmd "test.db" {.stats ON
122 SELECT 1;
123 }]
124   list [regexp {Memory Used} $res] \
125        [regexp {Heap Usage} $res] \
126        [regexp {Autoindex Inserts} $res]
127 } {1 1 1}
128
129 puts "CLI tests completed successfully"