Merge branch 'prerelease' of ssh://git.zetetic.net/sqlcipher into prerelease
[sqlcipher.git] / test / tkt-a8a0d2996a.test
blob26449370293f872e09f45fb7d897159696a7fe5a
1 # 2014-03-24
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
11
12 # Tests to verify that arithmetic operators do not change the type of
13 # input operands.  Ticket [a8a0d2996a]
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
18 set testprefix tkt-a8a0d2996a
20 do_execsql_test 1.0 {
21   CREATE TABLE t(x,y);
22   INSERT INTO t VALUES('1','1');
23   SELECT typeof(x), typeof(y) FROM t WHERE 1=x+0 AND y=='1';
24 } {text text}
25 do_execsql_test 1.1 {
26   SELECT typeof(x), typeof(y) FROM t WHERE 1=x-0 AND y=='1';
27 } {text text}
28 do_execsql_test 1.2 {
29   SELECT typeof(x), typeof(y) FROM t WHERE 1=x*1 AND y=='1';
30 } {text text}
31 do_execsql_test 1.3 {
32   SELECT typeof(x), typeof(y) FROM t WHERE 1=x/1 AND y=='1';
33 } {text text}
34 do_execsql_test 1.4 {
35   SELECT typeof(x), typeof(y) FROM t WHERE 1=x%4 AND y=='1';
36 } {text text}
38 do_execsql_test 2.0 {
39   UPDATE t SET x='1xyzzy';
40   SELECT typeof(x), typeof(y) FROM t WHERE 1=x+0 AND y=='1';
41 } {text text}
42 do_execsql_test 2.1 {
43   SELECT typeof(x), typeof(y) FROM t WHERE 1=x-0 AND y=='1';
44 } {text text}
45 do_execsql_test 2.2 {
46   SELECT typeof(x), typeof(y) FROM t WHERE 1=x*1 AND y=='1';
47 } {text text}
48 do_execsql_test 2.3 {
49   SELECT typeof(x), typeof(y) FROM t WHERE 1=x/1 AND y=='1';
50 } {text text}
51 do_execsql_test 2.4 {
52   SELECT typeof(x), typeof(y) FROM t WHERE 1=x%4 AND y=='1';
53 } {text text}
56 do_execsql_test 3.0 {
57   UPDATE t SET x='1.0';
58   SELECT typeof(x), typeof(y) FROM t WHERE 1=x+0 AND y=='1';
59 } {text text}
60 do_execsql_test 3.1 {
61   SELECT typeof(x), typeof(y) FROM t WHERE 1=x-0 AND y=='1';
62 } {text text}
63 do_execsql_test 3.2 {
64   SELECT typeof(x), typeof(y) FROM t WHERE 1=x*1 AND y=='1';
65 } {text text}
66 do_execsql_test 3.3 {
67   SELECT typeof(x), typeof(y) FROM t WHERE 1=x/1 AND y=='1';
68 } {text text}
69 do_execsql_test 3.4 {
70   SELECT typeof(x), typeof(y) FROM t WHERE 1=x%4 AND y=='1';
71 } {text text}
73 do_execsql_test 4.0 {
74   SELECT 1+1.;
75 } {2.0}
76 do_execsql_test 4.1 {
77   SELECT '1.23e64'/'1.0000e+62';
78 } {123.0}
79 do_execsql_test 4.2 {
80   SELECT '100x'+'-2y';
81 } {98}
82 do_execsql_test 4.3 {
83   SELECT '100x'+'4.5y';
84 } {104.5}
85 do_execsql_test 4.4 {
86   SELECT '-9223372036854775807x'-'1x';
87 } {-9223372036854775808}
88 do_execsql_test 4.5 {
89   SELECT '9223372036854775806x'+'1x';
90 } {9223372036854775807}
91 do_execsql_test 4.6 {
92   SELECT '1234x'/'10y', '1234x'/'10.y', '1234x'/'1e1y';
93 } {123 123.4 123.4}
95 finish_test