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