# 2005 June 25 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing the CAST operator. # # $Id: cast.test,v 1.4 2006/01/16 16:24:25 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Only run these tests if the build includes the CAST operator ifcapable !cast { finish_test return } # Tests for the CAST( AS blob), CAST( AS text) and CAST( AS numeric) built-ins # ifcapable bloblit { do_test cast-1.1 { execsql {SELECT x'616263'} } abc do_test cast-1.2 { execsql {SELECT typeof(x'616263')} } blob do_test cast-1.3 { execsql {SELECT CAST(x'616263' AS text)} } abc do_test cast-1.4 { execsql {SELECT typeof(CAST(x'616263' AS text))} } text do_test cast-1.5 { execsql {SELECT CAST(x'616263' AS numeric)} } 0 do_test cast-1.6 { execsql {SELECT typeof(CAST(x'616263' AS numeric))} } integer do_test cast-1.7 { execsql {SELECT CAST(x'616263' AS blob)} } abc do_test cast-1.8 { execsql {SELECT typeof(CAST(x'616263' AS blob))} } blob do_test cast-1.9 { execsql {SELECT CAST(x'616263' AS integer)} } 0 do_test cast-1.10 { execsql {SELECT typeof(CAST(x'616263' AS integer))} } integer } do_test cast-1.11 { execsql {SELECT null} } {{}} do_test cast-1.12 { execsql {SELECT typeof(NULL)} } null do_test cast-1.13 { execsql {SELECT CAST(NULL AS text)} } {{}} do_test cast-1.14 { execsql {SELECT typeof(CAST(NULL AS text))} } null do_test cast-1.15 { execsql {SELECT CAST(NULL AS numeric)} } {{}} do_test cast-1.16 { execsql {SELECT typeof(CAST(NULL AS numeric))} } null do_test cast-1.17 { execsql {SELECT CAST(NULL AS blob)} } {{}} do_test cast-1.18 { execsql {SELECT typeof(CAST(NULL AS blob))} } null do_test cast-1.19 { execsql {SELECT CAST(NULL AS integer)} } {{}} do_test cast-1.20 { execsql {SELECT typeof(CAST(NULL AS integer))} } null do_test cast-1.21 { execsql {SELECT 123} } {123} do_test cast-1.22 { execsql {SELECT typeof(123)} } integer do_test cast-1.23 { execsql {SELECT CAST(123 AS text)} } {123} do_test cast-1.24 { execsql {SELECT typeof(CAST(123 AS text))} } text do_test cast-1.25 { execsql {SELECT CAST(123 AS numeric)} } 123 do_test cast-1.26 { execsql {SELECT typeof(CAST(123 AS numeric))} } integer do_test cast-1.27 { execsql {SELECT CAST(123 AS blob)} } {123} do_test cast-1.28 { execsql {SELECT typeof(CAST(123 AS blob))} } blob do_test cast-1.29 { execsql {SELECT CAST(123 AS integer)} } {123} do_test cast-1.30 { execsql {SELECT typeof(CAST(123 AS integer))} } integer do_test cast-1.31 { execsql {SELECT 123.456} } {123.456} do_test cast-1.32 { execsql {SELECT typeof(123.456)} } real do_test cast-1.33 { execsql {SELECT CAST(123.456 AS text)} } {123.456} do_test cast-1.34 { execsql {SELECT typeof(CAST(123.456 AS text))} } text do_test cast-1.35 { execsql {SELECT CAST(123.456 AS numeric)} } 123.456 do_test cast-1.36 { execsql {SELECT typeof(CAST(123.456 AS numeric))} } real do_test cast-1.37 { execsql {SELECT CAST(123.456 AS blob)} } {123.456} do_test cast-1.38 { execsql {SELECT typeof(CAST(123.456 AS blob))} } blob do_test cast-1.39 { execsql {SELECT CAST(123.456 AS integer)} } {123} do_test cast-1.38 { execsql {SELECT typeof(CAST(123.456 AS integer))} } integer do_test cast-1.41 { execsql {SELECT '123abc'} } {123abc} do_test cast-1.42 { execsql {SELECT typeof('123abc')} } text do_test cast-1.43 { execsql {SELECT CAST('123abc' AS text)} } {123abc} do_test cast-1.44 { execsql {SELECT typeof(CAST('123abc' AS text))} } text do_test cast-1.45 { execsql {SELECT CAST('123abc' AS numeric)} } 123 do_test cast-1.46 { execsql {SELECT typeof(CAST('123abc' AS numeric))} } integer do_test cast-1.47 { execsql {SELECT CAST('123abc' AS blob)} } {123abc} do_test cast-1.48 { execsql {SELECT typeof(CAST('123abc' AS blob))} } blob do_test cast-1.49 { execsql {SELECT CAST('123abc' AS integer)} } 123 do_test cast-1.50 { execsql {SELECT typeof(CAST('123abc' AS integer))} } integer do_test cast-1.51 { execsql {SELECT CAST('123.5abc' AS numeric)} } 123.5 do_test cast-1.53 { execsql {SELECT CAST('123.5abc' AS integer)} } 123 finish_test