xref: /sqlite-3.40.0/test/func4.test (revision 92e21ef0)
169f3d048Smistachkin# 2013 March 10
269f3d048Smistachkin#
369f3d048Smistachkin# The author disclaims copyright to this source code.  In place of
469f3d048Smistachkin# a legal notice, here is a blessing:
569f3d048Smistachkin#
669f3d048Smistachkin#    May you do good and not evil.
769f3d048Smistachkin#    May you find forgiveness for yourself and forgive others.
869f3d048Smistachkin#    May you share freely, never taking more than you give.
969f3d048Smistachkin#
1069f3d048Smistachkin#***********************************************************************
11a17713ffSmistachkin# This file implements regression tests for SQLite library. The focus of
12a17713ffSmistachkin# this file is testing the tointeger() and toreal() functions.
13a17713ffSmistachkin#
14a17713ffSmistachkin# Several of the toreal() tests are disabled on platforms where floating
15a17713ffSmistachkin# point precision is not high enough to represent their constant integer
16a17713ffSmistachkin# expression arguments as double precision floating point values.
1769f3d048Smistachkin#
1869f3d048Smistachkinset testdir [file dirname $argv0]
1969f3d048Smistachkinsource $testdir/tester.tcl
2098ab33a8Smistachkinset saved_tcl_precision $tcl_precision
2198ab33a8Smistachkinset tcl_precision 0
225f8cdac6Sdrhload_static_extension db totype
2369f3d048Smistachkin
24aeddf19eSmistachkinset highPrecision(1) [expr \
255f8cdac6Sdrh    {[db eval {SELECT tointeger(9223372036854775807 + 1);}] eq {{}}}]
26aeddf19eSmistachkin
270057a746Sdrhdo_execsql_test func4-1.1 {
2869f3d048Smistachkin  SELECT tointeger(NULL);
2969f3d048Smistachkin} {{}}
300057a746Sdrhdo_execsql_test func4-1.2 {
3169f3d048Smistachkin  SELECT tointeger('');
3269f3d048Smistachkin} {{}}
330057a746Sdrhdo_execsql_test func4-1.3 {
3469f3d048Smistachkin  SELECT tointeger('   ');
3569f3d048Smistachkin} {{}}
360057a746Sdrhdo_execsql_test func4-1.4 {
3769f3d048Smistachkin  SELECT tointeger('1234');
3869f3d048Smistachkin} {1234}
390057a746Sdrhdo_execsql_test func4-1.5 {
4069f3d048Smistachkin  SELECT tointeger('   1234');
4198ab33a8Smistachkin} {{}}
420057a746Sdrhdo_execsql_test func4-1.6 {
4369f3d048Smistachkin  SELECT tointeger('bad');
4469f3d048Smistachkin} {{}}
450057a746Sdrhdo_execsql_test func4-1.7 {
4669f3d048Smistachkin  SELECT tointeger('0xBAD');
4769f3d048Smistachkin} {{}}
480057a746Sdrhdo_execsql_test func4-1.8 {
4969f3d048Smistachkin  SELECT tointeger('123BAD');
5069f3d048Smistachkin} {{}}
510057a746Sdrhdo_execsql_test func4-1.9 {
5269f3d048Smistachkin  SELECT tointeger('0x123BAD');
5369f3d048Smistachkin} {{}}
540057a746Sdrhdo_execsql_test func4-1.10 {
5569f3d048Smistachkin  SELECT tointeger('123NO');
5669f3d048Smistachkin} {{}}
570057a746Sdrhdo_execsql_test func4-1.11 {
5869f3d048Smistachkin  SELECT tointeger('0x123NO');
5969f3d048Smistachkin} {{}}
600057a746Sdrhdo_execsql_test func4-1.12 {
6169f3d048Smistachkin  SELECT tointeger('-0x1');
6269f3d048Smistachkin} {{}}
630057a746Sdrhdo_execsql_test func4-1.13 {
6469f3d048Smistachkin  SELECT tointeger('-0x0');
6569f3d048Smistachkin} {{}}
660057a746Sdrhdo_execsql_test func4-1.14 {
6769f3d048Smistachkin  SELECT tointeger('0x0');
6869f3d048Smistachkin} {{}}
690057a746Sdrhdo_execsql_test func4-1.15 {
7069f3d048Smistachkin  SELECT tointeger('0x1');
7169f3d048Smistachkin} {{}}
720057a746Sdrhdo_execsql_test func4-1.16 {
7369f3d048Smistachkin  SELECT tointeger(-1);
7469f3d048Smistachkin} {-1}
750057a746Sdrhdo_execsql_test func4-1.17 {
7669f3d048Smistachkin  SELECT tointeger(-0);
7769f3d048Smistachkin} {0}
780057a746Sdrhdo_execsql_test func4-1.18 {
7969f3d048Smistachkin  SELECT tointeger(0);
8069f3d048Smistachkin} {0}
810057a746Sdrhdo_execsql_test func4-1.19 {
8269f3d048Smistachkin  SELECT tointeger(1);
8369f3d048Smistachkin} {1}
840057a746Sdrhdo_execsql_test func4-1.20 {
8569f3d048Smistachkin  SELECT tointeger(-1.79769313486232e308 - 1);
86ee1c64edSmistachkin} {{}}
870057a746Sdrhdo_execsql_test func4-1.21 {
8869f3d048Smistachkin  SELECT tointeger(-1.79769313486232e308);
89ee1c64edSmistachkin} {{}}
900057a746Sdrhdo_execsql_test func4-1.22 {
9169f3d048Smistachkin  SELECT tointeger(-1.79769313486232e308 + 1);
92ee1c64edSmistachkin} {{}}
930057a746Sdrhdo_execsql_test func4-1.23 {
9469f3d048Smistachkin  SELECT tointeger(-9223372036854775808 - 1);
9569f3d048Smistachkin} {-9223372036854775808}
960057a746Sdrhdo_execsql_test func4-1.24 {
9769f3d048Smistachkin  SELECT tointeger(-9223372036854775808);
9869f3d048Smistachkin} {-9223372036854775808}
990057a746Sdrhdo_execsql_test func4-1.25 {
10069f3d048Smistachkin  SELECT tointeger(-9223372036854775808 + 1);
10169f3d048Smistachkin} {-9223372036854775807}
1020057a746Sdrhdo_execsql_test func4-1.26 {
10398ab33a8Smistachkin  SELECT tointeger(-9223372036854775807 - 1);
10498ab33a8Smistachkin} {-9223372036854775808}
10598ab33a8Smistachkindo_execsql_test func4-1.27 {
10698ab33a8Smistachkin  SELECT tointeger(-9223372036854775807);
10798ab33a8Smistachkin} {-9223372036854775807}
10898ab33a8Smistachkindo_execsql_test func4-1.28 {
10998ab33a8Smistachkin  SELECT tointeger(-9223372036854775807 + 1);
11098ab33a8Smistachkin} {-9223372036854775806}
11198ab33a8Smistachkindo_execsql_test func4-1.29 {
11269f3d048Smistachkin  SELECT tointeger(-2147483648 - 1);
11369f3d048Smistachkin} {-2147483649}
11498ab33a8Smistachkindo_execsql_test func4-1.30 {
11569f3d048Smistachkin  SELECT tointeger(-2147483648);
11669f3d048Smistachkin} {-2147483648}
11798ab33a8Smistachkindo_execsql_test func4-1.31 {
11869f3d048Smistachkin  SELECT tointeger(-2147483648 + 1);
11969f3d048Smistachkin} {-2147483647}
12098ab33a8Smistachkindo_execsql_test func4-1.32 {
12169f3d048Smistachkin  SELECT tointeger(2147483647 - 1);
12269f3d048Smistachkin} {2147483646}
12398ab33a8Smistachkindo_execsql_test func4-1.33 {
12469f3d048Smistachkin  SELECT tointeger(2147483647);
12569f3d048Smistachkin} {2147483647}
12698ab33a8Smistachkindo_execsql_test func4-1.34 {
12769f3d048Smistachkin  SELECT tointeger(2147483647 + 1);
12869f3d048Smistachkin} {2147483648}
12998ab33a8Smistachkindo_execsql_test func4-1.35 {
13069f3d048Smistachkin  SELECT tointeger(9223372036854775807 - 1);
13169f3d048Smistachkin} {9223372036854775806}
13298ab33a8Smistachkindo_execsql_test func4-1.36 {
13369f3d048Smistachkin  SELECT tointeger(9223372036854775807);
13469f3d048Smistachkin} {9223372036854775807}
135aeddf19eSmistachkinif {$highPrecision(1)} {
13698ab33a8Smistachkin  do_execsql_test func4-1.37 {
13769f3d048Smistachkin    SELECT tointeger(9223372036854775807 + 1);
1380057a746Sdrh  } {{}}
139aeddf19eSmistachkin}
14098ab33a8Smistachkindo_execsql_test func4-1.38 {
14169f3d048Smistachkin  SELECT tointeger(1.79769313486232e308 - 1);
142ee1c64edSmistachkin} {{}}
14398ab33a8Smistachkindo_execsql_test func4-1.39 {
14469f3d048Smistachkin  SELECT tointeger(1.79769313486232e308);
145ee1c64edSmistachkin} {{}}
14698ab33a8Smistachkindo_execsql_test func4-1.40 {
14769f3d048Smistachkin  SELECT tointeger(1.79769313486232e308 + 1);
148ee1c64edSmistachkin} {{}}
14998ab33a8Smistachkindo_execsql_test func4-1.41 {
15069f3d048Smistachkin  SELECT tointeger(4503599627370496 - 1);
15169f3d048Smistachkin} {4503599627370495}
15298ab33a8Smistachkindo_execsql_test func4-1.42 {
15369f3d048Smistachkin  SELECT tointeger(4503599627370496);
15469f3d048Smistachkin} {4503599627370496}
15598ab33a8Smistachkindo_execsql_test func4-1.43 {
15669f3d048Smistachkin  SELECT tointeger(4503599627370496 + 1);
15769f3d048Smistachkin} {4503599627370497}
15898ab33a8Smistachkindo_execsql_test func4-1.44 {
15969f3d048Smistachkin  SELECT tointeger(9007199254740992 - 1);
16069f3d048Smistachkin} {9007199254740991}
16198ab33a8Smistachkindo_execsql_test func4-1.45 {
16269f3d048Smistachkin  SELECT tointeger(9007199254740992);
16369f3d048Smistachkin} {9007199254740992}
16498ab33a8Smistachkindo_execsql_test func4-1.46 {
16569f3d048Smistachkin  SELECT tointeger(9007199254740992 + 1);
16669f3d048Smistachkin} {9007199254740993}
16798ab33a8Smistachkindo_execsql_test func4-1.47 {
16898ab33a8Smistachkin  SELECT tointeger(9223372036854775807 - 1);
16998ab33a8Smistachkin} {9223372036854775806}
17098ab33a8Smistachkindo_execsql_test func4-1.48 {
17198ab33a8Smistachkin  SELECT tointeger(9223372036854775807);
17298ab33a8Smistachkin} {9223372036854775807}
173aeddf19eSmistachkinif {$highPrecision(1)} {
17498ab33a8Smistachkin  do_execsql_test func4-1.49 {
17598ab33a8Smistachkin    SELECT tointeger(9223372036854775807 + 1);
17698ab33a8Smistachkin  } {{}}
17798ab33a8Smistachkin  do_execsql_test func4-1.50 {
17869f3d048Smistachkin    SELECT tointeger(9223372036854775808 - 1);
1790057a746Sdrh  } {{}}
18098ab33a8Smistachkin  do_execsql_test func4-1.51 {
18169f3d048Smistachkin    SELECT tointeger(9223372036854775808);
1820057a746Sdrh  } {{}}
18398ab33a8Smistachkin  do_execsql_test func4-1.52 {
18469f3d048Smistachkin    SELECT tointeger(9223372036854775808 + 1);
1850057a746Sdrh  } {{}}
186aeddf19eSmistachkin}
18798ab33a8Smistachkindo_execsql_test func4-1.53 {
18869f3d048Smistachkin  SELECT tointeger(18446744073709551616 - 1);
189ee1c64edSmistachkin} {{}}
19098ab33a8Smistachkindo_execsql_test func4-1.54 {
19169f3d048Smistachkin  SELECT tointeger(18446744073709551616);
192ee1c64edSmistachkin} {{}}
19398ab33a8Smistachkindo_execsql_test func4-1.55 {
19469f3d048Smistachkin  SELECT tointeger(18446744073709551616 + 1);
195ee1c64edSmistachkin} {{}}
19669f3d048Smistachkin
19769f3d048Smistachkinifcapable floatingpoint {
198aeddf19eSmistachkin  set highPrecision(2) [expr \
1995f8cdac6Sdrh      {[db eval {SELECT toreal(-9223372036854775808 + 1);}] eq {{}}}]
200a17713ffSmistachkin
2010057a746Sdrh  do_execsql_test func4-2.1 {
202bc3ec28bSmistachkin    SELECT toreal(NULL);
20369f3d048Smistachkin  } {{}}
2040057a746Sdrh  do_execsql_test func4-2.2 {
205bc3ec28bSmistachkin    SELECT toreal('');
20669f3d048Smistachkin  } {{}}
2070057a746Sdrh  do_execsql_test func4-2.3 {
208bc3ec28bSmistachkin    SELECT toreal('   ');
20969f3d048Smistachkin  } {{}}
2100057a746Sdrh  do_execsql_test func4-2.4 {
211bc3ec28bSmistachkin    SELECT toreal('1234');
21269f3d048Smistachkin  } {1234.0}
2130057a746Sdrh  do_execsql_test func4-2.5 {
214bc3ec28bSmistachkin    SELECT toreal('   1234');
21598ab33a8Smistachkin  } {{}}
2160057a746Sdrh  do_execsql_test func4-2.6 {
217bc3ec28bSmistachkin    SELECT toreal('bad');
21869f3d048Smistachkin  } {{}}
2190057a746Sdrh  do_execsql_test func4-2.7 {
220bc3ec28bSmistachkin    SELECT toreal('0xBAD');
22169f3d048Smistachkin  } {{}}
2220057a746Sdrh  do_execsql_test func4-2.8 {
223bc3ec28bSmistachkin    SELECT toreal('123BAD');
22469f3d048Smistachkin  } {{}}
2250057a746Sdrh  do_execsql_test func4-2.9 {
226bc3ec28bSmistachkin    SELECT toreal('0x123BAD');
22769f3d048Smistachkin  } {{}}
2280057a746Sdrh  do_execsql_test func4-2.10 {
229bc3ec28bSmistachkin    SELECT toreal('123NO');
23069f3d048Smistachkin  } {{}}
2310057a746Sdrh  do_execsql_test func4-2.11 {
232bc3ec28bSmistachkin    SELECT toreal('0x123NO');
23369f3d048Smistachkin  } {{}}
2340057a746Sdrh  do_execsql_test func4-2.12 {
235bc3ec28bSmistachkin    SELECT toreal('-0x1');
23669f3d048Smistachkin  } {{}}
2370057a746Sdrh  do_execsql_test func4-2.13 {
238bc3ec28bSmistachkin    SELECT toreal('-0x0');
23969f3d048Smistachkin  } {{}}
2400057a746Sdrh  do_execsql_test func4-2.14 {
241bc3ec28bSmistachkin    SELECT toreal('0x0');
24269f3d048Smistachkin  } {{}}
2430057a746Sdrh  do_execsql_test func4-2.15 {
244bc3ec28bSmistachkin    SELECT toreal('0x1');
24569f3d048Smistachkin  } {{}}
2460057a746Sdrh  do_execsql_test func4-2.16 {
247bc3ec28bSmistachkin    SELECT toreal(-1);
24869f3d048Smistachkin  } {-1.0}
2490057a746Sdrh  do_execsql_test func4-2.17 {
250bc3ec28bSmistachkin    SELECT toreal(-0);
25169f3d048Smistachkin  } {0.0}
2520057a746Sdrh  do_execsql_test func4-2.18 {
253bc3ec28bSmistachkin    SELECT toreal(0);
25469f3d048Smistachkin  } {0.0}
2550057a746Sdrh  do_execsql_test func4-2.19 {
256bc3ec28bSmistachkin    SELECT toreal(1);
25769f3d048Smistachkin  } {1.0}
2580057a746Sdrh  do_execsql_test func4-2.20 {
259bc3ec28bSmistachkin    SELECT toreal(-1.79769313486232e308 - 1);
26069f3d048Smistachkin  } {-Inf}
2610057a746Sdrh  do_execsql_test func4-2.21 {
262bc3ec28bSmistachkin    SELECT toreal(-1.79769313486232e308);
26369f3d048Smistachkin  } {-Inf}
2640057a746Sdrh  do_execsql_test func4-2.22 {
265bc3ec28bSmistachkin    SELECT toreal(-1.79769313486232e308 + 1);
26669f3d048Smistachkin  } {-Inf}
2670057a746Sdrh  do_execsql_test func4-2.23 {
268bc3ec28bSmistachkin    SELECT toreal(-9223372036854775808 - 1);
26998ab33a8Smistachkin  } {-9.223372036854776e+18}
2700057a746Sdrh  do_execsql_test func4-2.24 {
271bc3ec28bSmistachkin    SELECT toreal(-9223372036854775808);
27298ab33a8Smistachkin  } {-9.223372036854776e+18}
273aeddf19eSmistachkin  if {$highPrecision(2)} {
2740057a746Sdrh    do_execsql_test func4-2.25 {
275bc3ec28bSmistachkin      SELECT toreal(-9223372036854775808 + 1);
27698ab33a8Smistachkin    } {{}}
277a17713ffSmistachkin  }
2780057a746Sdrh  do_execsql_test func4-2.26 {
27998ab33a8Smistachkin    SELECT toreal(-9223372036854775807 - 1);
28098ab33a8Smistachkin  } {-9.223372036854776e+18}
281aeddf19eSmistachkin  if {$highPrecision(2)} {
28298ab33a8Smistachkin    do_execsql_test func4-2.27 {
28398ab33a8Smistachkin      SELECT toreal(-9223372036854775807);
28498ab33a8Smistachkin    } {{}}
28598ab33a8Smistachkin    do_execsql_test func4-2.28 {
28698ab33a8Smistachkin      SELECT toreal(-9223372036854775807 + 1);
28798ab33a8Smistachkin    } {{}}
288a17713ffSmistachkin  }
28998ab33a8Smistachkin  do_execsql_test func4-2.29 {
290bc3ec28bSmistachkin    SELECT toreal(-2147483648 - 1);
29169f3d048Smistachkin  } {-2147483649.0}
29298ab33a8Smistachkin  do_execsql_test func4-2.30 {
293bc3ec28bSmistachkin    SELECT toreal(-2147483648);
29469f3d048Smistachkin  } {-2147483648.0}
29598ab33a8Smistachkin  do_execsql_test func4-2.31 {
296bc3ec28bSmistachkin    SELECT toreal(-2147483648 + 1);
29769f3d048Smistachkin  } {-2147483647.0}
29898ab33a8Smistachkin  do_execsql_test func4-2.32 {
299bc3ec28bSmistachkin    SELECT toreal(2147483647 - 1);
30069f3d048Smistachkin  } {2147483646.0}
30198ab33a8Smistachkin  do_execsql_test func4-2.33 {
302bc3ec28bSmistachkin    SELECT toreal(2147483647);
30369f3d048Smistachkin  } {2147483647.0}
30498ab33a8Smistachkin  do_execsql_test func4-2.34 {
305bc3ec28bSmistachkin    SELECT toreal(2147483647 + 1);
30669f3d048Smistachkin  } {2147483648.0}
307aeddf19eSmistachkin  if {$highPrecision(2)} {
3080057a746Sdrh    do_execsql_test func4-2.35 {
30998ab33a8Smistachkin      SELECT toreal(9223372036854775807 - 1);
31098ab33a8Smistachkin    } {{}}
311aeddf19eSmistachkin    if {$highPrecision(1)} {
31298ab33a8Smistachkin      do_execsql_test func4-2.36 {
31398ab33a8Smistachkin        SELECT toreal(9223372036854775807);
31498ab33a8Smistachkin      } {{}}
315a17713ffSmistachkin    }
316aeddf19eSmistachkin  }
31798ab33a8Smistachkin  do_execsql_test func4-2.37 {
31898ab33a8Smistachkin    SELECT toreal(9223372036854775807 + 1);
31998ab33a8Smistachkin  } {9.223372036854776e+18}
32098ab33a8Smistachkin  do_execsql_test func4-2.38 {
321bc3ec28bSmistachkin    SELECT toreal(1.79769313486232e308 - 1);
32269f3d048Smistachkin  } {Inf}
32398ab33a8Smistachkin  do_execsql_test func4-2.39 {
324bc3ec28bSmistachkin    SELECT toreal(1.79769313486232e308);
32569f3d048Smistachkin  } {Inf}
32698ab33a8Smistachkin  do_execsql_test func4-2.40 {
327bc3ec28bSmistachkin    SELECT toreal(1.79769313486232e308 + 1);
32869f3d048Smistachkin  } {Inf}
3290057a746Sdrh  do_execsql_test func4-2.41 {
33098ab33a8Smistachkin    SELECT toreal(4503599627370496 - 1);
33198ab33a8Smistachkin  } {4503599627370495.0}
3320057a746Sdrh  do_execsql_test func4-2.42 {
33398ab33a8Smistachkin    SELECT toreal(4503599627370496);
33498ab33a8Smistachkin  } {4503599627370496.0}
3350057a746Sdrh  do_execsql_test func4-2.43 {
33698ab33a8Smistachkin    SELECT toreal(4503599627370496 + 1);
33798ab33a8Smistachkin  } {4503599627370497.0}
3380057a746Sdrh  do_execsql_test func4-2.44 {
33998ab33a8Smistachkin    SELECT toreal(9007199254740992 - 1);
34098ab33a8Smistachkin  } {9007199254740991.0}
3410057a746Sdrh  do_execsql_test func4-2.45 {
34298ab33a8Smistachkin    SELECT toreal(9007199254740992);
34398ab33a8Smistachkin  } {9007199254740992.0}
344aeddf19eSmistachkin  if {$highPrecision(2)} {
3450057a746Sdrh    do_execsql_test func4-2.46 {
34698ab33a8Smistachkin      SELECT toreal(9007199254740992 + 1);
34798ab33a8Smistachkin    } {{}}
348a17713ffSmistachkin  }
3490057a746Sdrh  do_execsql_test func4-2.47 {
35098ab33a8Smistachkin    SELECT toreal(9007199254740992 + 2);
35198ab33a8Smistachkin  } {9007199254740994.0}
3520057a746Sdrh  do_execsql_test func4-2.48 {
35398ab33a8Smistachkin    SELECT toreal(tointeger(9223372036854775808) - 1);
35498ab33a8Smistachkin  } {{}}
355aeddf19eSmistachkin  if {$highPrecision(1)} {
3560057a746Sdrh    do_execsql_test func4-2.49 {
35798ab33a8Smistachkin      SELECT toreal(tointeger(9223372036854775808));
35898ab33a8Smistachkin    } {{}}
35998ab33a8Smistachkin    do_execsql_test func4-2.50 {
36098ab33a8Smistachkin      SELECT toreal(tointeger(9223372036854775808) + 1);
36198ab33a8Smistachkin    } {{}}
362aeddf19eSmistachkin  }
36398ab33a8Smistachkin  do_execsql_test func4-2.51 {
36498ab33a8Smistachkin    SELECT toreal(tointeger(18446744073709551616) - 1);
36598ab33a8Smistachkin  } {{}}
36698ab33a8Smistachkin  do_execsql_test func4-2.52 {
36798ab33a8Smistachkin    SELECT toreal(tointeger(18446744073709551616));
36898ab33a8Smistachkin  } {{}}
36998ab33a8Smistachkin  do_execsql_test func4-2.53 {
37098ab33a8Smistachkin    SELECT toreal(tointeger(18446744073709551616) + 1);
37198ab33a8Smistachkin  } {{}}
37269f3d048Smistachkin}
37369f3d048Smistachkin
37432be00a5Smistachkinifcapable check {
3750057a746Sdrh  do_execsql_test func4-3.1 {
37632be00a5Smistachkin    CREATE TABLE t1(
37798ab33a8Smistachkin      x INTEGER CHECK(tointeger(x) IS NOT NULL)
37832be00a5Smistachkin    );
37932be00a5Smistachkin  } {}
3800057a746Sdrh  do_test func4-3.2 {
38132be00a5Smistachkin    catchsql {
38232be00a5Smistachkin      INSERT INTO t1 (x) VALUES (NULL);
38332be00a5Smistachkin    }
384*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
3850057a746Sdrh  do_test func4-3.3 {
38632be00a5Smistachkin    catchsql {
38732be00a5Smistachkin      INSERT INTO t1 (x) VALUES (NULL);
38832be00a5Smistachkin    }
389*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
3900057a746Sdrh  do_test func4-3.4 {
39132be00a5Smistachkin    catchsql {
39232be00a5Smistachkin      INSERT INTO t1 (x) VALUES ('');
39332be00a5Smistachkin    }
394*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
3950057a746Sdrh  do_test func4-3.5 {
39632be00a5Smistachkin    catchsql {
39732be00a5Smistachkin      INSERT INTO t1 (x) VALUES ('bad');
39832be00a5Smistachkin    }
399*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4000057a746Sdrh  do_test func4-3.6 {
40132be00a5Smistachkin    catchsql {
40232be00a5Smistachkin      INSERT INTO t1 (x) VALUES ('1234bad');
40332be00a5Smistachkin    }
404*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4050057a746Sdrh  do_test func4-3.7 {
40632be00a5Smistachkin    catchsql {
407ee1c64edSmistachkin      INSERT INTO t1 (x) VALUES ('1234.56bad');
408ee1c64edSmistachkin    }
409*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4100057a746Sdrh  do_test func4-3.8 {
411ee1c64edSmistachkin    catchsql {
41232be00a5Smistachkin      INSERT INTO t1 (x) VALUES (1234);
41332be00a5Smistachkin    }
41432be00a5Smistachkin  } {0 {}}
4150057a746Sdrh  do_test func4-3.9 {
41632be00a5Smistachkin    catchsql {
41732be00a5Smistachkin      INSERT INTO t1 (x) VALUES (1234.56);
41832be00a5Smistachkin    }
419*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4200057a746Sdrh  do_test func4-3.10 {
42132be00a5Smistachkin    catchsql {
42232be00a5Smistachkin      INSERT INTO t1 (x) VALUES ('1234');
42332be00a5Smistachkin    }
42432be00a5Smistachkin  } {0 {}}
4250057a746Sdrh  do_test func4-3.11 {
42632be00a5Smistachkin    catchsql {
42732be00a5Smistachkin      INSERT INTO t1 (x) VALUES ('1234.56');
42832be00a5Smistachkin    }
429*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4300057a746Sdrh  do_test func4-3.12 {
43132be00a5Smistachkin    catchsql {
43232be00a5Smistachkin      INSERT INTO t1 (x) VALUES (ZEROBLOB(4));
43332be00a5Smistachkin    }
434*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4350057a746Sdrh  do_test func4-3.13 {
43632be00a5Smistachkin    catchsql {
43732be00a5Smistachkin      INSERT INTO t1 (x) VALUES (X'');
43832be00a5Smistachkin    }
439*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4400057a746Sdrh  do_test func4-3.14 {
44132be00a5Smistachkin    catchsql {
44232be00a5Smistachkin      INSERT INTO t1 (x) VALUES (X'1234');
44332be00a5Smistachkin    }
444*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
4450057a746Sdrh  do_test func4-3.15 {
44632be00a5Smistachkin    catchsql {
44732be00a5Smistachkin      INSERT INTO t1 (x) VALUES (X'12345678');
44832be00a5Smistachkin    }
449*92e21ef0Sdrh  } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
45098ab33a8Smistachkin  do_test func4-3.16 {
45198ab33a8Smistachkin    catchsql {
45298ab33a8Smistachkin      INSERT INTO t1 (x) VALUES ('1234.00');
45398ab33a8Smistachkin    }
4549dce0ef4Sdrh  } {0 {}}
45598ab33a8Smistachkin  do_test func4-3.17 {
45698ab33a8Smistachkin    catchsql {
45798ab33a8Smistachkin      INSERT INTO t1 (x) VALUES (1234.00);
45898ab33a8Smistachkin    }
45998ab33a8Smistachkin  } {0 {}}
46098ab33a8Smistachkin  do_test func4-3.18 {
46198ab33a8Smistachkin    catchsql {
46298ab33a8Smistachkin      INSERT INTO t1 (x) VALUES ('-9223372036854775809');
46398ab33a8Smistachkin    }
4649dce0ef4Sdrh  } {0 {}}
465aeddf19eSmistachkin  if {$highPrecision(1)} {
46698ab33a8Smistachkin    do_test func4-3.19 {
46798ab33a8Smistachkin      catchsql {
46898ab33a8Smistachkin        INSERT INTO t1 (x) VALUES (9223372036854775808);
46998ab33a8Smistachkin      }
470*92e21ef0Sdrh    } {1 {CHECK constraint failed: tointeger(x) IS NOT NULL}}
471aeddf19eSmistachkin  }
47298ab33a8Smistachkin  do_execsql_test func4-3.20 {
4739dce0ef4Sdrh    SELECT x FROM t1 WHERE x>0 ORDER BY x;
4749dce0ef4Sdrh  } {1234 1234 1234 1234}
475ee1c64edSmistachkin
476ee1c64edSmistachkin  ifcapable floatingpoint {
4770057a746Sdrh    do_execsql_test func4-4.1 {
478ee1c64edSmistachkin      CREATE TABLE t2(
479bc3ec28bSmistachkin        x REAL CHECK(toreal(x) IS NOT NULL)
480ee1c64edSmistachkin      );
481ee1c64edSmistachkin    } {}
4820057a746Sdrh    do_test func4-4.2 {
483ee1c64edSmistachkin      catchsql {
484ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (NULL);
485ee1c64edSmistachkin      }
486*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
4870057a746Sdrh    do_test func4-4.3 {
488ee1c64edSmistachkin      catchsql {
489ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (NULL);
490ee1c64edSmistachkin      }
491*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
4920057a746Sdrh    do_test func4-4.4 {
493ee1c64edSmistachkin      catchsql {
494ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES ('');
495ee1c64edSmistachkin      }
496*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
4970057a746Sdrh    do_test func4-4.5 {
498ee1c64edSmistachkin      catchsql {
499ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES ('bad');
500ee1c64edSmistachkin      }
501*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
5020057a746Sdrh    do_test func4-4.6 {
503ee1c64edSmistachkin      catchsql {
504ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES ('1234bad');
505ee1c64edSmistachkin      }
506*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
5070057a746Sdrh    do_test func4-4.7 {
508ee1c64edSmistachkin      catchsql {
509ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES ('1234.56bad');
510ee1c64edSmistachkin      }
511*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
5120057a746Sdrh    do_test func4-4.8 {
513ee1c64edSmistachkin      catchsql {
514ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (1234);
515ee1c64edSmistachkin      }
516ee1c64edSmistachkin    } {0 {}}
5170057a746Sdrh    do_test func4-4.9 {
518ee1c64edSmistachkin      catchsql {
519ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (1234.56);
520ee1c64edSmistachkin      }
521ee1c64edSmistachkin    } {0 {}}
5220057a746Sdrh    do_test func4-4.10 {
523ee1c64edSmistachkin      catchsql {
524ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES ('1234');
525ee1c64edSmistachkin      }
526ee1c64edSmistachkin    } {0 {}}
5270057a746Sdrh    do_test func4-4.11 {
528ee1c64edSmistachkin      catchsql {
529ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES ('1234.56');
530ee1c64edSmistachkin      }
531ee1c64edSmistachkin    } {0 {}}
5320057a746Sdrh    do_test func4-4.12 {
533ee1c64edSmistachkin      catchsql {
534ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (ZEROBLOB(4));
535ee1c64edSmistachkin      }
536*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
5370057a746Sdrh    do_test func4-4.13 {
538ee1c64edSmistachkin      catchsql {
539ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (X'');
540ee1c64edSmistachkin      }
541*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
5420057a746Sdrh    do_test func4-4.14 {
543ee1c64edSmistachkin      catchsql {
544ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (X'1234');
545ee1c64edSmistachkin      }
546*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
5470057a746Sdrh    do_test func4-4.15 {
548ee1c64edSmistachkin      catchsql {
549ee1c64edSmistachkin        INSERT INTO t2 (x) VALUES (X'12345678');
550ee1c64edSmistachkin      }
551*92e21ef0Sdrh    } {1 {CHECK constraint failed: toreal(x) IS NOT NULL}}
5520057a746Sdrh    do_execsql_test func4-4.16 {
553ee1c64edSmistachkin      SELECT x FROM t2 ORDER BY x;
554ee1c64edSmistachkin    } {1234.0 1234.0 1234.56 1234.56}
555ee1c64edSmistachkin  }
55632be00a5Smistachkin}
55732be00a5Smistachkin
55898ab33a8Smistachkinifcapable floatingpoint {
55998ab33a8Smistachkin  do_execsql_test func4-5.1 {
56098ab33a8Smistachkin    SELECT tointeger(toreal('1234'));
56198ab33a8Smistachkin  } {1234}
56298ab33a8Smistachkin  do_execsql_test func4-5.2 {
56398ab33a8Smistachkin    SELECT tointeger(toreal(-1));
56498ab33a8Smistachkin  } {-1}
56598ab33a8Smistachkin  do_execsql_test func4-5.3 {
56698ab33a8Smistachkin    SELECT tointeger(toreal(-0));
56798ab33a8Smistachkin  } {0}
56898ab33a8Smistachkin  do_execsql_test func4-5.4 {
56998ab33a8Smistachkin    SELECT tointeger(toreal(0));
57098ab33a8Smistachkin  } {0}
57198ab33a8Smistachkin  do_execsql_test func4-5.5 {
57298ab33a8Smistachkin    SELECT tointeger(toreal(1));
57398ab33a8Smistachkin  } {1}
57498ab33a8Smistachkin  do_execsql_test func4-5.6 {
57598ab33a8Smistachkin    SELECT tointeger(toreal(-9223372036854775808 - 1));
57698ab33a8Smistachkin  } {-9223372036854775808}
57798ab33a8Smistachkin  do_execsql_test func4-5.7 {
57898ab33a8Smistachkin    SELECT tointeger(toreal(-9223372036854775808));
57998ab33a8Smistachkin  } {-9223372036854775808}
580aeddf19eSmistachkin  if {$highPrecision(2)} {
58198ab33a8Smistachkin    do_execsql_test func4-5.8 {
58298ab33a8Smistachkin      SELECT tointeger(toreal(-9223372036854775808 + 1));
58398ab33a8Smistachkin    } {{}}
584a17713ffSmistachkin  }
58598ab33a8Smistachkin  do_execsql_test func4-5.9 {
58698ab33a8Smistachkin    SELECT tointeger(toreal(-2147483648 - 1));
58798ab33a8Smistachkin  } {-2147483649}
58898ab33a8Smistachkin  do_execsql_test func4-5.10 {
58998ab33a8Smistachkin    SELECT tointeger(toreal(-2147483648));
59098ab33a8Smistachkin  } {-2147483648}
59198ab33a8Smistachkin  do_execsql_test func4-5.11 {
59298ab33a8Smistachkin    SELECT tointeger(toreal(-2147483648 + 1));
59398ab33a8Smistachkin  } {-2147483647}
59498ab33a8Smistachkin  do_execsql_test func4-5.12 {
59598ab33a8Smistachkin    SELECT tointeger(toreal(2147483647 - 1));
59698ab33a8Smistachkin  } {2147483646}
59798ab33a8Smistachkin  do_execsql_test func4-5.13 {
59898ab33a8Smistachkin    SELECT tointeger(toreal(2147483647));
59998ab33a8Smistachkin  } {2147483647}
60098ab33a8Smistachkin  do_execsql_test func4-5.14 {
60198ab33a8Smistachkin    SELECT tointeger(toreal(2147483647 + 1));
60298ab33a8Smistachkin  } {2147483648}
60398ab33a8Smistachkin  do_execsql_test func4-5.15 {
60498ab33a8Smistachkin    SELECT tointeger(toreal(9223372036854775807 - 1));
60598ab33a8Smistachkin  } {{}}
606aeddf19eSmistachkin  if {$highPrecision(1)} {
60798ab33a8Smistachkin    do_execsql_test func4-5.16 {
60898ab33a8Smistachkin      SELECT tointeger(toreal(9223372036854775807));
60998ab33a8Smistachkin    } {{}}
61098ab33a8Smistachkin    do_execsql_test func4-5.17 {
61198ab33a8Smistachkin      SELECT tointeger(toreal(9223372036854775807 + 1));
61298ab33a8Smistachkin    } {{}}
613aeddf19eSmistachkin  }
61498ab33a8Smistachkin  do_execsql_test func4-5.18 {
61598ab33a8Smistachkin    SELECT tointeger(toreal(4503599627370496 - 1));
61698ab33a8Smistachkin  } {4503599627370495}
61798ab33a8Smistachkin  do_execsql_test func4-5.19 {
61898ab33a8Smistachkin    SELECT tointeger(toreal(4503599627370496));
61998ab33a8Smistachkin  } {4503599627370496}
62098ab33a8Smistachkin  do_execsql_test func4-5.20 {
62198ab33a8Smistachkin    SELECT tointeger(toreal(4503599627370496 + 1));
62298ab33a8Smistachkin  } {4503599627370497}
62398ab33a8Smistachkin  do_execsql_test func4-5.21 {
62498ab33a8Smistachkin    SELECT tointeger(toreal(9007199254740992 - 1));
62598ab33a8Smistachkin  } {9007199254740991}
62698ab33a8Smistachkin  do_execsql_test func4-5.22 {
62798ab33a8Smistachkin    SELECT tointeger(toreal(9007199254740992));
62898ab33a8Smistachkin  } {9007199254740992}
629aeddf19eSmistachkin  if {$highPrecision(2)} {
63098ab33a8Smistachkin    do_execsql_test func4-5.23 {
63198ab33a8Smistachkin      SELECT tointeger(toreal(9007199254740992 + 1));
63298ab33a8Smistachkin    } {{}}
633a17713ffSmistachkin  }
63498ab33a8Smistachkin  do_execsql_test func4-5.24 {
63598ab33a8Smistachkin    SELECT tointeger(toreal(9007199254740992 + 2));
63698ab33a8Smistachkin  } {9007199254740994}
637aeddf19eSmistachkin  if {$highPrecision(1)} {
63898ab33a8Smistachkin    do_execsql_test func4-5.25 {
63998ab33a8Smistachkin      SELECT tointeger(toreal(9223372036854775808 - 1));
64098ab33a8Smistachkin    } {{}}
64198ab33a8Smistachkin    do_execsql_test func4-5.26 {
64298ab33a8Smistachkin      SELECT tointeger(toreal(9223372036854775808));
64398ab33a8Smistachkin    } {{}}
64498ab33a8Smistachkin    do_execsql_test func4-5.27 {
64598ab33a8Smistachkin      SELECT tointeger(toreal(9223372036854775808 + 1));
64698ab33a8Smistachkin    } {{}}
647aeddf19eSmistachkin  }
64898ab33a8Smistachkin  do_execsql_test func4-5.28 {
64998ab33a8Smistachkin    SELECT tointeger(toreal(18446744073709551616 - 1));
65098ab33a8Smistachkin  } {{}}
65198ab33a8Smistachkin  do_execsql_test func4-5.29 {
65298ab33a8Smistachkin    SELECT tointeger(toreal(18446744073709551616));
65398ab33a8Smistachkin  } {{}}
65498ab33a8Smistachkin  do_execsql_test func4-5.30 {
65598ab33a8Smistachkin    SELECT tointeger(toreal(18446744073709551616 + 1));
65698ab33a8Smistachkin  } {{}}
65798ab33a8Smistachkin}
65898ab33a8Smistachkin
659aeddf19eSmistachkinfor {set i 0} {$i < 10} {incr i} {
660aeddf19eSmistachkin  if {$i == 8} continue
661aeddf19eSmistachkin  do_execsql_test func4-6.1.$i.1 [subst {
662aeddf19eSmistachkin    SELECT tointeger(x'[string repeat 01 $i]');
663aeddf19eSmistachkin  }] {{}}
664aeddf19eSmistachkin  ifcapable floatingpoint {
665aeddf19eSmistachkin    do_execsql_test func4-6.1.$i.2 [subst {
666aeddf19eSmistachkin      SELECT toreal(x'[string repeat 01 $i]');
667aeddf19eSmistachkin    }] {{}}
668aeddf19eSmistachkin  }
669aeddf19eSmistachkin}
670aeddf19eSmistachkin
6719a5b2719Smistachkindo_execsql_test func4-6.2.1 {
6729a5b2719Smistachkin  SELECT tointeger(x'0102030405060708');
6739a5b2719Smistachkin} {578437695752307201}
6749a5b2719Smistachkindo_execsql_test func4-6.2.2 {
6759a5b2719Smistachkin  SELECT tointeger(x'0807060504030201');
6769a5b2719Smistachkin} {72623859790382856}
677aeddf19eSmistachkin
678aeddf19eSmistachkinifcapable floatingpoint {
6799a5b2719Smistachkin  do_execsql_test func4-6.3.1 {
6809a5b2719Smistachkin    SELECT toreal(x'ffefffffffffffff');
6819a5b2719Smistachkin  } {-1.7976931348623157e+308}
6829a5b2719Smistachkin  do_execsql_test func4-6.3.2 {
6839a5b2719Smistachkin    SELECT toreal(x'8010000000000000');
6849a5b2719Smistachkin  } {-2.2250738585072014e-308}
6859a5b2719Smistachkin  do_execsql_test func4-6.3.3 {
6869a5b2719Smistachkin    SELECT toreal(x'c000000000000000');
6879a5b2719Smistachkin  } {-2.0}
6889a5b2719Smistachkin  do_execsql_test func4-6.3.4 {
6899a5b2719Smistachkin    SELECT toreal(x'bff0000000000000');
6909a5b2719Smistachkin  } {-1.0}
6919a5b2719Smistachkin  do_execsql_test func4-6.3.5 {
6929a5b2719Smistachkin    SELECT toreal(x'8000000000000000');
6939a5b2719Smistachkin  } {-0.0}
6949a5b2719Smistachkin  do_execsql_test func4-6.3.6 {
6959a5b2719Smistachkin    SELECT toreal(x'0000000000000000');
6969a5b2719Smistachkin  } {0.0}
6979a5b2719Smistachkin  do_execsql_test func4-6.3.7 {
6989a5b2719Smistachkin    SELECT toreal(x'3ff0000000000000');
6999a5b2719Smistachkin  } {1.0}
7009a5b2719Smistachkin  do_execsql_test func4-6.3.8 {
7019a5b2719Smistachkin    SELECT toreal(x'4000000000000000');
7029a5b2719Smistachkin  } {2.0}
7039a5b2719Smistachkin  do_execsql_test func4-6.3.9 {
7049a5b2719Smistachkin    SELECT toreal(x'0010000000000000');
7059a5b2719Smistachkin  } {2.2250738585072014e-308}
7069a5b2719Smistachkin  do_execsql_test func4-6.3.10 {
7079a5b2719Smistachkin    SELECT toreal(x'7fefffffffffffff');
7089a5b2719Smistachkin  } {1.7976931348623157e+308}
7099a5b2719Smistachkin  do_execsql_test func4-6.3.11 {
7109a5b2719Smistachkin    SELECT toreal(x'8000000000000001');
7119a5b2719Smistachkin  } {-5e-324}
7129a5b2719Smistachkin  do_execsql_test func4-6.3.12 {
7139a5b2719Smistachkin    SELECT toreal(x'800fffffffffffff');
7149a5b2719Smistachkin  } {-2.225073858507201e-308}
7159a5b2719Smistachkin  do_execsql_test func4-6.3.13 {
7169a5b2719Smistachkin    SELECT toreal(x'0000000000000001');
7179a5b2719Smistachkin  } {5e-324}
7189a5b2719Smistachkin  do_execsql_test func4-6.3.14 {
7199a5b2719Smistachkin    SELECT toreal(x'000fffffffffffff');
7209a5b2719Smistachkin  } {2.225073858507201e-308}
7219a5b2719Smistachkin  do_execsql_test func4-6.3.15 {
7229a5b2719Smistachkin    SELECT toreal(x'fff0000000000000');
7239a5b2719Smistachkin  } {-Inf}
7249a5b2719Smistachkin  do_execsql_test func4-6.3.16 {
7259a5b2719Smistachkin    SELECT toreal(x'7ff0000000000000');
7269a5b2719Smistachkin  } {Inf}
7279a5b2719Smistachkin  do_execsql_test func4-6.3.17 {
7289a5b2719Smistachkin    SELECT toreal(x'fff8000000000000');
7299a5b2719Smistachkin  } {{}}
7309a5b2719Smistachkin  do_execsql_test func4-6.3.18 {
7319a5b2719Smistachkin    SELECT toreal(x'fff0000000000001');
7329a5b2719Smistachkin  } {{}}
7339a5b2719Smistachkin  do_execsql_test func4-6.3.19 {
7349a5b2719Smistachkin    SELECT toreal(x'fff7ffffffffffff');
7359a5b2719Smistachkin  } {{}}
7369a5b2719Smistachkin  do_execsql_test func4-6.3.20 {
7379a5b2719Smistachkin    SELECT toreal(x'7ff0000000000001');
7389a5b2719Smistachkin  } {{}}
7399a5b2719Smistachkin  do_execsql_test func4-6.3.21 {
7409a5b2719Smistachkin    SELECT toreal(x'7ff7ffffffffffff');
7419a5b2719Smistachkin  } {{}}
7429a5b2719Smistachkin  do_execsql_test func4-6.3.22 {
7439a5b2719Smistachkin    SELECT toreal(x'fff8000000000001');
7449a5b2719Smistachkin  } {{}}
7459a5b2719Smistachkin  do_execsql_test func4-6.3.23 {
7469a5b2719Smistachkin    SELECT toreal(x'ffffffffffffffff');
7479a5b2719Smistachkin  } {{}}
7489a5b2719Smistachkin  do_execsql_test func4-6.3.24 {
7499a5b2719Smistachkin    SELECT toreal(x'7ff8000000000000');
7509a5b2719Smistachkin  } {{}}
7519a5b2719Smistachkin  do_execsql_test func4-6.3.25 {
7529a5b2719Smistachkin    SELECT toreal(x'7fffffffffffffff');
7539a5b2719Smistachkin  } {{}}
754aeddf19eSmistachkin}
755aeddf19eSmistachkin
75698ab33a8Smistachkinset tcl_precision $saved_tcl_precision
75798ab33a8Smistachkinunset saved_tcl_precision
75869f3d048Smistachkinfinish_test
759