1
0

collate7.test 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. set testdir [file dirname $argv0]
  18. source $testdir/tester.tcl
  19. set ::caseless_del 0
  20. proc caseless_cmp {zLeft zRight} {
  21. string compare -nocase $zLeft $zRight
  22. }
  23. do_test collate7-1.1 {
  24. set cmd [list incr ::caseless_del]
  25. sqlite3_create_collation_v2 db CASELESS caseless_cmp $cmd
  26. set ::caseless_del
  27. } {0}
  28. do_test collate7-1.2 {
  29. sqlite_delete_collation db CASELESS
  30. set ::caseless_del
  31. } {1}
  32. do_test collate7-1.3 {
  33. catchsql {
  34. CREATE TABLE abc(a COLLATE CASELESS, b, c);
  35. }
  36. } {1 {no such collation sequence: CASELESS}}
  37. do_test collate7-1.4 {
  38. sqlite3_create_collation_v2 db CASELESS caseless_cmp {incr ::caseless_del}
  39. db close
  40. set ::caseless_del
  41. } {2}
  42. do_test collate7-2.1 {
  43. forcedelete test.db test.db-journal
  44. sqlite3 db test.db
  45. sqlite3_create_collation_v2 db CASELESS caseless_cmp {incr ::caseless_del}
  46. execsql {
  47. PRAGMA encoding='utf-16';
  48. CREATE TABLE abc16(a COLLATE CASELESS, b, c);
  49. } db
  50. set ::caseless_del
  51. } {2}
  52. do_test collate7-2.2 {
  53. execsql {
  54. SELECT * FROM abc16 WHERE a < 'abc';
  55. }
  56. set ::caseless_del
  57. } {2}
  58. do_test collate7-2.3 {
  59. sqlite_delete_collation db CASELESS
  60. set ::caseless_del
  61. } {3}
  62. do_test collate7-2.4 {
  63. catchsql {
  64. SELECT * FROM abc16 WHERE a < 'abc';
  65. }
  66. } {1 {no such collation sequence: CASELESS}}
  67. finish_test