xref: /sqlite-3.40.0/test/numcast.test (revision 0e5fba79)
1# 2013 March 20
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# This particular file does testing of casting strings into numeric
13# values.
14#
15
16set testdir [file dirname $argv0]
17source $testdir/tester.tcl
18
19foreach enc {utf8 utf16le utf16be} {
20  do_test numcast-$enc.0 {
21    db close
22    sqlite3 db :memory:
23    db eval "PRAGMA encoding='$enc'"
24    set x [db eval {PRAGMA encoding}]
25    string map {- {}} [string tolower $x]
26  } $enc
27  foreach {idx str rval ival} {
28     1 12345.0       12345.0    12345
29     2 12345.0e0     12345.0    12345
30     3 -12345.0e0   -12345.0   -12345
31     4 -12345.25    -12345.25  -12345
32     5 { -12345.0}  -12345.0   -12345
33     6 { 876xyz}       876.0      876
34     7 { 456ķ89}       456.0      456
35     8 { Ġ 321.5}        0.0        0
36  } {
37    do_test numcast-$enc.$idx.1 {
38      db eval {SELECT CAST($str AS real)}
39    } $rval
40    do_test numcast-$enc.$idx.2 {
41      db eval {SELECT CAST($str AS integer)}
42    } $ival
43  }
44}
45
46finish_test
47