1# 2# 2007 May 7 3# 4# The author disclaims copyright to this source code. In place of 5# a legal notice, here is a blessing: 6# 7# May you do good and not evil. 8# May you find forgiveness for yourself and forgive others. 9# May you share freely, never taking more than you give. 10# 11#*********************************************************************** 12# This file implements regression tests for SQLite library. The 13# focus of this script is the experimental sqlite3_create_collation_v2() 14# API. 15# 16# $Id: collate7.test,v 1.2 2008/07/12 14:52:20 drh Exp $ 17 18set testdir [file dirname $argv0] 19source $testdir/tester.tcl 20 21set ::caseless_del 0 22proc caseless_cmp {zLeft zRight} { 23 string compare -nocase $zLeft $zRight 24} 25 26do_test collate7-1.1 { 27 set cmd [list incr ::caseless_del] 28 sqlite3_create_collation_v2 db CASELESS caseless_cmp $cmd 29 set ::caseless_del 30} {0} 31do_test collate7-1.2 { 32 sqlite_delete_collation db CASELESS 33 set ::caseless_del 34} {1} 35do_test collate7-1.3 { 36 catchsql { 37 CREATE TABLE abc(a COLLATE CASELESS, b, c); 38 } 39} {1 {no such collation sequence: CASELESS}} 40do_test collate7-1.4 { 41 sqlite3_create_collation_v2 db CASELESS caseless_cmp {incr ::caseless_del} 42 db close 43 set ::caseless_del 44} {2} 45 46do_test collate7-2.1 { 47 forcedelete test.db test.db-journal 48 sqlite3 db test.db 49 sqlite3_create_collation_v2 db CASELESS caseless_cmp {incr ::caseless_del} 50 execsql { 51 PRAGMA encoding='utf-16'; 52 CREATE TABLE abc16(a COLLATE CASELESS, b, c); 53 } db 54 set ::caseless_del 55} {2} 56do_test collate7-2.2 { 57 execsql { 58 SELECT * FROM abc16 WHERE a < 'abc'; 59 } 60 set ::caseless_del 61} {2} 62do_test collate7-2.3 { 63 sqlite_delete_collation db CASELESS 64 set ::caseless_del 65} {3} 66do_test collate7-2.4 { 67 catchsql { 68 SELECT * FROM abc16 WHERE a < 'abc'; 69 } 70} {1 {no such collation sequence: CASELESS}} 71 72finish_test 73