xref: /sqlite-3.40.0/test/collate7.test (revision fda06bef)
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