[uim-commit] r2979 - in branches/r5rs/sigscheme: doc src test

yamaken at freedesktop.org yamaken at freedesktop.org
Sun Jan 22 14:38:05 PST 2006


Author: yamaken
Date: 2006-01-22 14:38:00 -0800 (Sun, 22 Jan 2006)
New Revision: 2979

Modified:
   branches/r5rs/sigscheme/doc/spec.txt
   branches/r5rs/sigscheme/src/operations.c
   branches/r5rs/sigscheme/test/test-char-cmp.scm
   branches/r5rs/sigscheme/test/unittest.scm
Log:
* sigscheme/test/test-char-cmp.scm
  - Add description about case-insensitive comparison
  - Add tests for #\_ for case-insensitive comparison between
    alphabetic and non-alphabetic char.
  - Add tests for case-insensitive predicates
* sigscheme/src/operations.c
  - Add description about case-insensitive comparison
  - (ICHAR_FOLDCASE): New macro
  - (CHAR_CI_CMP_BODY, string_cmp): Replace ICHAR_DOWNCASE() with
    ICHAR_FOLDCASE() to indicate explicit intention
* sigscheme/doc/spec.txt
  - Add description about case-insensitive comparison

* sigscheme/test/unittest.scm
  - (report-error): Change the message for failed test to 'failed'
    from 'error' to avoid misrecognition between real error and failed
    test


Modified: branches/r5rs/sigscheme/doc/spec.txt
===================================================================
--- branches/r5rs/sigscheme/doc/spec.txt	2006-01-22 19:56:18 UTC (rev 2978)
+++ branches/r5rs/sigscheme/doc/spec.txt	2006-01-22 22:38:00 UTC (rev 2979)
@@ -37,6 +37,14 @@
     processing specified in SRFI-75 nor other non-Unicode multibyte character
     processing are supported in such procedures/predicates.
 
+  - Case-insensitive character comparison
+
+    SigScheme's case-insensitive comparison conforms to the foldcase'ed
+    comparison described in SRFI-75 and SRFI-13, although R5RS does not specify
+    comparison between alphabetic and non-alphabetic char.
+
+    See the description in operations.c for further details.
+
   - Case-sensitive identifiers
 
     SigScheme does distinguish letter case in indentifiers. Although case

Modified: branches/r5rs/sigscheme/src/operations.c
===================================================================
--- branches/r5rs/sigscheme/src/operations.c	2006-01-22 19:56:18 UTC (rev 2978)
+++ branches/r5rs/sigscheme/src/operations.c	2006-01-22 22:38:00 UTC (rev 2979)
@@ -70,9 +70,31 @@
 #define STRING_CI_CMP(str1, str2)                                            \
     (string_cmp(SCM_MANGLE(name), (str1), (str2), scm_true))
 
+/*
+ * SigScheme's case-insensitive comparison conforms to the foldcase'ed
+ * comparison described in SRFI-75 and SRFI-13, although R5RS does not specify
+ * comparison between alphabetic and non-alphabetic char.
+ *
+ * This specification is needed to produce natural result on sort functions
+ * with these case-insensitive predicates as comparator.
+ *
+ *   (a-sort '(#\a #\c #\B #\D #\1 #\[ #\$ #\_) char-ci<?)
+ *     => (#\$ #\1 #\a #\B #\c #\D #\[ #\_)  ;; the "natural result"
+ *
+ *     => (#\$ #\1 #\B #\D #\[ #\_ #\a #\c)  ;; "unnatural result"
+ *
+ * See also:
+ *
+ *   - Description around 'char-foldcase' in SRFI-75
+ *   - "Case mapping and case-folding" and "Comparison" section of SRFI-13
+ */
 /* FIXME: support SRFI-75 */
 #define ICHAR_DOWNCASE(c) ((isascii((int)(c))) ? tolower((int)(c)) : (c))
 #define ICHAR_UPCASE(c)   ((isascii((int)(c))) ? toupper((int)(c)) : (c))
+/* foldcase for case-insensitive character comparison is done by downcase as
+ * described in SRFI-75. Although SRFI-13 expects (char-downcase (char-upcase
+ * c)), this implementation is sufficient for ASCII range. */
+#define ICHAR_FOLDCASE(c) (ICHAR_DOWNCASE(c))
 
 /*=======================================
   Variable Declarations
@@ -1177,8 +1199,8 @@
         ENSURE_CHAR(ch1);                                                    \
         ENSURE_CHAR(ch2);                                                    \
                                                                              \
-        val1 = ICHAR_DOWNCASE(SCM_CHAR_VALUE(ch1));                          \
-        val2 = ICHAR_DOWNCASE(SCM_CHAR_VALUE(ch2));                          \
+        val1 = ICHAR_FOLDCASE(SCM_CHAR_VALUE(ch1));                          \
+        val2 = ICHAR_FOLDCASE(SCM_CHAR_VALUE(ch2));                          \
                                                                              \
         return MAKE_BOOL(val1 op val2);                                      \
     } while (/* CONSTCOND */ 0)
@@ -1612,8 +1634,8 @@
         c1 = SCM_CHARCODEC_READ_CHAR(scm_current_char_codec, mbs1);
         c2 = SCM_CHARCODEC_READ_CHAR(scm_current_char_codec, mbs2);
         if (case_insensitive) {
-            c1 = ICHAR_DOWNCASE(c1);
-            c2 = ICHAR_DOWNCASE(c2);
+            c1 = ICHAR_FOLDCASE(c1);
+            c2 = ICHAR_FOLDCASE(c2);
         }
         
         if (c1 > c2)

Modified: branches/r5rs/sigscheme/test/test-char-cmp.scm
===================================================================
--- branches/r5rs/sigscheme/test/test-char-cmp.scm	2006-01-22 19:56:18 UTC (rev 2978)
+++ branches/r5rs/sigscheme/test/test-char-cmp.scm	2006-01-22 22:38:00 UTC (rev 2979)
@@ -1,5 +1,5 @@
 ;;  FileName : test-char-cmp.scm
-;;  About    : unit test for R5RS char
+;;  About    : unit test for R5RS char comparison predicates
 ;;
 ;;  Copyright (C) 2006 YamaKen <yamaken AT bp.iij4u.or.jp>
 ;;
@@ -34,6 +34,23 @@
 
 (define tn test-name)
 
+;; SigScheme's case-insensitive comparison conforms to the foldcase'ed
+;; comparison described in SRFI-75 and SRFI-13, although R5RS does not specify
+;; comparison between alphabetic and non-alphabetic char.
+;;
+;; This specification is needed to produce natural result on sort functions
+;; with these case-insensitive predicates as comparator.
+;;
+;;   (a-sort '(#\a #\c #\B #\D #\1 #\[ #\$ #\_) char-ci<?)
+;;     => (#\$ #\1 #\a #\B #\c #\D #\[ #\_)  ;; the "natural result"
+;;
+;;     => (#\$ #\1 #\B #\D #\[ #\_ #\a #\c)  ;; "unnatural result"
+;;
+;; See also:
+;;
+;;   - Description around 'char-foldcase' in SRFI-75
+;;   - "Case mapping and case-folding" and "Comparison" section of SRFI-13
+
 ;; char=?
 (tn "char=? #\\x00")
 (assert-true   (tn) (char=? #\x00 #\x00))
@@ -45,6 +62,7 @@
 (assert-false  (tn) (char=? #\x00 #\A))
 (assert-false  (tn) (char=? #\x00 #\B))
 (assert-false  (tn) (char=? #\x00 #\Z))
+(assert-false  (tn) (char=? #\x00 #\_))
 (assert-false  (tn) (char=? #\x00 #\a))
 (assert-false  (tn) (char=? #\x00 #\b))
 (assert-false  (tn) (char=? #\x00 #\z))
@@ -60,6 +78,7 @@
 (assert-false  (tn) (char=? #\newline #\A))
 (assert-false  (tn) (char=? #\newline #\B))
 (assert-false  (tn) (char=? #\newline #\Z))
+(assert-false  (tn) (char=? #\newline #\_))
 (assert-false  (tn) (char=? #\newline #\a))
 (assert-false  (tn) (char=? #\newline #\b))
 (assert-false  (tn) (char=? #\newline #\z))
@@ -75,6 +94,7 @@
 (assert-false  (tn) (char=? #\space #\A))
 (assert-false  (tn) (char=? #\space #\B))
 (assert-false  (tn) (char=? #\space #\Z))
+(assert-false  (tn) (char=? #\space #\_))
 (assert-false  (tn) (char=? #\space #\a))
 (assert-false  (tn) (char=? #\space #\b))
 (assert-false  (tn) (char=? #\space #\z))
@@ -90,6 +110,7 @@
 (assert-false  (tn) (char=? #\! #\A))
 (assert-false  (tn) (char=? #\! #\B))
 (assert-false  (tn) (char=? #\! #\Z))
+(assert-false  (tn) (char=? #\! #\_))
 (assert-false  (tn) (char=? #\! #\a))
 (assert-false  (tn) (char=? #\! #\b))
 (assert-false  (tn) (char=? #\! #\z))
@@ -105,6 +126,7 @@
 (assert-false  (tn) (char=? #\0 #\A))
 (assert-false  (tn) (char=? #\0 #\B))
 (assert-false  (tn) (char=? #\0 #\Z))
+(assert-false  (tn) (char=? #\0 #\_))
 (assert-false  (tn) (char=? #\0 #\a))
 (assert-false  (tn) (char=? #\0 #\b))
 (assert-false  (tn) (char=? #\0 #\z))
@@ -120,6 +142,7 @@
 (assert-false  (tn) (char=? #\9 #\A))
 (assert-false  (tn) (char=? #\9 #\B))
 (assert-false  (tn) (char=? #\9 #\Z))
+(assert-false  (tn) (char=? #\9 #\_))
 (assert-false  (tn) (char=? #\9 #\a))
 (assert-false  (tn) (char=? #\9 #\b))
 (assert-false  (tn) (char=? #\9 #\z))
@@ -135,6 +158,7 @@
 (assert-true   (tn) (char=? #\A #\A))
 (assert-false  (tn) (char=? #\A #\B))
 (assert-false  (tn) (char=? #\A #\Z))
+(assert-false  (tn) (char=? #\A #\_))
 (assert-false  (tn) (char=? #\A #\a))
 (assert-false  (tn) (char=? #\A #\b))
 (assert-false  (tn) (char=? #\A #\z))
@@ -150,6 +174,7 @@
 (assert-false  (tn) (char=? #\B #\A))
 (assert-true   (tn) (char=? #\B #\B))
 (assert-false  (tn) (char=? #\B #\Z))
+(assert-false  (tn) (char=? #\B #\_))
 (assert-false  (tn) (char=? #\B #\a))
 (assert-false  (tn) (char=? #\B #\b))
 (assert-false  (tn) (char=? #\B #\z))
@@ -165,11 +190,28 @@
 (assert-false  (tn) (char=? #\Z #\A))
 (assert-false  (tn) (char=? #\Z #\B))
 (assert-true   (tn) (char=? #\Z #\Z))
+(assert-false  (tn) (char=? #\Z #\_))
 (assert-false  (tn) (char=? #\Z #\a))
 (assert-false  (tn) (char=? #\Z #\b))
 (assert-false  (tn) (char=? #\Z #\z))
 (assert-false  (tn) (char=? #\Z #\~))
 (assert-false  (tn) (char=? #\Z #\x7f))
+(tn "char=? #\\_")
+(assert-false  (tn) (char=? #\_ #\x00))
+(assert-false  (tn) (char=? #\_ #\newline))
+(assert-false  (tn) (char=? #\_ #\space))
+(assert-false  (tn) (char=? #\_ #\!))
+(assert-false  (tn) (char=? #\_ #\0))
+(assert-false  (tn) (char=? #\_ #\9))
+(assert-false  (tn) (char=? #\_ #\A))
+(assert-false  (tn) (char=? #\_ #\B))
+(assert-false  (tn) (char=? #\_ #\Z))
+(assert-true   (tn) (char=? #\_ #\_))
+(assert-false  (tn) (char=? #\_ #\a))
+(assert-false  (tn) (char=? #\_ #\b))
+(assert-false  (tn) (char=? #\_ #\z))
+(assert-false  (tn) (char=? #\_ #\~))
+(assert-false  (tn) (char=? #\_ #\x7f))
 (tn "char=? #\\a")
 (assert-false  (tn) (char=? #\a #\x00))
 (assert-false  (tn) (char=? #\a #\newline))
@@ -180,6 +222,7 @@
 (assert-false  (tn) (char=? #\a #\A))
 (assert-false  (tn) (char=? #\a #\B))
 (assert-false  (tn) (char=? #\a #\Z))
+(assert-false  (tn) (char=? #\a #\_))
 (assert-true   (tn) (char=? #\a #\a))
 (assert-false  (tn) (char=? #\a #\b))
 (assert-false  (tn) (char=? #\a #\z))
@@ -195,6 +238,7 @@
 (assert-false  (tn) (char=? #\b #\A))
 (assert-false  (tn) (char=? #\b #\B))
 (assert-false  (tn) (char=? #\b #\Z))
+(assert-false  (tn) (char=? #\b #\_))
 (assert-false  (tn) (char=? #\b #\a))
 (assert-true   (tn) (char=? #\b #\b))
 (assert-false  (tn) (char=? #\b #\z))
@@ -210,6 +254,7 @@
 (assert-false  (tn) (char=? #\z #\A))
 (assert-false  (tn) (char=? #\z #\B))
 (assert-false  (tn) (char=? #\z #\Z))
+(assert-false  (tn) (char=? #\z #\_))
 (assert-false  (tn) (char=? #\z #\a))
 (assert-false  (tn) (char=? #\z #\b))
 (assert-true   (tn) (char=? #\z #\z))
@@ -225,6 +270,7 @@
 (assert-false  (tn) (char=? #\~ #\A))
 (assert-false  (tn) (char=? #\~ #\B))
 (assert-false  (tn) (char=? #\~ #\Z))
+(assert-false  (tn) (char=? #\~ #\_))
 (assert-false  (tn) (char=? #\~ #\a))
 (assert-false  (tn) (char=? #\~ #\b))
 (assert-false  (tn) (char=? #\~ #\z))
@@ -240,6 +286,7 @@
 (assert-false  (tn) (char=? #\x7f #\A))
 (assert-false  (tn) (char=? #\x7f #\B))
 (assert-false  (tn) (char=? #\x7f #\Z))
+(assert-false  (tn) (char=? #\x7f #\_))
 (assert-false  (tn) (char=? #\x7f #\a))
 (assert-false  (tn) (char=? #\x7f #\b))
 (assert-false  (tn) (char=? #\x7f #\z))
@@ -257,6 +304,7 @@
 (assert-true   (tn) (char<? #\x00 #\A))
 (assert-true   (tn) (char<? #\x00 #\B))
 (assert-true   (tn) (char<? #\x00 #\Z))
+(assert-true   (tn) (char<? #\x00 #\_))
 (assert-true   (tn) (char<? #\x00 #\a))
 (assert-true   (tn) (char<? #\x00 #\b))
 (assert-true   (tn) (char<? #\x00 #\z))
@@ -272,6 +320,7 @@
 (assert-true   (tn) (char<? #\newline #\A))
 (assert-true   (tn) (char<? #\newline #\B))
 (assert-true   (tn) (char<? #\newline #\Z))
+(assert-true   (tn) (char<? #\newline #\_))
 (assert-true   (tn) (char<? #\newline #\a))
 (assert-true   (tn) (char<? #\newline #\b))
 (assert-true   (tn) (char<? #\newline #\z))
@@ -287,6 +336,7 @@
 (assert-true   (tn) (char<? #\space #\A))
 (assert-true   (tn) (char<? #\space #\B))
 (assert-true   (tn) (char<? #\space #\Z))
+(assert-true   (tn) (char<? #\space #\_))
 (assert-true   (tn) (char<? #\space #\a))
 (assert-true   (tn) (char<? #\space #\b))
 (assert-true   (tn) (char<? #\space #\z))
@@ -302,6 +352,7 @@
 (assert-true   (tn) (char<? #\! #\A))
 (assert-true   (tn) (char<? #\! #\B))
 (assert-true   (tn) (char<? #\! #\Z))
+(assert-true   (tn) (char<? #\! #\_))
 (assert-true   (tn) (char<? #\! #\a))
 (assert-true   (tn) (char<? #\! #\b))
 (assert-true   (tn) (char<? #\! #\z))
@@ -317,6 +368,7 @@
 (assert-true   (tn) (char<? #\0 #\A))
 (assert-true   (tn) (char<? #\0 #\B))
 (assert-true   (tn) (char<? #\0 #\Z))
+(assert-true   (tn) (char<? #\0 #\_))
 (assert-true   (tn) (char<? #\0 #\a))
 (assert-true   (tn) (char<? #\0 #\b))
 (assert-true   (tn) (char<? #\0 #\z))
@@ -332,6 +384,7 @@
 (assert-true   (tn) (char<? #\9 #\A))
 (assert-true   (tn) (char<? #\9 #\B))
 (assert-true   (tn) (char<? #\9 #\Z))
+(assert-true   (tn) (char<? #\9 #\_))
 (assert-true   (tn) (char<? #\9 #\a))
 (assert-true   (tn) (char<? #\9 #\b))
 (assert-true   (tn) (char<? #\9 #\z))
@@ -347,6 +400,7 @@
 (assert-false  (tn) (char<? #\A #\A))
 (assert-true   (tn) (char<? #\A #\B))
 (assert-true   (tn) (char<? #\A #\Z))
+(assert-true   (tn) (char<? #\A #\_))
 (assert-true   (tn) (char<? #\A #\a))
 (assert-true   (tn) (char<? #\A #\b))
 (assert-true   (tn) (char<? #\A #\z))
@@ -362,6 +416,7 @@
 (assert-false  (tn) (char<? #\B #\A))
 (assert-false  (tn) (char<? #\B #\B))
 (assert-true   (tn) (char<? #\B #\Z))
+(assert-true   (tn) (char<? #\B #\_))
 (assert-true   (tn) (char<? #\B #\a))
 (assert-true   (tn) (char<? #\B #\b))
 (assert-true   (tn) (char<? #\B #\z))
@@ -377,11 +432,28 @@
 (assert-false  (tn) (char<? #\Z #\A))
 (assert-false  (tn) (char<? #\Z #\B))
 (assert-false  (tn) (char<? #\Z #\Z))
+(assert-true   (tn) (char<? #\Z #\_))
 (assert-true   (tn) (char<? #\Z #\a))
 (assert-true   (tn) (char<? #\Z #\b))
 (assert-true   (tn) (char<? #\Z #\z))
 (assert-true   (tn) (char<? #\Z #\~))
 (assert-true   (tn) (char<? #\Z #\x7f))
+(tn "char<? #\\_")
+(assert-false  (tn) (char<? #\_ #\x00))
+(assert-false  (tn) (char<? #\_ #\newline))
+(assert-false  (tn) (char<? #\_ #\space))
+(assert-false  (tn) (char<? #\_ #\!))
+(assert-false  (tn) (char<? #\_ #\0))
+(assert-false  (tn) (char<? #\_ #\9))
+(assert-false  (tn) (char<? #\_ #\A))
+(assert-false  (tn) (char<? #\_ #\B))
+(assert-false  (tn) (char<? #\_ #\Z))
+(assert-false  (tn) (char<? #\_ #\_))
+(assert-true   (tn) (char<? #\_ #\a))
+(assert-true   (tn) (char<? #\_ #\b))
+(assert-true   (tn) (char<? #\_ #\z))
+(assert-true   (tn) (char<? #\_ #\~))
+(assert-true   (tn) (char<? #\_ #\x7f))
 (tn "char<? #\\a")
 (assert-false  (tn) (char<? #\a #\x00))
 (assert-false  (tn) (char<? #\a #\newline))
@@ -392,6 +464,7 @@
 (assert-false  (tn) (char<? #\a #\A))
 (assert-false  (tn) (char<? #\a #\B))
 (assert-false  (tn) (char<? #\a #\Z))
+(assert-false  (tn) (char<? #\a #\_))
 (assert-false  (tn) (char<? #\a #\a))
 (assert-true   (tn) (char<? #\a #\b))
 (assert-true   (tn) (char<? #\a #\z))
@@ -407,6 +480,7 @@
 (assert-false  (tn) (char<? #\b #\A))
 (assert-false  (tn) (char<? #\b #\B))
 (assert-false  (tn) (char<? #\b #\Z))
+(assert-false  (tn) (char<? #\b #\_))
 (assert-false  (tn) (char<? #\b #\a))
 (assert-false  (tn) (char<? #\b #\b))
 (assert-true   (tn) (char<? #\b #\z))
@@ -422,6 +496,7 @@
 (assert-false  (tn) (char<? #\z #\A))
 (assert-false  (tn) (char<? #\z #\B))
 (assert-false  (tn) (char<? #\z #\Z))
+(assert-false  (tn) (char<? #\z #\_))
 (assert-false  (tn) (char<? #\z #\a))
 (assert-false  (tn) (char<? #\z #\b))
 (assert-false  (tn) (char<? #\z #\z))
@@ -437,6 +512,7 @@
 (assert-false  (tn) (char<? #\~ #\A))
 (assert-false  (tn) (char<? #\~ #\B))
 (assert-false  (tn) (char<? #\~ #\Z))
+(assert-false  (tn) (char<? #\~ #\_))
 (assert-false  (tn) (char<? #\~ #\a))
 (assert-false  (tn) (char<? #\~ #\b))
 (assert-false  (tn) (char<? #\~ #\z))
@@ -452,6 +528,7 @@
 (assert-false  (tn) (char<? #\x7f #\A))
 (assert-false  (tn) (char<? #\x7f #\B))
 (assert-false  (tn) (char<? #\x7f #\Z))
+(assert-false  (tn) (char<? #\x7f #\_))
 (assert-false  (tn) (char<? #\x7f #\a))
 (assert-false  (tn) (char<? #\x7f #\b))
 (assert-false  (tn) (char<? #\x7f #\z))
@@ -469,6 +546,7 @@
 (assert-false  (tn) (char>? #\x00 #\A))
 (assert-false  (tn) (char>? #\x00 #\B))
 (assert-false  (tn) (char>? #\x00 #\Z))
+(assert-false  (tn) (char>? #\x00 #\_))
 (assert-false  (tn) (char>? #\x00 #\a))
 (assert-false  (tn) (char>? #\x00 #\b))
 (assert-false  (tn) (char>? #\x00 #\z))
@@ -484,6 +562,7 @@
 (assert-false  (tn) (char>? #\newline #\A))
 (assert-false  (tn) (char>? #\newline #\B))
 (assert-false  (tn) (char>? #\newline #\Z))
+(assert-false  (tn) (char>? #\newline #\_))
 (assert-false  (tn) (char>? #\newline #\a))
 (assert-false  (tn) (char>? #\newline #\b))
 (assert-false  (tn) (char>? #\newline #\z))
@@ -499,6 +578,7 @@
 (assert-false  (tn) (char>? #\space #\A))
 (assert-false  (tn) (char>? #\space #\B))
 (assert-false  (tn) (char>? #\space #\Z))
+(assert-false  (tn) (char>? #\space #\_))
 (assert-false  (tn) (char>? #\space #\a))
 (assert-false  (tn) (char>? #\space #\b))
 (assert-false  (tn) (char>? #\space #\z))
@@ -514,6 +594,7 @@
 (assert-false  (tn) (char>? #\! #\A))
 (assert-false  (tn) (char>? #\! #\B))
 (assert-false  (tn) (char>? #\! #\Z))
+(assert-false  (tn) (char>? #\! #\_))
 (assert-false  (tn) (char>? #\! #\a))
 (assert-false  (tn) (char>? #\! #\b))
 (assert-false  (tn) (char>? #\! #\z))
@@ -529,6 +610,7 @@
 (assert-false  (tn) (char>? #\0 #\A))
 (assert-false  (tn) (char>? #\0 #\B))
 (assert-false  (tn) (char>? #\0 #\Z))
+(assert-false  (tn) (char>? #\0 #\_))
 (assert-false  (tn) (char>? #\0 #\a))
 (assert-false  (tn) (char>? #\0 #\b))
 (assert-false  (tn) (char>? #\0 #\z))
@@ -544,6 +626,7 @@
 (assert-false  (tn) (char>? #\9 #\A))
 (assert-false  (tn) (char>? #\9 #\B))
 (assert-false  (tn) (char>? #\9 #\Z))
+(assert-false  (tn) (char>? #\9 #\_))
 (assert-false  (tn) (char>? #\9 #\a))
 (assert-false  (tn) (char>? #\9 #\b))
 (assert-false  (tn) (char>? #\9 #\z))
@@ -559,6 +642,7 @@
 (assert-false  (tn) (char>? #\A #\A))
 (assert-false  (tn) (char>? #\A #\B))
 (assert-false  (tn) (char>? #\A #\Z))
+(assert-false  (tn) (char>? #\A #\_))
 (assert-false  (tn) (char>? #\A #\a))
 (assert-false  (tn) (char>? #\A #\b))
 (assert-false  (tn) (char>? #\A #\z))
@@ -574,6 +658,7 @@
 (assert-true   (tn) (char>? #\B #\A))
 (assert-false  (tn) (char>? #\B #\B))
 (assert-false  (tn) (char>? #\B #\Z))
+(assert-false  (tn) (char>? #\B #\_))
 (assert-false  (tn) (char>? #\B #\a))
 (assert-false  (tn) (char>? #\B #\b))
 (assert-false  (tn) (char>? #\B #\z))
@@ -589,11 +674,28 @@
 (assert-true   (tn) (char>? #\Z #\A))
 (assert-true   (tn) (char>? #\Z #\B))
 (assert-false  (tn) (char>? #\Z #\Z))
+(assert-false  (tn) (char>? #\Z #\_))
 (assert-false  (tn) (char>? #\Z #\a))
 (assert-false  (tn) (char>? #\Z #\b))
 (assert-false  (tn) (char>? #\Z #\z))
 (assert-false  (tn) (char>? #\Z #\~))
 (assert-false  (tn) (char>? #\Z #\x7f))
+(tn "char>? #\\_")
+(assert-true   (tn) (char>? #\_ #\x00))
+(assert-true   (tn) (char>? #\_ #\newline))
+(assert-true   (tn) (char>? #\_ #\space))
+(assert-true   (tn) (char>? #\_ #\!))
+(assert-true   (tn) (char>? #\_ #\0))
+(assert-true   (tn) (char>? #\_ #\9))
+(assert-true   (tn) (char>? #\_ #\A))
+(assert-true   (tn) (char>? #\_ #\B))
+(assert-true   (tn) (char>? #\_ #\Z))
+(assert-false  (tn) (char>? #\_ #\_))
+(assert-false  (tn) (char>? #\_ #\a))
+(assert-false  (tn) (char>? #\_ #\b))
+(assert-false  (tn) (char>? #\_ #\z))
+(assert-false  (tn) (char>? #\_ #\~))
+(assert-false  (tn) (char>? #\_ #\x7f))
 (tn "char>? #\\a")
 (assert-true   (tn) (char>? #\a #\x00))
 (assert-true   (tn) (char>? #\a #\newline))
@@ -604,6 +706,7 @@
 (assert-true   (tn) (char>? #\a #\A))
 (assert-true   (tn) (char>? #\a #\B))
 (assert-true   (tn) (char>? #\a #\Z))
+(assert-true   (tn) (char>? #\a #\_))
 (assert-false  (tn) (char>? #\a #\a))
 (assert-false  (tn) (char>? #\a #\b))
 (assert-false  (tn) (char>? #\a #\z))
@@ -619,6 +722,7 @@
 (assert-true   (tn) (char>? #\b #\A))
 (assert-true   (tn) (char>? #\b #\B))
 (assert-true   (tn) (char>? #\b #\Z))
+(assert-true   (tn) (char>? #\b #\_))
 (assert-true   (tn) (char>? #\b #\a))
 (assert-false  (tn) (char>? #\b #\b))
 (assert-false  (tn) (char>? #\b #\z))
@@ -634,6 +738,7 @@
 (assert-true   (tn) (char>? #\z #\A))
 (assert-true   (tn) (char>? #\z #\B))
 (assert-true   (tn) (char>? #\z #\Z))
+(assert-true   (tn) (char>? #\z #\_))
 (assert-true   (tn) (char>? #\z #\a))
 (assert-true   (tn) (char>? #\z #\b))
 (assert-false  (tn) (char>? #\z #\z))
@@ -649,6 +754,7 @@
 (assert-true   (tn) (char>? #\~ #\A))
 (assert-true   (tn) (char>? #\~ #\B))
 (assert-true   (tn) (char>? #\~ #\Z))
+(assert-true   (tn) (char>? #\~ #\_))
 (assert-true   (tn) (char>? #\~ #\a))
 (assert-true   (tn) (char>? #\~ #\b))
 (assert-true   (tn) (char>? #\~ #\z))
@@ -664,6 +770,7 @@
 (assert-true   (tn) (char>? #\x7f #\A))
 (assert-true   (tn) (char>? #\x7f #\B))
 (assert-true   (tn) (char>? #\x7f #\Z))
+(assert-true   (tn) (char>? #\x7f #\_))
 (assert-true   (tn) (char>? #\x7f #\a))
 (assert-true   (tn) (char>? #\x7f #\b))
 (assert-true   (tn) (char>? #\x7f #\z))
@@ -681,6 +788,7 @@
 (assert-true   (tn) (char<=? #\x00 #\A))
 (assert-true   (tn) (char<=? #\x00 #\B))
 (assert-true   (tn) (char<=? #\x00 #\Z))
+(assert-true   (tn) (char<=? #\x00 #\_))
 (assert-true   (tn) (char<=? #\x00 #\a))
 (assert-true   (tn) (char<=? #\x00 #\b))
 (assert-true   (tn) (char<=? #\x00 #\z))
@@ -696,6 +804,7 @@
 (assert-true   (tn) (char<=? #\newline #\A))
 (assert-true   (tn) (char<=? #\newline #\B))
 (assert-true   (tn) (char<=? #\newline #\Z))
+(assert-true   (tn) (char<=? #\newline #\_))
 (assert-true   (tn) (char<=? #\newline #\a))
 (assert-true   (tn) (char<=? #\newline #\b))
 (assert-true   (tn) (char<=? #\newline #\z))
@@ -711,6 +820,7 @@
 (assert-true   (tn) (char<=? #\space #\A))
 (assert-true   (tn) (char<=? #\space #\B))
 (assert-true   (tn) (char<=? #\space #\Z))
+(assert-true   (tn) (char<=? #\space #\_))
 (assert-true   (tn) (char<=? #\space #\a))
 (assert-true   (tn) (char<=? #\space #\b))
 (assert-true   (tn) (char<=? #\space #\z))
@@ -726,6 +836,7 @@
 (assert-true   (tn) (char<=? #\! #\A))
 (assert-true   (tn) (char<=? #\! #\B))
 (assert-true   (tn) (char<=? #\! #\Z))
+(assert-true   (tn) (char<=? #\! #\_))
 (assert-true   (tn) (char<=? #\! #\a))
 (assert-true   (tn) (char<=? #\! #\b))
 (assert-true   (tn) (char<=? #\! #\z))
@@ -741,6 +852,7 @@
 (assert-true   (tn) (char<=? #\0 #\A))
 (assert-true   (tn) (char<=? #\0 #\B))
 (assert-true   (tn) (char<=? #\0 #\Z))
+(assert-true   (tn) (char<=? #\0 #\_))
 (assert-true   (tn) (char<=? #\0 #\a))
 (assert-true   (tn) (char<=? #\0 #\b))
 (assert-true   (tn) (char<=? #\0 #\z))
@@ -756,6 +868,7 @@
 (assert-true   (tn) (char<=? #\9 #\A))
 (assert-true   (tn) (char<=? #\9 #\B))
 (assert-true   (tn) (char<=? #\9 #\Z))
+(assert-true   (tn) (char<=? #\9 #\_))
 (assert-true   (tn) (char<=? #\9 #\a))
 (assert-true   (tn) (char<=? #\9 #\b))
 (assert-true   (tn) (char<=? #\9 #\z))
@@ -771,6 +884,7 @@
 (assert-true   (tn) (char<=? #\A #\A))
 (assert-true   (tn) (char<=? #\A #\B))
 (assert-true   (tn) (char<=? #\A #\Z))
+(assert-true   (tn) (char<=? #\A #\_))
 (assert-true   (tn) (char<=? #\A #\a))
 (assert-true   (tn) (char<=? #\A #\b))
 (assert-true   (tn) (char<=? #\A #\z))
@@ -786,6 +900,7 @@
 (assert-false  (tn) (char<=? #\B #\A))
 (assert-true   (tn) (char<=? #\B #\B))
 (assert-true   (tn) (char<=? #\B #\Z))
+(assert-true   (tn) (char<=? #\B #\_))
 (assert-true   (tn) (char<=? #\B #\a))
 (assert-true   (tn) (char<=? #\B #\b))
 (assert-true   (tn) (char<=? #\B #\z))
@@ -801,11 +916,28 @@
 (assert-false  (tn) (char<=? #\Z #\A))
 (assert-false  (tn) (char<=? #\Z #\B))
 (assert-true   (tn) (char<=? #\Z #\Z))
+(assert-true   (tn) (char<=? #\Z #\_))
 (assert-true   (tn) (char<=? #\Z #\a))
 (assert-true   (tn) (char<=? #\Z #\b))
 (assert-true   (tn) (char<=? #\Z #\z))
 (assert-true   (tn) (char<=? #\Z #\~))
 (assert-true   (tn) (char<=? #\Z #\x7f))
+(tn "char<=? #\\_")
+(assert-false  (tn) (char<=? #\_ #\x00))
+(assert-false  (tn) (char<=? #\_ #\newline))
+(assert-false  (tn) (char<=? #\_ #\space))
+(assert-false  (tn) (char<=? #\_ #\!))
+(assert-false  (tn) (char<=? #\_ #\0))
+(assert-false  (tn) (char<=? #\_ #\9))
+(assert-false  (tn) (char<=? #\_ #\A))
+(assert-false  (tn) (char<=? #\_ #\B))
+(assert-false  (tn) (char<=? #\_ #\Z))
+(assert-true   (tn) (char<=? #\_ #\_))
+(assert-true   (tn) (char<=? #\_ #\a))
+(assert-true   (tn) (char<=? #\_ #\b))
+(assert-true   (tn) (char<=? #\_ #\z))
+(assert-true   (tn) (char<=? #\_ #\~))
+(assert-true   (tn) (char<=? #\_ #\x7f))
 (tn "char<=? #\\a")
 (assert-false  (tn) (char<=? #\a #\x00))
 (assert-false  (tn) (char<=? #\a #\newline))
@@ -816,6 +948,7 @@
 (assert-false  (tn) (char<=? #\a #\A))
 (assert-false  (tn) (char<=? #\a #\B))
 (assert-false  (tn) (char<=? #\a #\Z))
+(assert-false  (tn) (char<=? #\a #\_))
 (assert-true   (tn) (char<=? #\a #\a))
 (assert-true   (tn) (char<=? #\a #\b))
 (assert-true   (tn) (char<=? #\a #\z))
@@ -831,6 +964,7 @@
 (assert-false  (tn) (char<=? #\b #\A))
 (assert-false  (tn) (char<=? #\b #\B))
 (assert-false  (tn) (char<=? #\b #\Z))
+(assert-false  (tn) (char<=? #\b #\_))
 (assert-false  (tn) (char<=? #\b #\a))
 (assert-true   (tn) (char<=? #\b #\b))
 (assert-true   (tn) (char<=? #\b #\z))
@@ -846,6 +980,7 @@
 (assert-false  (tn) (char<=? #\z #\A))
 (assert-false  (tn) (char<=? #\z #\B))
 (assert-false  (tn) (char<=? #\z #\Z))
+(assert-false  (tn) (char<=? #\z #\_))
 (assert-false  (tn) (char<=? #\z #\a))
 (assert-false  (tn) (char<=? #\z #\b))
 (assert-true   (tn) (char<=? #\z #\z))
@@ -861,6 +996,7 @@
 (assert-false  (tn) (char<=? #\~ #\A))
 (assert-false  (tn) (char<=? #\~ #\B))
 (assert-false  (tn) (char<=? #\~ #\Z))
+(assert-false  (tn) (char<=? #\~ #\_))
 (assert-false  (tn) (char<=? #\~ #\a))
 (assert-false  (tn) (char<=? #\~ #\b))
 (assert-false  (tn) (char<=? #\~ #\z))
@@ -876,6 +1012,7 @@
 (assert-false  (tn) (char<=? #\x7f #\A))
 (assert-false  (tn) (char<=? #\x7f #\B))
 (assert-false  (tn) (char<=? #\x7f #\Z))
+(assert-false  (tn) (char<=? #\x7f #\_))
 (assert-false  (tn) (char<=? #\x7f #\a))
 (assert-false  (tn) (char<=? #\x7f #\b))
 (assert-false  (tn) (char<=? #\x7f #\z))
@@ -893,6 +1030,7 @@
 (assert-false  (tn) (char>=? #\x00 #\A))
 (assert-false  (tn) (char>=? #\x00 #\B))
 (assert-false  (tn) (char>=? #\x00 #\Z))
+(assert-false  (tn) (char>=? #\x00 #\_))
 (assert-false  (tn) (char>=? #\x00 #\a))
 (assert-false  (tn) (char>=? #\x00 #\b))
 (assert-false  (tn) (char>=? #\x00 #\z))
@@ -908,6 +1046,7 @@
 (assert-false  (tn) (char>=? #\newline #\A))
 (assert-false  (tn) (char>=? #\newline #\B))
 (assert-false  (tn) (char>=? #\newline #\Z))
+(assert-false  (tn) (char>=? #\newline #\_))
 (assert-false  (tn) (char>=? #\newline #\a))
 (assert-false  (tn) (char>=? #\newline #\b))
 (assert-false  (tn) (char>=? #\newline #\z))
@@ -923,6 +1062,7 @@
 (assert-false  (tn) (char>=? #\space #\A))
 (assert-false  (tn) (char>=? #\space #\B))
 (assert-false  (tn) (char>=? #\space #\Z))
+(assert-false  (tn) (char>=? #\space #\_))
 (assert-false  (tn) (char>=? #\space #\a))
 (assert-false  (tn) (char>=? #\space #\b))
 (assert-false  (tn) (char>=? #\space #\z))
@@ -938,6 +1078,7 @@
 (assert-false  (tn) (char>=? #\! #\A))
 (assert-false  (tn) (char>=? #\! #\B))
 (assert-false  (tn) (char>=? #\! #\Z))
+(assert-false  (tn) (char>=? #\! #\_))
 (assert-false  (tn) (char>=? #\! #\a))
 (assert-false  (tn) (char>=? #\! #\b))
 (assert-false  (tn) (char>=? #\! #\z))
@@ -953,6 +1094,7 @@
 (assert-false  (tn) (char>=? #\0 #\A))
 (assert-false  (tn) (char>=? #\0 #\B))
 (assert-false  (tn) (char>=? #\0 #\Z))
+(assert-false  (tn) (char>=? #\0 #\_))
 (assert-false  (tn) (char>=? #\0 #\a))
 (assert-false  (tn) (char>=? #\0 #\b))
 (assert-false  (tn) (char>=? #\0 #\z))
@@ -968,6 +1110,7 @@
 (assert-false  (tn) (char>=? #\9 #\A))
 (assert-false  (tn) (char>=? #\9 #\B))
 (assert-false  (tn) (char>=? #\9 #\Z))
+(assert-false  (tn) (char>=? #\9 #\_))
 (assert-false  (tn) (char>=? #\9 #\a))
 (assert-false  (tn) (char>=? #\9 #\b))
 (assert-false  (tn) (char>=? #\9 #\z))
@@ -983,6 +1126,7 @@
 (assert-true   (tn) (char>=? #\A #\A))
 (assert-false  (tn) (char>=? #\A #\B))
 (assert-false  (tn) (char>=? #\A #\Z))
+(assert-false  (tn) (char>=? #\A #\_))
 (assert-false  (tn) (char>=? #\A #\a))
 (assert-false  (tn) (char>=? #\A #\b))
 (assert-false  (tn) (char>=? #\A #\z))
@@ -998,6 +1142,7 @@
 (assert-true   (tn) (char>=? #\B #\A))
 (assert-true   (tn) (char>=? #\B #\B))
 (assert-false  (tn) (char>=? #\B #\Z))
+(assert-false  (tn) (char>=? #\B #\_))
 (assert-false  (tn) (char>=? #\B #\a))
 (assert-false  (tn) (char>=? #\B #\b))
 (assert-false  (tn) (char>=? #\B #\z))
@@ -1013,11 +1158,28 @@
 (assert-true   (tn) (char>=? #\Z #\A))
 (assert-true   (tn) (char>=? #\Z #\B))
 (assert-true   (tn) (char>=? #\Z #\Z))
+(assert-false  (tn) (char>=? #\Z #\_))
 (assert-false  (tn) (char>=? #\Z #\a))
 (assert-false  (tn) (char>=? #\Z #\b))
 (assert-false  (tn) (char>=? #\Z #\z))
 (assert-false  (tn) (char>=? #\Z #\~))
 (assert-false  (tn) (char>=? #\Z #\x7f))
+(tn "char>=? #\\_")
+(assert-true   (tn) (char>=? #\_ #\x00))
+(assert-true   (tn) (char>=? #\_ #\newline))
+(assert-true   (tn) (char>=? #\_ #\space))
+(assert-true   (tn) (char>=? #\_ #\!))
+(assert-true   (tn) (char>=? #\_ #\0))
+(assert-true   (tn) (char>=? #\_ #\9))
+(assert-true   (tn) (char>=? #\_ #\A))
+(assert-true   (tn) (char>=? #\_ #\B))
+(assert-true   (tn) (char>=? #\_ #\Z))
+(assert-true   (tn) (char>=? #\_ #\_))
+(assert-false  (tn) (char>=? #\_ #\a))
+(assert-false  (tn) (char>=? #\_ #\b))
+(assert-false  (tn) (char>=? #\_ #\z))
+(assert-false  (tn) (char>=? #\_ #\~))
+(assert-false  (tn) (char>=? #\_ #\x7f))
 (tn "char>=? #\\a")
 (assert-true   (tn) (char>=? #\a #\x00))
 (assert-true   (tn) (char>=? #\a #\newline))
@@ -1028,6 +1190,7 @@
 (assert-true   (tn) (char>=? #\a #\A))
 (assert-true   (tn) (char>=? #\a #\B))
 (assert-true   (tn) (char>=? #\a #\Z))
+(assert-true   (tn) (char>=? #\a #\_))
 (assert-true   (tn) (char>=? #\a #\a))
 (assert-false  (tn) (char>=? #\a #\b))
 (assert-false  (tn) (char>=? #\a #\z))
@@ -1043,6 +1206,7 @@
 (assert-true   (tn) (char>=? #\b #\A))
 (assert-true   (tn) (char>=? #\b #\B))
 (assert-true   (tn) (char>=? #\b #\Z))
+(assert-true   (tn) (char>=? #\b #\_))
 (assert-true   (tn) (char>=? #\b #\a))
 (assert-true   (tn) (char>=? #\b #\b))
 (assert-false  (tn) (char>=? #\b #\z))
@@ -1058,6 +1222,7 @@
 (assert-true   (tn) (char>=? #\z #\A))
 (assert-true   (tn) (char>=? #\z #\B))
 (assert-true   (tn) (char>=? #\z #\Z))
+(assert-true   (tn) (char>=? #\z #\_))
 (assert-true   (tn) (char>=? #\z #\a))
 (assert-true   (tn) (char>=? #\z #\b))
 (assert-true   (tn) (char>=? #\z #\z))
@@ -1073,6 +1238,7 @@
 (assert-true   (tn) (char>=? #\~ #\A))
 (assert-true   (tn) (char>=? #\~ #\B))
 (assert-true   (tn) (char>=? #\~ #\Z))
+(assert-true   (tn) (char>=? #\~ #\_))
 (assert-true   (tn) (char>=? #\~ #\a))
 (assert-true   (tn) (char>=? #\~ #\b))
 (assert-true   (tn) (char>=? #\~ #\z))
@@ -1088,10 +1254,1221 @@
 (assert-true   (tn) (char>=? #\x7f #\A))
 (assert-true   (tn) (char>=? #\x7f #\B))
 (assert-true   (tn) (char>=? #\x7f #\Z))
+(assert-true   (tn) (char>=? #\x7f #\_))
 (assert-true   (tn) (char>=? #\x7f #\a))
 (assert-true   (tn) (char>=? #\x7f #\b))
 (assert-true   (tn) (char>=? #\x7f #\z))
 (assert-true   (tn) (char>=? #\x7f #\~))
 (assert-true   (tn) (char>=? #\x7f #\x7f))
 
+;; char-ci=?
+(tn "char-ci=? #\\x00")
+(assert-true   (tn) (char-ci=? #\x00 #\x00))
+(assert-false  (tn) (char-ci=? #\x00 #\newline))
+(assert-false  (tn) (char-ci=? #\x00 #\space))
+(assert-false  (tn) (char-ci=? #\x00 #\!))
+(assert-false  (tn) (char-ci=? #\x00 #\0))
+(assert-false  (tn) (char-ci=? #\x00 #\9))
+(assert-false  (tn) (char-ci=? #\x00 #\A))
+(assert-false  (tn) (char-ci=? #\x00 #\B))
+(assert-false  (tn) (char-ci=? #\x00 #\Z))
+(assert-false  (tn) (char-ci=? #\x00 #\_))
+(assert-false  (tn) (char-ci=? #\x00 #\a))
+(assert-false  (tn) (char-ci=? #\x00 #\b))
+(assert-false  (tn) (char-ci=? #\x00 #\z))
+(assert-false  (tn) (char-ci=? #\x00 #\~))
+(assert-false  (tn) (char-ci=? #\x00 #\x7f))
+(tn "char-ci=? #\\newline")
+(assert-false  (tn) (char-ci=? #\newline #\x00))
+(assert-true   (tn) (char-ci=? #\newline #\newline))
+(assert-false  (tn) (char-ci=? #\newline #\space))
+(assert-false  (tn) (char-ci=? #\newline #\!))
+(assert-false  (tn) (char-ci=? #\newline #\0))
+(assert-false  (tn) (char-ci=? #\newline #\9))
+(assert-false  (tn) (char-ci=? #\newline #\A))
+(assert-false  (tn) (char-ci=? #\newline #\B))
+(assert-false  (tn) (char-ci=? #\newline #\Z))
+(assert-false  (tn) (char-ci=? #\newline #\_))
+(assert-false  (tn) (char-ci=? #\newline #\a))
+(assert-false  (tn) (char-ci=? #\newline #\b))
+(assert-false  (tn) (char-ci=? #\newline #\z))
+(assert-false  (tn) (char-ci=? #\newline #\~))
+(assert-false  (tn) (char-ci=? #\newline #\x7f))
+(tn "char-ci=? #\\space")
+(assert-false  (tn) (char-ci=? #\space #\x00))
+(assert-false  (tn) (char-ci=? #\space #\newline))
+(assert-true   (tn) (char-ci=? #\space #\space))
+(assert-false  (tn) (char-ci=? #\space #\!))
+(assert-false  (tn) (char-ci=? #\space #\0))
+(assert-false  (tn) (char-ci=? #\space #\9))
+(assert-false  (tn) (char-ci=? #\space #\A))
+(assert-false  (tn) (char-ci=? #\space #\B))
+(assert-false  (tn) (char-ci=? #\space #\Z))
+(assert-false  (tn) (char-ci=? #\space #\_))
+(assert-false  (tn) (char-ci=? #\space #\a))
+(assert-false  (tn) (char-ci=? #\space #\b))
+(assert-false  (tn) (char-ci=? #\space #\z))
+(assert-false  (tn) (char-ci=? #\space #\~))
+(assert-false  (tn) (char-ci=? #\space #\x7f))
+(tn "char-ci=? #\\!")
+(assert-false  (tn) (char-ci=? #\! #\x00))
+(assert-false  (tn) (char-ci=? #\! #\newline))
+(assert-false  (tn) (char-ci=? #\! #\space))
+(assert-true   (tn) (char-ci=? #\! #\!))
+(assert-false  (tn) (char-ci=? #\! #\0))
+(assert-false  (tn) (char-ci=? #\! #\9))
+(assert-false  (tn) (char-ci=? #\! #\A))
+(assert-false  (tn) (char-ci=? #\! #\B))
+(assert-false  (tn) (char-ci=? #\! #\Z))
+(assert-false  (tn) (char-ci=? #\! #\_))
+(assert-false  (tn) (char-ci=? #\! #\a))
+(assert-false  (tn) (char-ci=? #\! #\b))
+(assert-false  (tn) (char-ci=? #\! #\z))
+(assert-false  (tn) (char-ci=? #\! #\~))
+(assert-false  (tn) (char-ci=? #\! #\x7f))
+(tn "char-ci=? #\\0")
+(assert-false  (tn) (char-ci=? #\0 #\x00))
+(assert-false  (tn) (char-ci=? #\0 #\newline))
+(assert-false  (tn) (char-ci=? #\0 #\space))
+(assert-false  (tn) (char-ci=? #\0 #\!))
+(assert-true   (tn) (char-ci=? #\0 #\0))
+(assert-false  (tn) (char-ci=? #\0 #\9))
+(assert-false  (tn) (char-ci=? #\0 #\A))
+(assert-false  (tn) (char-ci=? #\0 #\B))
+(assert-false  (tn) (char-ci=? #\0 #\Z))
+(assert-false  (tn) (char-ci=? #\0 #\_))
+(assert-false  (tn) (char-ci=? #\0 #\a))
+(assert-false  (tn) (char-ci=? #\0 #\b))
+(assert-false  (tn) (char-ci=? #\0 #\z))
+(assert-false  (tn) (char-ci=? #\0 #\~))
+(assert-false  (tn) (char-ci=? #\0 #\x7f))
+(tn "char-ci=? #\\9")
+(assert-false  (tn) (char-ci=? #\9 #\x00))
+(assert-false  (tn) (char-ci=? #\9 #\newline))
+(assert-false  (tn) (char-ci=? #\9 #\space))
+(assert-false  (tn) (char-ci=? #\9 #\!))
+(assert-false  (tn) (char-ci=? #\9 #\0))
+(assert-true   (tn) (char-ci=? #\9 #\9))
+(assert-false  (tn) (char-ci=? #\9 #\A))
+(assert-false  (tn) (char-ci=? #\9 #\B))
+(assert-false  (tn) (char-ci=? #\9 #\Z))
+(assert-false  (tn) (char-ci=? #\9 #\_))
+(assert-false  (tn) (char-ci=? #\9 #\a))
+(assert-false  (tn) (char-ci=? #\9 #\b))
+(assert-false  (tn) (char-ci=? #\9 #\z))
+(assert-false  (tn) (char-ci=? #\9 #\~))
+(assert-false  (tn) (char-ci=? #\9 #\x7f))
+(tn "char-ci=? #\\A")
+(assert-false  (tn) (char-ci=? #\A #\x00))
+(assert-false  (tn) (char-ci=? #\A #\newline))
+(assert-false  (tn) (char-ci=? #\A #\space))
+(assert-false  (tn) (char-ci=? #\A #\!))
+(assert-false  (tn) (char-ci=? #\A #\0))
+(assert-false  (tn) (char-ci=? #\A #\9))
+(assert-true   (tn) (char-ci=? #\A #\A))
+(assert-false  (tn) (char-ci=? #\A #\B))
+(assert-false  (tn) (char-ci=? #\A #\Z))
+(assert-false  (tn) (char-ci=? #\A #\_))
+(assert-true   (tn) (char-ci=? #\A #\a))
+(assert-false  (tn) (char-ci=? #\A #\b))
+(assert-false  (tn) (char-ci=? #\A #\z))
+(assert-false  (tn) (char-ci=? #\A #\~))
+(assert-false  (tn) (char-ci=? #\A #\x7f))
+(tn "char-ci=? #\\B")
+(assert-false  (tn) (char-ci=? #\B #\x00))
+(assert-false  (tn) (char-ci=? #\B #\newline))
+(assert-false  (tn) (char-ci=? #\B #\space))
+(assert-false  (tn) (char-ci=? #\B #\!))
+(assert-false  (tn) (char-ci=? #\B #\0))
+(assert-false  (tn) (char-ci=? #\B #\9))
+(assert-false  (tn) (char-ci=? #\B #\A))
+(assert-true   (tn) (char-ci=? #\B #\B))
+(assert-false  (tn) (char-ci=? #\B #\Z))
+(assert-false  (tn) (char-ci=? #\B #\_))
+(assert-false  (tn) (char-ci=? #\B #\a))
+(assert-true   (tn) (char-ci=? #\B #\b))
+(assert-false  (tn) (char-ci=? #\B #\z))
+(assert-false  (tn) (char-ci=? #\B #\~))
+(assert-false  (tn) (char-ci=? #\B #\x7f))
+(tn "char-ci=? #\\Z")
+(assert-false  (tn) (char-ci=? #\Z #\x00))
+(assert-false  (tn) (char-ci=? #\Z #\newline))
+(assert-false  (tn) (char-ci=? #\Z #\space))
+(assert-false  (tn) (char-ci=? #\Z #\!))
+(assert-false  (tn) (char-ci=? #\Z #\0))
+(assert-false  (tn) (char-ci=? #\Z #\9))
+(assert-false  (tn) (char-ci=? #\Z #\A))
+(assert-false  (tn) (char-ci=? #\Z #\B))
+(assert-true   (tn) (char-ci=? #\Z #\Z))
+(assert-false  (tn) (char-ci=? #\Z #\_))
+(assert-false  (tn) (char-ci=? #\Z #\a))
+(assert-false  (tn) (char-ci=? #\Z #\b))
+(assert-true   (tn) (char-ci=? #\Z #\z))
+(assert-false  (tn) (char-ci=? #\Z #\~))
+(assert-false  (tn) (char-ci=? #\Z #\x7f))
+(tn "char-ci=? #\\_")
+(assert-false  (tn) (char-ci=? #\_ #\x00))
+(assert-false  (tn) (char-ci=? #\_ #\newline))
+(assert-false  (tn) (char-ci=? #\_ #\space))
+(assert-false  (tn) (char-ci=? #\_ #\!))
+(assert-false  (tn) (char-ci=? #\_ #\0))
+(assert-false  (tn) (char-ci=? #\_ #\9))
+(assert-false  (tn) (char-ci=? #\_ #\A))
+(assert-false  (tn) (char-ci=? #\_ #\B))
+(assert-false  (tn) (char-ci=? #\_ #\Z))
+(assert-true   (tn) (char-ci=? #\_ #\_))
+(assert-false  (tn) (char-ci=? #\_ #\a))
+(assert-false  (tn) (char-ci=? #\_ #\b))
+(assert-false  (tn) (char-ci=? #\_ #\z))
+(assert-false  (tn) (char-ci=? #\_ #\~))
+(assert-false  (tn) (char-ci=? #\_ #\x7f))
+(tn "char-ci=? #\\a")
+(assert-false  (tn) (char-ci=? #\a #\x00))
+(assert-false  (tn) (char-ci=? #\a #\newline))
+(assert-false  (tn) (char-ci=? #\a #\space))
+(assert-false  (tn) (char-ci=? #\a #\!))
+(assert-false  (tn) (char-ci=? #\a #\0))
+(assert-false  (tn) (char-ci=? #\a #\9))
+(assert-true   (tn) (char-ci=? #\a #\A))
+(assert-false  (tn) (char-ci=? #\a #\B))
+(assert-false  (tn) (char-ci=? #\a #\Z))
+(assert-false  (tn) (char-ci=? #\a #\_))
+(assert-true   (tn) (char-ci=? #\a #\a))
+(assert-false  (tn) (char-ci=? #\a #\b))
+(assert-false  (tn) (char-ci=? #\a #\z))
+(assert-false  (tn) (char-ci=? #\a #\~))
+(assert-false  (tn) (char-ci=? #\a #\x7f))
+(tn "char-ci=? #\\b")
+(assert-false  (tn) (char-ci=? #\b #\x00))
+(assert-false  (tn) (char-ci=? #\b #\newline))
+(assert-false  (tn) (char-ci=? #\b #\space))
+(assert-false  (tn) (char-ci=? #\b #\!))
+(assert-false  (tn) (char-ci=? #\b #\0))
+(assert-false  (tn) (char-ci=? #\b #\9))
+(assert-false  (tn) (char-ci=? #\b #\A))
+(assert-true   (tn) (char-ci=? #\b #\B))
+(assert-false  (tn) (char-ci=? #\b #\Z))
+(assert-false  (tn) (char-ci=? #\b #\_))
+(assert-false  (tn) (char-ci=? #\b #\a))
+(assert-true   (tn) (char-ci=? #\b #\b))
+(assert-false  (tn) (char-ci=? #\b #\z))
+(assert-false  (tn) (char-ci=? #\b #\~))
+(assert-false  (tn) (char-ci=? #\b #\x7f))
+(tn "char-ci=? #\\z")
+(assert-false  (tn) (char-ci=? #\z #\x00))
+(assert-false  (tn) (char-ci=? #\z #\newline))
+(assert-false  (tn) (char-ci=? #\z #\space))
+(assert-false  (tn) (char-ci=? #\z #\!))
+(assert-false  (tn) (char-ci=? #\z #\0))
+(assert-false  (tn) (char-ci=? #\z #\9))
+(assert-false  (tn) (char-ci=? #\z #\A))
+(assert-false  (tn) (char-ci=? #\z #\B))
+(assert-true   (tn) (char-ci=? #\z #\Z))
+(assert-false  (tn) (char-ci=? #\z #\_))
+(assert-false  (tn) (char-ci=? #\z #\a))
+(assert-false  (tn) (char-ci=? #\z #\b))
+(assert-true   (tn) (char-ci=? #\z #\z))
+(assert-false  (tn) (char-ci=? #\z #\~))
+(assert-false  (tn) (char-ci=? #\z #\x7f))
+(tn "char-ci=? #\\~")
+(assert-false  (tn) (char-ci=? #\~ #\x00))
+(assert-false  (tn) (char-ci=? #\~ #\newline))
+(assert-false  (tn) (char-ci=? #\~ #\space))
+(assert-false  (tn) (char-ci=? #\~ #\!))
+(assert-false  (tn) (char-ci=? #\~ #\0))
+(assert-false  (tn) (char-ci=? #\~ #\9))
+(assert-false  (tn) (char-ci=? #\~ #\A))
+(assert-false  (tn) (char-ci=? #\~ #\B))
+(assert-false  (tn) (char-ci=? #\~ #\Z))
+(assert-false  (tn) (char-ci=? #\~ #\_))
+(assert-false  (tn) (char-ci=? #\~ #\a))
+(assert-false  (tn) (char-ci=? #\~ #\b))
+(assert-false  (tn) (char-ci=? #\~ #\z))
+(assert-true   (tn) (char-ci=? #\~ #\~))
+(assert-false  (tn) (char-ci=? #\~ #\x7f))
+(tn "char-ci=? #\\x7f")
+(assert-false  (tn) (char-ci=? #\x7f #\x00))
+(assert-false  (tn) (char-ci=? #\x7f #\newline))
+(assert-false  (tn) (char-ci=? #\x7f #\space))
+(assert-false  (tn) (char-ci=? #\x7f #\!))
+(assert-false  (tn) (char-ci=? #\x7f #\0))
+(assert-false  (tn) (char-ci=? #\x7f #\9))
+(assert-false  (tn) (char-ci=? #\x7f #\A))
+(assert-false  (tn) (char-ci=? #\x7f #\B))
+(assert-false  (tn) (char-ci=? #\x7f #\Z))
+(assert-false  (tn) (char-ci=? #\x7f #\_))
+(assert-false  (tn) (char-ci=? #\x7f #\a))
+(assert-false  (tn) (char-ci=? #\x7f #\b))
+(assert-false  (tn) (char-ci=? #\x7f #\z))
+(assert-false  (tn) (char-ci=? #\x7f #\~))
+(assert-true   (tn) (char-ci=? #\x7f #\x7f))
+
+;; char-ci<?
+(tn "char-ci<? #\\x00")
+(assert-false  (tn) (char-ci<? #\x00 #\x00))
+(assert-true   (tn) (char-ci<? #\x00 #\newline))
+(assert-true   (tn) (char-ci<? #\x00 #\space))
+(assert-true   (tn) (char-ci<? #\x00 #\!))
+(assert-true   (tn) (char-ci<? #\x00 #\0))
+(assert-true   (tn) (char-ci<? #\x00 #\9))
+(assert-true   (tn) (char-ci<? #\x00 #\A))
+(assert-true   (tn) (char-ci<? #\x00 #\B))
+(assert-true   (tn) (char-ci<? #\x00 #\Z))
+(assert-true   (tn) (char-ci<? #\x00 #\_))
+(assert-true   (tn) (char-ci<? #\x00 #\a))
+(assert-true   (tn) (char-ci<? #\x00 #\b))
+(assert-true   (tn) (char-ci<? #\x00 #\z))
+(assert-true   (tn) (char-ci<? #\x00 #\~))
+(assert-true   (tn) (char-ci<? #\x00 #\x7f))
+(tn "char-ci<? #\\newline")
+(assert-false  (tn) (char-ci<? #\newline #\x00))
+(assert-false  (tn) (char-ci<? #\newline #\newline))
+(assert-true   (tn) (char-ci<? #\newline #\space))
+(assert-true   (tn) (char-ci<? #\newline #\!))
+(assert-true   (tn) (char-ci<? #\newline #\0))
+(assert-true   (tn) (char-ci<? #\newline #\9))
+(assert-true   (tn) (char-ci<? #\newline #\A))
+(assert-true   (tn) (char-ci<? #\newline #\B))
+(assert-true   (tn) (char-ci<? #\newline #\Z))
+(assert-true   (tn) (char-ci<? #\newline #\_))
+(assert-true   (tn) (char-ci<? #\newline #\a))
+(assert-true   (tn) (char-ci<? #\newline #\b))
+(assert-true   (tn) (char-ci<? #\newline #\z))
+(assert-true   (tn) (char-ci<? #\newline #\~))
+(assert-true   (tn) (char-ci<? #\newline #\x7f))
+(tn "char-ci<? #\\space")
+(assert-false  (tn) (char-ci<? #\space #\x00))
+(assert-false  (tn) (char-ci<? #\space #\newline))
+(assert-false  (tn) (char-ci<? #\space #\space))
+(assert-true   (tn) (char-ci<? #\space #\!))
+(assert-true   (tn) (char-ci<? #\space #\0))
+(assert-true   (tn) (char-ci<? #\space #\9))
+(assert-true   (tn) (char-ci<? #\space #\A))
+(assert-true   (tn) (char-ci<? #\space #\B))
+(assert-true   (tn) (char-ci<? #\space #\Z))
+(assert-true   (tn) (char-ci<? #\space #\_))
+(assert-true   (tn) (char-ci<? #\space #\a))
+(assert-true   (tn) (char-ci<? #\space #\b))
+(assert-true   (tn) (char-ci<? #\space #\z))
+(assert-true   (tn) (char-ci<? #\space #\~))
+(assert-true   (tn) (char-ci<? #\space #\x7f))
+(tn "char-ci<? #\\!")
+(assert-false  (tn) (char-ci<? #\! #\x00))
+(assert-false  (tn) (char-ci<? #\! #\newline))
+(assert-false  (tn) (char-ci<? #\! #\space))
+(assert-false  (tn) (char-ci<? #\! #\!))
+(assert-true   (tn) (char-ci<? #\! #\0))
+(assert-true   (tn) (char-ci<? #\! #\9))
+(assert-true   (tn) (char-ci<? #\! #\A))
+(assert-true   (tn) (char-ci<? #\! #\B))
+(assert-true   (tn) (char-ci<? #\! #\Z))
+(assert-true   (tn) (char-ci<? #\! #\_))
+(assert-true   (tn) (char-ci<? #\! #\a))
+(assert-true   (tn) (char-ci<? #\! #\b))
+(assert-true   (tn) (char-ci<? #\! #\z))
+(assert-true   (tn) (char-ci<? #\! #\~))
+(assert-true   (tn) (char-ci<? #\! #\x7f))
+(tn "char-ci<? #\\0")
+(assert-false  (tn) (char-ci<? #\0 #\x00))
+(assert-false  (tn) (char-ci<? #\0 #\newline))
+(assert-false  (tn) (char-ci<? #\0 #\space))
+(assert-false  (tn) (char-ci<? #\0 #\!))
+(assert-false  (tn) (char-ci<? #\0 #\0))
+(assert-true   (tn) (char-ci<? #\0 #\9))
+(assert-true   (tn) (char-ci<? #\0 #\A))
+(assert-true   (tn) (char-ci<? #\0 #\B))
+(assert-true   (tn) (char-ci<? #\0 #\Z))
+(assert-true   (tn) (char-ci<? #\0 #\_))
+(assert-true   (tn) (char-ci<? #\0 #\a))
+(assert-true   (tn) (char-ci<? #\0 #\b))
+(assert-true   (tn) (char-ci<? #\0 #\z))
+(assert-true   (tn) (char-ci<? #\0 #\~))
+(assert-true   (tn) (char-ci<? #\0 #\x7f))
+(tn "char-ci<? #\\9")
+(assert-false  (tn) (char-ci<? #\9 #\x00))
+(assert-false  (tn) (char-ci<? #\9 #\newline))
+(assert-false  (tn) (char-ci<? #\9 #\space))
+(assert-false  (tn) (char-ci<? #\9 #\!))
+(assert-false  (tn) (char-ci<? #\9 #\0))
+(assert-false  (tn) (char-ci<? #\9 #\9))
+(assert-true   (tn) (char-ci<? #\9 #\A))
+(assert-true   (tn) (char-ci<? #\9 #\B))
+(assert-true   (tn) (char-ci<? #\9 #\Z))
+(assert-true   (tn) (char-ci<? #\9 #\_))
+(assert-true   (tn) (char-ci<? #\9 #\a))
+(assert-true   (tn) (char-ci<? #\9 #\b))
+(assert-true   (tn) (char-ci<? #\9 #\z))
+(assert-true   (tn) (char-ci<? #\9 #\~))
+(assert-true   (tn) (char-ci<? #\9 #\x7f))
+(tn "char-ci<? #\\A")
+(assert-false  (tn) (char-ci<? #\A #\x00))
+(assert-false  (tn) (char-ci<? #\A #\newline))
+(assert-false  (tn) (char-ci<? #\A #\space))
+(assert-false  (tn) (char-ci<? #\A #\!))
+(assert-false  (tn) (char-ci<? #\A #\0))
+(assert-false  (tn) (char-ci<? #\A #\9))
+(assert-false  (tn) (char-ci<? #\A #\A))
+(assert-true   (tn) (char-ci<? #\A #\B))
+(assert-true   (tn) (char-ci<? #\A #\Z))
+(assert-false  (tn) (char-ci<? #\A #\_))
+(assert-false  (tn) (char-ci<? #\A #\a))
+(assert-true   (tn) (char-ci<? #\A #\b))
+(assert-true   (tn) (char-ci<? #\A #\z))
+(assert-true   (tn) (char-ci<? #\A #\~))
+(assert-true   (tn) (char-ci<? #\A #\x7f))
+(tn "char-ci<? #\\B")
+(assert-false  (tn) (char-ci<? #\B #\x00))
+(assert-false  (tn) (char-ci<? #\B #\newline))
+(assert-false  (tn) (char-ci<? #\B #\space))
+(assert-false  (tn) (char-ci<? #\B #\!))
+(assert-false  (tn) (char-ci<? #\B #\0))
+(assert-false  (tn) (char-ci<? #\B #\9))
+(assert-false  (tn) (char-ci<? #\B #\A))
+(assert-false  (tn) (char-ci<? #\B #\B))
+(assert-true   (tn) (char-ci<? #\B #\Z))
+(assert-false  (tn) (char-ci<? #\B #\_))
+(assert-false  (tn) (char-ci<? #\B #\a))
+(assert-false  (tn) (char-ci<? #\B #\b))
+(assert-true   (tn) (char-ci<? #\B #\z))
+(assert-true   (tn) (char-ci<? #\B #\~))
+(assert-true   (tn) (char-ci<? #\B #\x7f))
+(tn "char-ci<? #\\Z")
+(assert-false  (tn) (char-ci<? #\Z #\x00))
+(assert-false  (tn) (char-ci<? #\Z #\newline))
+(assert-false  (tn) (char-ci<? #\Z #\space))
+(assert-false  (tn) (char-ci<? #\Z #\!))
+(assert-false  (tn) (char-ci<? #\Z #\0))
+(assert-false  (tn) (char-ci<? #\Z #\9))
+(assert-false  (tn) (char-ci<? #\Z #\A))
+(assert-false  (tn) (char-ci<? #\Z #\B))
+(assert-false  (tn) (char-ci<? #\Z #\Z))
+(assert-false  (tn) (char-ci<? #\Z #\_))
+(assert-false  (tn) (char-ci<? #\Z #\a))
+(assert-false  (tn) (char-ci<? #\Z #\b))
+(assert-false  (tn) (char-ci<? #\Z #\z))
+(assert-true   (tn) (char-ci<? #\Z #\~))
+(assert-true   (tn) (char-ci<? #\Z #\x7f))
+(tn "char-ci<? #\\_")
+(assert-false  (tn) (char-ci<? #\_ #\x00))
+(assert-false  (tn) (char-ci<? #\_ #\newline))
+(assert-false  (tn) (char-ci<? #\_ #\space))
+(assert-false  (tn) (char-ci<? #\_ #\!))
+(assert-false  (tn) (char-ci<? #\_ #\0))
+(assert-false  (tn) (char-ci<? #\_ #\9))
+(assert-true   (tn) (char-ci<? #\_ #\A))
+(assert-true   (tn) (char-ci<? #\_ #\B))
+(assert-true   (tn) (char-ci<? #\_ #\Z))
+(assert-false  (tn) (char-ci<? #\_ #\_))
+(assert-true   (tn) (char-ci<? #\_ #\a))
+(assert-true   (tn) (char-ci<? #\_ #\b))
+(assert-true   (tn) (char-ci<? #\_ #\z))
+(assert-true   (tn) (char-ci<? #\_ #\~))
+(assert-true   (tn) (char-ci<? #\_ #\x7f))
+(tn "char-ci<? #\\a")
+(assert-false  (tn) (char-ci<? #\a #\x00))
+(assert-false  (tn) (char-ci<? #\a #\newline))
+(assert-false  (tn) (char-ci<? #\a #\space))
+(assert-false  (tn) (char-ci<? #\a #\!))
+(assert-false  (tn) (char-ci<? #\a #\0))
+(assert-false  (tn) (char-ci<? #\a #\9))
+(assert-false  (tn) (char-ci<? #\a #\A))
+(assert-true   (tn) (char-ci<? #\a #\B))
+(assert-true   (tn) (char-ci<? #\a #\Z))
+(assert-false  (tn) (char-ci<? #\a #\_))
+(assert-false  (tn) (char-ci<? #\a #\a))
+(assert-true   (tn) (char-ci<? #\a #\b))
+(assert-true   (tn) (char-ci<? #\a #\z))
+(assert-true   (tn) (char-ci<? #\a #\~))
+(assert-true   (tn) (char-ci<? #\a #\x7f))
+(tn "char-ci<? #\\b")
+(assert-false  (tn) (char-ci<? #\b #\x00))
+(assert-false  (tn) (char-ci<? #\b #\newline))
+(assert-false  (tn) (char-ci<? #\b #\space))
+(assert-false  (tn) (char-ci<? #\b #\!))
+(assert-false  (tn) (char-ci<? #\b #\0))
+(assert-false  (tn) (char-ci<? #\b #\9))
+(assert-false  (tn) (char-ci<? #\b #\A))
+(assert-false  (tn) (char-ci<? #\b #\B))
+(assert-true   (tn) (char-ci<? #\b #\Z))
+(assert-false  (tn) (char-ci<? #\b #\_))
+(assert-false  (tn) (char-ci<? #\b #\a))
+(assert-false  (tn) (char-ci<? #\b #\b))
+(assert-true   (tn) (char-ci<? #\b #\z))
+(assert-true   (tn) (char-ci<? #\b #\~))
+(assert-true   (tn) (char-ci<? #\b #\x7f))
+(tn "char-ci<? #\\z")
+(assert-false  (tn) (char-ci<? #\z #\x00))
+(assert-false  (tn) (char-ci<? #\z #\newline))
+(assert-false  (tn) (char-ci<? #\z #\space))
+(assert-false  (tn) (char-ci<? #\z #\!))
+(assert-false  (tn) (char-ci<? #\z #\0))
+(assert-false  (tn) (char-ci<? #\z #\9))
+(assert-false  (tn) (char-ci<? #\z #\A))
+(assert-false  (tn) (char-ci<? #\z #\B))
+(assert-false  (tn) (char-ci<? #\z #\Z))
+(assert-false  (tn) (char-ci<? #\z #\_))
+(assert-false  (tn) (char-ci<? #\z #\a))
+(assert-false  (tn) (char-ci<? #\z #\b))
+(assert-false  (tn) (char-ci<? #\z #\z))
+(assert-true   (tn) (char-ci<? #\z #\~))
+(assert-true   (tn) (char-ci<? #\z #\x7f))
+(tn "char-ci<? #\\~")
+(assert-false  (tn) (char-ci<? #\~ #\x00))
+(assert-false  (tn) (char-ci<? #\~ #\newline))
+(assert-false  (tn) (char-ci<? #\~ #\space))
+(assert-false  (tn) (char-ci<? #\~ #\!))
+(assert-false  (tn) (char-ci<? #\~ #\0))
+(assert-false  (tn) (char-ci<? #\~ #\9))
+(assert-false  (tn) (char-ci<? #\~ #\A))
+(assert-false  (tn) (char-ci<? #\~ #\B))
+(assert-false  (tn) (char-ci<? #\~ #\Z))
+(assert-false  (tn) (char-ci<? #\~ #\_))
+(assert-false  (tn) (char-ci<? #\~ #\a))
+(assert-false  (tn) (char-ci<? #\~ #\b))
+(assert-false  (tn) (char-ci<? #\~ #\z))
+(assert-false  (tn) (char-ci<? #\~ #\~))
+(assert-true   (tn) (char-ci<? #\~ #\x7f))
+(tn "char-ci<? #\\x7f")
+(assert-false  (tn) (char-ci<? #\x7f #\x00))
+(assert-false  (tn) (char-ci<? #\x7f #\newline))
+(assert-false  (tn) (char-ci<? #\x7f #\space))
+(assert-false  (tn) (char-ci<? #\x7f #\!))
+(assert-false  (tn) (char-ci<? #\x7f #\0))
+(assert-false  (tn) (char-ci<? #\x7f #\9))
+(assert-false  (tn) (char-ci<? #\x7f #\A))
+(assert-false  (tn) (char-ci<? #\x7f #\B))
+(assert-false  (tn) (char-ci<? #\x7f #\Z))
+(assert-false  (tn) (char-ci<? #\x7f #\_))
+(assert-false  (tn) (char-ci<? #\x7f #\a))
+(assert-false  (tn) (char-ci<? #\x7f #\b))
+(assert-false  (tn) (char-ci<? #\x7f #\z))
+(assert-false  (tn) (char-ci<? #\x7f #\~))
+(assert-false  (tn) (char-ci<? #\x7f #\x7f))
+
+;; char-ci>?
+(tn "char-ci>? #\\x00")
+(assert-false  (tn) (char-ci>? #\x00 #\x00))
+(assert-false  (tn) (char-ci>? #\x00 #\newline))
+(assert-false  (tn) (char-ci>? #\x00 #\space))
+(assert-false  (tn) (char-ci>? #\x00 #\!))
+(assert-false  (tn) (char-ci>? #\x00 #\0))
+(assert-false  (tn) (char-ci>? #\x00 #\9))
+(assert-false  (tn) (char-ci>? #\x00 #\A))
+(assert-false  (tn) (char-ci>? #\x00 #\B))
+(assert-false  (tn) (char-ci>? #\x00 #\Z))
+(assert-false  (tn) (char-ci>? #\x00 #\_))
+(assert-false  (tn) (char-ci>? #\x00 #\a))
+(assert-false  (tn) (char-ci>? #\x00 #\b))
+(assert-false  (tn) (char-ci>? #\x00 #\z))
+(assert-false  (tn) (char-ci>? #\x00 #\~))
+(assert-false  (tn) (char-ci>? #\x00 #\x7f))
+(tn "char-ci>? #\\newline")
+(assert-true   (tn) (char-ci>? #\newline #\x00))
+(assert-false  (tn) (char-ci>? #\newline #\newline))
+(assert-false  (tn) (char-ci>? #\newline #\space))
+(assert-false  (tn) (char-ci>? #\newline #\!))
+(assert-false  (tn) (char-ci>? #\newline #\0))
+(assert-false  (tn) (char-ci>? #\newline #\9))
+(assert-false  (tn) (char-ci>? #\newline #\A))
+(assert-false  (tn) (char-ci>? #\newline #\B))
+(assert-false  (tn) (char-ci>? #\newline #\Z))
+(assert-false  (tn) (char-ci>? #\newline #\_))
+(assert-false  (tn) (char-ci>? #\newline #\a))
+(assert-false  (tn) (char-ci>? #\newline #\b))
+(assert-false  (tn) (char-ci>? #\newline #\z))
+(assert-false  (tn) (char-ci>? #\newline #\~))
+(assert-false  (tn) (char-ci>? #\newline #\x7f))
+(tn "char-ci>? #\\space")
+(assert-true   (tn) (char-ci>? #\space #\x00))
+(assert-true   (tn) (char-ci>? #\space #\newline))
+(assert-false  (tn) (char-ci>? #\space #\space))
+(assert-false  (tn) (char-ci>? #\space #\!))
+(assert-false  (tn) (char-ci>? #\space #\0))
+(assert-false  (tn) (char-ci>? #\space #\9))
+(assert-false  (tn) (char-ci>? #\space #\A))
+(assert-false  (tn) (char-ci>? #\space #\B))
+(assert-false  (tn) (char-ci>? #\space #\Z))
+(assert-false  (tn) (char-ci>? #\space #\_))
+(assert-false  (tn) (char-ci>? #\space #\a))
+(assert-false  (tn) (char-ci>? #\space #\b))
+(assert-false  (tn) (char-ci>? #\space #\z))
+(assert-false  (tn) (char-ci>? #\space #\~))
+(assert-false  (tn) (char-ci>? #\space #\x7f))
+(tn "char-ci>? #\\!")
+(assert-true   (tn) (char-ci>? #\! #\x00))
+(assert-true   (tn) (char-ci>? #\! #\newline))
+(assert-true   (tn) (char-ci>? #\! #\space))
+(assert-false  (tn) (char-ci>? #\! #\!))
+(assert-false  (tn) (char-ci>? #\! #\0))
+(assert-false  (tn) (char-ci>? #\! #\9))
+(assert-false  (tn) (char-ci>? #\! #\A))
+(assert-false  (tn) (char-ci>? #\! #\B))
+(assert-false  (tn) (char-ci>? #\! #\Z))
+(assert-false  (tn) (char-ci>? #\! #\_))
+(assert-false  (tn) (char-ci>? #\! #\a))
+(assert-false  (tn) (char-ci>? #\! #\b))
+(assert-false  (tn) (char-ci>? #\! #\z))
+(assert-false  (tn) (char-ci>? #\! #\~))
+(assert-false  (tn) (char-ci>? #\! #\x7f))
+(tn "char-ci>? #\\0")
+(assert-true   (tn) (char-ci>? #\0 #\x00))
+(assert-true   (tn) (char-ci>? #\0 #\newline))
+(assert-true   (tn) (char-ci>? #\0 #\space))
+(assert-true   (tn) (char-ci>? #\0 #\!))
+(assert-false  (tn) (char-ci>? #\0 #\0))
+(assert-false  (tn) (char-ci>? #\0 #\9))
+(assert-false  (tn) (char-ci>? #\0 #\A))
+(assert-false  (tn) (char-ci>? #\0 #\B))
+(assert-false  (tn) (char-ci>? #\0 #\Z))
+(assert-false  (tn) (char-ci>? #\0 #\_))
+(assert-false  (tn) (char-ci>? #\0 #\a))
+(assert-false  (tn) (char-ci>? #\0 #\b))
+(assert-false  (tn) (char-ci>? #\0 #\z))
+(assert-false  (tn) (char-ci>? #\0 #\~))
+(assert-false  (tn) (char-ci>? #\0 #\x7f))
+(tn "char-ci>? #\\9")
+(assert-true   (tn) (char-ci>? #\9 #\x00))
+(assert-true   (tn) (char-ci>? #\9 #\newline))
+(assert-true   (tn) (char-ci>? #\9 #\space))
+(assert-true   (tn) (char-ci>? #\9 #\!))
+(assert-true   (tn) (char-ci>? #\9 #\0))
+(assert-false  (tn) (char-ci>? #\9 #\9))
+(assert-false  (tn) (char-ci>? #\9 #\A))
+(assert-false  (tn) (char-ci>? #\9 #\B))
+(assert-false  (tn) (char-ci>? #\9 #\Z))
+(assert-false  (tn) (char-ci>? #\9 #\_))
+(assert-false  (tn) (char-ci>? #\9 #\a))
+(assert-false  (tn) (char-ci>? #\9 #\b))
+(assert-false  (tn) (char-ci>? #\9 #\z))
+(assert-false  (tn) (char-ci>? #\9 #\~))
+(assert-false  (tn) (char-ci>? #\9 #\x7f))
+(tn "char-ci>? #\\A")
+(assert-true   (tn) (char-ci>? #\A #\x00))
+(assert-true   (tn) (char-ci>? #\A #\newline))
+(assert-true   (tn) (char-ci>? #\A #\space))
+(assert-true   (tn) (char-ci>? #\A #\!))
+(assert-true   (tn) (char-ci>? #\A #\0))
+(assert-true   (tn) (char-ci>? #\A #\9))
+(assert-false  (tn) (char-ci>? #\A #\A))
+(assert-false  (tn) (char-ci>? #\A #\B))
+(assert-false  (tn) (char-ci>? #\A #\Z))
+(assert-true   (tn) (char-ci>? #\A #\_))
+(assert-false  (tn) (char-ci>? #\A #\a))
+(assert-false  (tn) (char-ci>? #\A #\b))
+(assert-false  (tn) (char-ci>? #\A #\z))
+(assert-false  (tn) (char-ci>? #\A #\~))
+(assert-false  (tn) (char-ci>? #\A #\x7f))
+(tn "char-ci>? #\\B")
+(assert-true   (tn) (char-ci>? #\B #\x00))
+(assert-true   (tn) (char-ci>? #\B #\newline))
+(assert-true   (tn) (char-ci>? #\B #\space))
+(assert-true   (tn) (char-ci>? #\B #\!))
+(assert-true   (tn) (char-ci>? #\B #\0))
+(assert-true   (tn) (char-ci>? #\B #\9))
+(assert-true   (tn) (char-ci>? #\B #\A))
+(assert-false  (tn) (char-ci>? #\B #\B))
+(assert-false  (tn) (char-ci>? #\B #\Z))
+(assert-true   (tn) (char-ci>? #\B #\_))
+(assert-true   (tn) (char-ci>? #\B #\a))
+(assert-false  (tn) (char-ci>? #\B #\b))
+(assert-false  (tn) (char-ci>? #\B #\z))
+(assert-false  (tn) (char-ci>? #\B #\~))
+(assert-false  (tn) (char-ci>? #\B #\x7f))
+(tn "char-ci>? #\\Z")
+(assert-true   (tn) (char-ci>? #\Z #\x00))
+(assert-true   (tn) (char-ci>? #\Z #\newline))
+(assert-true   (tn) (char-ci>? #\Z #\space))
+(assert-true   (tn) (char-ci>? #\Z #\!))
+(assert-true   (tn) (char-ci>? #\Z #\0))
+(assert-true   (tn) (char-ci>? #\Z #\9))
+(assert-true   (tn) (char-ci>? #\Z #\A))
+(assert-true   (tn) (char-ci>? #\Z #\B))
+(assert-false  (tn) (char-ci>? #\Z #\Z))
+(assert-true   (tn) (char-ci>? #\Z #\_))
+(assert-true   (tn) (char-ci>? #\Z #\a))
+(assert-true   (tn) (char-ci>? #\Z #\b))
+(assert-false  (tn) (char-ci>? #\Z #\z))
+(assert-false  (tn) (char-ci>? #\Z #\~))
+(assert-false  (tn) (char-ci>? #\Z #\x7f))
+(tn "char-ci>? #\\_")
+(assert-true   (tn) (char-ci>? #\_ #\x00))
+(assert-true   (tn) (char-ci>? #\_ #\newline))
+(assert-true   (tn) (char-ci>? #\_ #\space))
+(assert-true   (tn) (char-ci>? #\_ #\!))
+(assert-true   (tn) (char-ci>? #\_ #\0))
+(assert-true   (tn) (char-ci>? #\_ #\9))
+(assert-false  (tn) (char-ci>? #\_ #\A))
+(assert-false  (tn) (char-ci>? #\_ #\B))
+(assert-false  (tn) (char-ci>? #\_ #\Z))
+(assert-false  (tn) (char-ci>? #\_ #\_))
+(assert-false  (tn) (char-ci>? #\_ #\a))
+(assert-false  (tn) (char-ci>? #\_ #\b))
+(assert-false  (tn) (char-ci>? #\_ #\z))
+(assert-false  (tn) (char-ci>? #\_ #\~))
+(assert-false  (tn) (char-ci>? #\_ #\x7f))
+(tn "char-ci>? #\\a")
+(assert-true   (tn) (char-ci>? #\a #\x00))
+(assert-true   (tn) (char-ci>? #\a #\newline))
+(assert-true   (tn) (char-ci>? #\a #\space))
+(assert-true   (tn) (char-ci>? #\a #\!))
+(assert-true   (tn) (char-ci>? #\a #\0))
+(assert-true   (tn) (char-ci>? #\a #\9))
+(assert-false  (tn) (char-ci>? #\a #\A))
+(assert-false  (tn) (char-ci>? #\a #\B))
+(assert-false  (tn) (char-ci>? #\a #\Z))
+(assert-true   (tn) (char-ci>? #\a #\_))
+(assert-false  (tn) (char-ci>? #\a #\a))
+(assert-false  (tn) (char-ci>? #\a #\b))
+(assert-false  (tn) (char-ci>? #\a #\z))
+(assert-false  (tn) (char-ci>? #\a #\~))
+(assert-false  (tn) (char-ci>? #\a #\x7f))
+(tn "char-ci>? #\\b")
+(assert-true   (tn) (char-ci>? #\b #\x00))
+(assert-true   (tn) (char-ci>? #\b #\newline))
+(assert-true   (tn) (char-ci>? #\b #\space))
+(assert-true   (tn) (char-ci>? #\b #\!))
+(assert-true   (tn) (char-ci>? #\b #\0))
+(assert-true   (tn) (char-ci>? #\b #\9))
+(assert-true   (tn) (char-ci>? #\b #\A))
+(assert-false  (tn) (char-ci>? #\b #\B))
+(assert-false  (tn) (char-ci>? #\b #\Z))
+(assert-true   (tn) (char-ci>? #\b #\_))
+(assert-true   (tn) (char-ci>? #\b #\a))
+(assert-false  (tn) (char-ci>? #\b #\b))
+(assert-false  (tn) (char-ci>? #\b #\z))
+(assert-false  (tn) (char-ci>? #\b #\~))
+(assert-false  (tn) (char-ci>? #\b #\x7f))
+(tn "char-ci>? #\\z")
+(assert-true   (tn) (char-ci>? #\z #\x00))
+(assert-true   (tn) (char-ci>? #\z #\newline))
+(assert-true   (tn) (char-ci>? #\z #\space))
+(assert-true   (tn) (char-ci>? #\z #\!))
+(assert-true   (tn) (char-ci>? #\z #\0))
+(assert-true   (tn) (char-ci>? #\z #\9))
+(assert-true   (tn) (char-ci>? #\z #\A))
+(assert-true   (tn) (char-ci>? #\z #\B))
+(assert-false  (tn) (char-ci>? #\z #\Z))
+(assert-true   (tn) (char-ci>? #\z #\_))
+(assert-true   (tn) (char-ci>? #\z #\a))
+(assert-true   (tn) (char-ci>? #\z #\b))
+(assert-false  (tn) (char-ci>? #\z #\z))
+(assert-false  (tn) (char-ci>? #\z #\~))
+(assert-false  (tn) (char-ci>? #\z #\x7f))
+(tn "char-ci>? #\\~")
+(assert-true   (tn) (char-ci>? #\~ #\x00))
+(assert-true   (tn) (char-ci>? #\~ #\newline))
+(assert-true   (tn) (char-ci>? #\~ #\space))
+(assert-true   (tn) (char-ci>? #\~ #\!))
+(assert-true   (tn) (char-ci>? #\~ #\0))
+(assert-true   (tn) (char-ci>? #\~ #\9))
+(assert-true   (tn) (char-ci>? #\~ #\A))
+(assert-true   (tn) (char-ci>? #\~ #\B))
+(assert-true   (tn) (char-ci>? #\~ #\Z))
+(assert-true   (tn) (char-ci>? #\~ #\_))
+(assert-true   (tn) (char-ci>? #\~ #\a))
+(assert-true   (tn) (char-ci>? #\~ #\b))
+(assert-true   (tn) (char-ci>? #\~ #\z))
+(assert-false  (tn) (char-ci>? #\~ #\~))
+(assert-false  (tn) (char-ci>? #\~ #\x7f))
+(tn "char-ci>? #\\x7f")
+(assert-true   (tn) (char-ci>? #\x7f #\x00))
+(assert-true   (tn) (char-ci>? #\x7f #\newline))
+(assert-true   (tn) (char-ci>? #\x7f #\space))
+(assert-true   (tn) (char-ci>? #\x7f #\!))
+(assert-true   (tn) (char-ci>? #\x7f #\0))
+(assert-true   (tn) (char-ci>? #\x7f #\9))
+(assert-true   (tn) (char-ci>? #\x7f #\A))
+(assert-true   (tn) (char-ci>? #\x7f #\B))
+(assert-true   (tn) (char-ci>? #\x7f #\Z))
+(assert-true   (tn) (char-ci>? #\x7f #\_))
+(assert-true   (tn) (char-ci>? #\x7f #\a))
+(assert-true   (tn) (char-ci>? #\x7f #\b))
+(assert-true   (tn) (char-ci>? #\x7f #\z))
+(assert-true   (tn) (char-ci>? #\x7f #\~))
+(assert-false  (tn) (char-ci>? #\x7f #\x7f))
+
+;; char-ci<=?
+(tn "char-ci<=? #\\x00")
+(assert-true   (tn) (char-ci<=? #\x00 #\x00))
+(assert-true   (tn) (char-ci<=? #\x00 #\newline))
+(assert-true   (tn) (char-ci<=? #\x00 #\space))
+(assert-true   (tn) (char-ci<=? #\x00 #\!))
+(assert-true   (tn) (char-ci<=? #\x00 #\0))
+(assert-true   (tn) (char-ci<=? #\x00 #\9))
+(assert-true   (tn) (char-ci<=? #\x00 #\A))
+(assert-true   (tn) (char-ci<=? #\x00 #\B))
+(assert-true   (tn) (char-ci<=? #\x00 #\Z))
+(assert-true   (tn) (char-ci<=? #\x00 #\_))
+(assert-true   (tn) (char-ci<=? #\x00 #\a))
+(assert-true   (tn) (char-ci<=? #\x00 #\b))
+(assert-true   (tn) (char-ci<=? #\x00 #\z))
+(assert-true   (tn) (char-ci<=? #\x00 #\~))
+(assert-true   (tn) (char-ci<=? #\x00 #\x7f))
+(tn "char-ci<=? #\\newline")
+(assert-false  (tn) (char-ci<=? #\newline #\x00))
+(assert-true   (tn) (char-ci<=? #\newline #\newline))
+(assert-true   (tn) (char-ci<=? #\newline #\space))
+(assert-true   (tn) (char-ci<=? #\newline #\!))
+(assert-true   (tn) (char-ci<=? #\newline #\0))
+(assert-true   (tn) (char-ci<=? #\newline #\9))
+(assert-true   (tn) (char-ci<=? #\newline #\A))
+(assert-true   (tn) (char-ci<=? #\newline #\B))
+(assert-true   (tn) (char-ci<=? #\newline #\Z))
+(assert-true   (tn) (char-ci<=? #\newline #\_))
+(assert-true   (tn) (char-ci<=? #\newline #\a))
+(assert-true   (tn) (char-ci<=? #\newline #\b))
+(assert-true   (tn) (char-ci<=? #\newline #\z))
+(assert-true   (tn) (char-ci<=? #\newline #\~))
+(assert-true   (tn) (char-ci<=? #\newline #\x7f))
+(tn "char-ci<=? #\\space")
+(assert-false  (tn) (char-ci<=? #\space #\x00))
+(assert-false  (tn) (char-ci<=? #\space #\newline))
+(assert-true   (tn) (char-ci<=? #\space #\space))
+(assert-true   (tn) (char-ci<=? #\space #\!))
+(assert-true   (tn) (char-ci<=? #\space #\0))
+(assert-true   (tn) (char-ci<=? #\space #\9))
+(assert-true   (tn) (char-ci<=? #\space #\A))
+(assert-true   (tn) (char-ci<=? #\space #\B))
+(assert-true   (tn) (char-ci<=? #\space #\Z))
+(assert-true   (tn) (char-ci<=? #\space #\_))
+(assert-true   (tn) (char-ci<=? #\space #\a))
+(assert-true   (tn) (char-ci<=? #\space #\b))
+(assert-true   (tn) (char-ci<=? #\space #\z))
+(assert-true   (tn) (char-ci<=? #\space #\~))
+(assert-true   (tn) (char-ci<=? #\space #\x7f))
+(tn "char-ci<=? #\\!")
+(assert-false  (tn) (char-ci<=? #\! #\x00))
+(assert-false  (tn) (char-ci<=? #\! #\newline))
+(assert-false  (tn) (char-ci<=? #\! #\space))
+(assert-true   (tn) (char-ci<=? #\! #\!))
+(assert-true   (tn) (char-ci<=? #\! #\0))
+(assert-true   (tn) (char-ci<=? #\! #\9))
+(assert-true   (tn) (char-ci<=? #\! #\A))
+(assert-true   (tn) (char-ci<=? #\! #\B))
+(assert-true   (tn) (char-ci<=? #\! #\Z))
+(assert-true   (tn) (char-ci<=? #\! #\_))
+(assert-true   (tn) (char-ci<=? #\! #\a))
+(assert-true   (tn) (char-ci<=? #\! #\b))
+(assert-true   (tn) (char-ci<=? #\! #\z))
+(assert-true   (tn) (char-ci<=? #\! #\~))
+(assert-true   (tn) (char-ci<=? #\! #\x7f))
+(tn "char-ci<=? #\\0")
+(assert-false  (tn) (char-ci<=? #\0 #\x00))
+(assert-false  (tn) (char-ci<=? #\0 #\newline))
+(assert-false  (tn) (char-ci<=? #\0 #\space))
+(assert-false  (tn) (char-ci<=? #\0 #\!))
+(assert-true   (tn) (char-ci<=? #\0 #\0))
+(assert-true   (tn) (char-ci<=? #\0 #\9))
+(assert-true   (tn) (char-ci<=? #\0 #\A))
+(assert-true   (tn) (char-ci<=? #\0 #\B))
+(assert-true   (tn) (char-ci<=? #\0 #\Z))
+(assert-true   (tn) (char-ci<=? #\0 #\_))
+(assert-true   (tn) (char-ci<=? #\0 #\a))
+(assert-true   (tn) (char-ci<=? #\0 #\b))
+(assert-true   (tn) (char-ci<=? #\0 #\z))
+(assert-true   (tn) (char-ci<=? #\0 #\~))
+(assert-true   (tn) (char-ci<=? #\0 #\x7f))
+(tn "char-ci<=? #\\9")
+(assert-false  (tn) (char-ci<=? #\9 #\x00))
+(assert-false  (tn) (char-ci<=? #\9 #\newline))
+(assert-false  (tn) (char-ci<=? #\9 #\space))
+(assert-false  (tn) (char-ci<=? #\9 #\!))
+(assert-false  (tn) (char-ci<=? #\9 #\0))
+(assert-true   (tn) (char-ci<=? #\9 #\9))
+(assert-true   (tn) (char-ci<=? #\9 #\A))
+(assert-true   (tn) (char-ci<=? #\9 #\B))
+(assert-true   (tn) (char-ci<=? #\9 #\Z))
+(assert-true   (tn) (char-ci<=? #\9 #\_))
+(assert-true   (tn) (char-ci<=? #\9 #\a))
+(assert-true   (tn) (char-ci<=? #\9 #\b))
+(assert-true   (tn) (char-ci<=? #\9 #\z))
+(assert-true   (tn) (char-ci<=? #\9 #\~))
+(assert-true   (tn) (char-ci<=? #\9 #\x7f))
+(tn "char-ci<=? #\\A")
+(assert-false  (tn) (char-ci<=? #\A #\x00))
+(assert-false  (tn) (char-ci<=? #\A #\newline))
+(assert-false  (tn) (char-ci<=? #\A #\space))
+(assert-false  (tn) (char-ci<=? #\A #\!))
+(assert-false  (tn) (char-ci<=? #\A #\0))
+(assert-false  (tn) (char-ci<=? #\A #\9))
+(assert-true   (tn) (char-ci<=? #\A #\A))
+(assert-true   (tn) (char-ci<=? #\A #\B))
+(assert-true   (tn) (char-ci<=? #\A #\Z))
+(assert-false  (tn) (char-ci<=? #\A #\_))
+(assert-true   (tn) (char-ci<=? #\A #\a))
+(assert-true   (tn) (char-ci<=? #\A #\b))
+(assert-true   (tn) (char-ci<=? #\A #\z))
+(assert-true   (tn) (char-ci<=? #\A #\~))
+(assert-true   (tn) (char-ci<=? #\A #\x7f))
+(tn "char-ci<=? #\\B")
+(assert-false  (tn) (char-ci<=? #\B #\x00))
+(assert-false  (tn) (char-ci<=? #\B #\newline))
+(assert-false  (tn) (char-ci<=? #\B #\space))
+(assert-false  (tn) (char-ci<=? #\B #\!))
+(assert-false  (tn) (char-ci<=? #\B #\0))
+(assert-false  (tn) (char-ci<=? #\B #\9))
+(assert-false  (tn) (char-ci<=? #\B #\A))
+(assert-true   (tn) (char-ci<=? #\B #\B))
+(assert-true   (tn) (char-ci<=? #\B #\Z))
+(assert-false  (tn) (char-ci<=? #\B #\_))
+(assert-false  (tn) (char-ci<=? #\B #\a))
+(assert-true   (tn) (char-ci<=? #\B #\b))
+(assert-true   (tn) (char-ci<=? #\B #\z))
+(assert-true   (tn) (char-ci<=? #\B #\~))
+(assert-true   (tn) (char-ci<=? #\B #\x7f))
+(tn "char-ci<=? #\\Z")
+(assert-false  (tn) (char-ci<=? #\Z #\x00))
+(assert-false  (tn) (char-ci<=? #\Z #\newline))
+(assert-false  (tn) (char-ci<=? #\Z #\space))
+(assert-false  (tn) (char-ci<=? #\Z #\!))
+(assert-false  (tn) (char-ci<=? #\Z #\0))
+(assert-false  (tn) (char-ci<=? #\Z #\9))
+(assert-false  (tn) (char-ci<=? #\Z #\A))
+(assert-false  (tn) (char-ci<=? #\Z #\B))
+(assert-true   (tn) (char-ci<=? #\Z #\Z))
+(assert-false  (tn) (char-ci<=? #\Z #\_))
+(assert-false  (tn) (char-ci<=? #\Z #\a))
+(assert-false  (tn) (char-ci<=? #\Z #\b))
+(assert-true   (tn) (char-ci<=? #\Z #\z))
+(assert-true   (tn) (char-ci<=? #\Z #\~))
+(assert-true   (tn) (char-ci<=? #\Z #\x7f))
+(tn "char-ci<=? #\\_")
+(assert-false  (tn) (char-ci<=? #\_ #\x00))
+(assert-false  (tn) (char-ci<=? #\_ #\newline))
+(assert-false  (tn) (char-ci<=? #\_ #\space))
+(assert-false  (tn) (char-ci<=? #\_ #\!))
+(assert-false  (tn) (char-ci<=? #\_ #\0))
+(assert-false  (tn) (char-ci<=? #\_ #\9))
+(assert-true   (tn) (char-ci<=? #\_ #\A))
+(assert-true   (tn) (char-ci<=? #\_ #\B))
+(assert-true   (tn) (char-ci<=? #\_ #\Z))
+(assert-true   (tn) (char-ci<=? #\_ #\_))
+(assert-true   (tn) (char-ci<=? #\_ #\a))
+(assert-true   (tn) (char-ci<=? #\_ #\b))
+(assert-true   (tn) (char-ci<=? #\_ #\z))
+(assert-true   (tn) (char-ci<=? #\_ #\~))
+(assert-true   (tn) (char-ci<=? #\_ #\x7f))
+(tn "char-ci<=? #\\a")
+(assert-false  (tn) (char-ci<=? #\a #\x00))
+(assert-false  (tn) (char-ci<=? #\a #\newline))
+(assert-false  (tn) (char-ci<=? #\a #\space))
+(assert-false  (tn) (char-ci<=? #\a #\!))
+(assert-false  (tn) (char-ci<=? #\a #\0))
+(assert-false  (tn) (char-ci<=? #\a #\9))
+(assert-true   (tn) (char-ci<=? #\a #\A))
+(assert-true   (tn) (char-ci<=? #\a #\B))
+(assert-true   (tn) (char-ci<=? #\a #\Z))
+(assert-false  (tn) (char-ci<=? #\a #\_))
+(assert-true   (tn) (char-ci<=? #\a #\a))
+(assert-true   (tn) (char-ci<=? #\a #\b))
+(assert-true   (tn) (char-ci<=? #\a #\z))
+(assert-true   (tn) (char-ci<=? #\a #\~))
+(assert-true   (tn) (char-ci<=? #\a #\x7f))
+(tn "char-ci<=? #\\b")
+(assert-false  (tn) (char-ci<=? #\b #\x00))
+(assert-false  (tn) (char-ci<=? #\b #\newline))
+(assert-false  (tn) (char-ci<=? #\b #\space))
+(assert-false  (tn) (char-ci<=? #\b #\!))
+(assert-false  (tn) (char-ci<=? #\b #\0))
+(assert-false  (tn) (char-ci<=? #\b #\9))
+(assert-false  (tn) (char-ci<=? #\b #\A))
+(assert-true   (tn) (char-ci<=? #\b #\B))
+(assert-true   (tn) (char-ci<=? #\b #\Z))
+(assert-false  (tn) (char-ci<=? #\b #\_))
+(assert-false  (tn) (char-ci<=? #\b #\a))
+(assert-true   (tn) (char-ci<=? #\b #\b))
+(assert-true   (tn) (char-ci<=? #\b #\z))
+(assert-true   (tn) (char-ci<=? #\b #\~))
+(assert-true   (tn) (char-ci<=? #\b #\x7f))
+(tn "char-ci<=? #\\z")
+(assert-false  (tn) (char-ci<=? #\z #\x00))
+(assert-false  (tn) (char-ci<=? #\z #\newline))
+(assert-false  (tn) (char-ci<=? #\z #\space))
+(assert-false  (tn) (char-ci<=? #\z #\!))
+(assert-false  (tn) (char-ci<=? #\z #\0))
+(assert-false  (tn) (char-ci<=? #\z #\9))
+(assert-false  (tn) (char-ci<=? #\z #\A))
+(assert-false  (tn) (char-ci<=? #\z #\B))
+(assert-true   (tn) (char-ci<=? #\z #\Z))
+(assert-false  (tn) (char-ci<=? #\z #\_))
+(assert-false  (tn) (char-ci<=? #\z #\a))
+(assert-false  (tn) (char-ci<=? #\z #\b))
+(assert-true   (tn) (char-ci<=? #\z #\z))
+(assert-true   (tn) (char-ci<=? #\z #\~))
+(assert-true   (tn) (char-ci<=? #\z #\x7f))
+(tn "char-ci<=? #\\~")
+(assert-false  (tn) (char-ci<=? #\~ #\x00))
+(assert-false  (tn) (char-ci<=? #\~ #\newline))
+(assert-false  (tn) (char-ci<=? #\~ #\space))
+(assert-false  (tn) (char-ci<=? #\~ #\!))
+(assert-false  (tn) (char-ci<=? #\~ #\0))
+(assert-false  (tn) (char-ci<=? #\~ #\9))
+(assert-false  (tn) (char-ci<=? #\~ #\A))
+(assert-false  (tn) (char-ci<=? #\~ #\B))
+(assert-false  (tn) (char-ci<=? #\~ #\Z))
+(assert-false  (tn) (char-ci<=? #\~ #\_))
+(assert-false  (tn) (char-ci<=? #\~ #\a))
+(assert-false  (tn) (char-ci<=? #\~ #\b))
+(assert-false  (tn) (char-ci<=? #\~ #\z))
+(assert-true   (tn) (char-ci<=? #\~ #\~))
+(assert-true   (tn) (char-ci<=? #\~ #\x7f))
+(tn "char-ci<=? #\\x7f")
+(assert-false  (tn) (char-ci<=? #\x7f #\x00))
+(assert-false  (tn) (char-ci<=? #\x7f #\newline))
+(assert-false  (tn) (char-ci<=? #\x7f #\space))
+(assert-false  (tn) (char-ci<=? #\x7f #\!))
+(assert-false  (tn) (char-ci<=? #\x7f #\0))
+(assert-false  (tn) (char-ci<=? #\x7f #\9))
+(assert-false  (tn) (char-ci<=? #\x7f #\A))
+(assert-false  (tn) (char-ci<=? #\x7f #\B))
+(assert-false  (tn) (char-ci<=? #\x7f #\Z))
+(assert-false  (tn) (char-ci<=? #\x7f #\_))
+(assert-false  (tn) (char-ci<=? #\x7f #\a))
+(assert-false  (tn) (char-ci<=? #\x7f #\b))
+(assert-false  (tn) (char-ci<=? #\x7f #\z))
+(assert-false  (tn) (char-ci<=? #\x7f #\~))
+(assert-true   (tn) (char-ci<=? #\x7f #\x7f))
+
+;; char-ci>=?
+(tn "char-ci>=? #\\x00")
+(assert-true   (tn) (char-ci>=? #\x00 #\x00))
+(assert-false  (tn) (char-ci>=? #\x00 #\newline))
+(assert-false  (tn) (char-ci>=? #\x00 #\space))
+(assert-false  (tn) (char-ci>=? #\x00 #\!))
+(assert-false  (tn) (char-ci>=? #\x00 #\0))
+(assert-false  (tn) (char-ci>=? #\x00 #\9))
+(assert-false  (tn) (char-ci>=? #\x00 #\A))
+(assert-false  (tn) (char-ci>=? #\x00 #\B))
+(assert-false  (tn) (char-ci>=? #\x00 #\Z))
+(assert-false  (tn) (char-ci>=? #\x00 #\_))
+(assert-false  (tn) (char-ci>=? #\x00 #\a))
+(assert-false  (tn) (char-ci>=? #\x00 #\b))
+(assert-false  (tn) (char-ci>=? #\x00 #\z))
+(assert-false  (tn) (char-ci>=? #\x00 #\~))
+(assert-false  (tn) (char-ci>=? #\x00 #\x7f))
+(tn "char-ci>=? #\\newline")
+(assert-true   (tn) (char-ci>=? #\newline #\x00))
+(assert-true   (tn) (char-ci>=? #\newline #\newline))
+(assert-false  (tn) (char-ci>=? #\newline #\space))
+(assert-false  (tn) (char-ci>=? #\newline #\!))
+(assert-false  (tn) (char-ci>=? #\newline #\0))
+(assert-false  (tn) (char-ci>=? #\newline #\9))
+(assert-false  (tn) (char-ci>=? #\newline #\A))
+(assert-false  (tn) (char-ci>=? #\newline #\B))
+(assert-false  (tn) (char-ci>=? #\newline #\Z))
+(assert-false  (tn) (char-ci>=? #\newline #\_))
+(assert-false  (tn) (char-ci>=? #\newline #\a))
+(assert-false  (tn) (char-ci>=? #\newline #\b))
+(assert-false  (tn) (char-ci>=? #\newline #\z))
+(assert-false  (tn) (char-ci>=? #\newline #\~))
+(assert-false  (tn) (char-ci>=? #\newline #\x7f))
+(tn "char-ci>=? #\\space")
+(assert-true   (tn) (char-ci>=? #\space #\x00))
+(assert-true   (tn) (char-ci>=? #\space #\newline))
+(assert-true   (tn) (char-ci>=? #\space #\space))
+(assert-false  (tn) (char-ci>=? #\space #\!))
+(assert-false  (tn) (char-ci>=? #\space #\0))
+(assert-false  (tn) (char-ci>=? #\space #\9))
+(assert-false  (tn) (char-ci>=? #\space #\A))
+(assert-false  (tn) (char-ci>=? #\space #\B))
+(assert-false  (tn) (char-ci>=? #\space #\Z))
+(assert-false  (tn) (char-ci>=? #\space #\_))
+(assert-false  (tn) (char-ci>=? #\space #\a))
+(assert-false  (tn) (char-ci>=? #\space #\b))
+(assert-false  (tn) (char-ci>=? #\space #\z))
+(assert-false  (tn) (char-ci>=? #\space #\~))
+(assert-false  (tn) (char-ci>=? #\space #\x7f))
+(tn "char-ci>=? #\\!")
+(assert-true   (tn) (char-ci>=? #\! #\x00))
+(assert-true   (tn) (char-ci>=? #\! #\newline))
+(assert-true   (tn) (char-ci>=? #\! #\space))
+(assert-true   (tn) (char-ci>=? #\! #\!))
+(assert-false  (tn) (char-ci>=? #\! #\0))
+(assert-false  (tn) (char-ci>=? #\! #\9))
+(assert-false  (tn) (char-ci>=? #\! #\A))
+(assert-false  (tn) (char-ci>=? #\! #\B))
+(assert-false  (tn) (char-ci>=? #\! #\Z))
+(assert-false  (tn) (char-ci>=? #\! #\_))
+(assert-false  (tn) (char-ci>=? #\! #\a))
+(assert-false  (tn) (char-ci>=? #\! #\b))
+(assert-false  (tn) (char-ci>=? #\! #\z))
+(assert-false  (tn) (char-ci>=? #\! #\~))
+(assert-false  (tn) (char-ci>=? #\! #\x7f))
+(tn "char-ci>=? #\\0")
+(assert-true   (tn) (char-ci>=? #\0 #\x00))
+(assert-true   (tn) (char-ci>=? #\0 #\newline))
+(assert-true   (tn) (char-ci>=? #\0 #\space))
+(assert-true   (tn) (char-ci>=? #\0 #\!))
+(assert-true   (tn) (char-ci>=? #\0 #\0))
+(assert-false  (tn) (char-ci>=? #\0 #\9))
+(assert-false  (tn) (char-ci>=? #\0 #\A))
+(assert-false  (tn) (char-ci>=? #\0 #\B))
+(assert-false  (tn) (char-ci>=? #\0 #\Z))
+(assert-false  (tn) (char-ci>=? #\0 #\_))
+(assert-false  (tn) (char-ci>=? #\0 #\a))
+(assert-false  (tn) (char-ci>=? #\0 #\b))
+(assert-false  (tn) (char-ci>=? #\0 #\z))
+(assert-false  (tn) (char-ci>=? #\0 #\~))
+(assert-false  (tn) (char-ci>=? #\0 #\x7f))
+(tn "char-ci>=? #\\9")
+(assert-true   (tn) (char-ci>=? #\9 #\x00))
+(assert-true   (tn) (char-ci>=? #\9 #\newline))
+(assert-true   (tn) (char-ci>=? #\9 #\space))
+(assert-true   (tn) (char-ci>=? #\9 #\!))
+(assert-true   (tn) (char-ci>=? #\9 #\0))
+(assert-true   (tn) (char-ci>=? #\9 #\9))
+(assert-false  (tn) (char-ci>=? #\9 #\A))
+(assert-false  (tn) (char-ci>=? #\9 #\B))
+(assert-false  (tn) (char-ci>=? #\9 #\Z))
+(assert-false  (tn) (char-ci>=? #\9 #\_))
+(assert-false  (tn) (char-ci>=? #\9 #\a))
+(assert-false  (tn) (char-ci>=? #\9 #\b))
+(assert-false  (tn) (char-ci>=? #\9 #\z))
+(assert-false  (tn) (char-ci>=? #\9 #\~))
+(assert-false  (tn) (char-ci>=? #\9 #\x7f))
+(tn "char-ci>=? #\\A")
+(assert-true   (tn) (char-ci>=? #\A #\x00))
+(assert-true   (tn) (char-ci>=? #\A #\newline))
+(assert-true   (tn) (char-ci>=? #\A #\space))
+(assert-true   (tn) (char-ci>=? #\A #\!))
+(assert-true   (tn) (char-ci>=? #\A #\0))
+(assert-true   (tn) (char-ci>=? #\A #\9))
+(assert-true   (tn) (char-ci>=? #\A #\A))
+(assert-false  (tn) (char-ci>=? #\A #\B))
+(assert-false  (tn) (char-ci>=? #\A #\Z))
+(assert-true   (tn) (char-ci>=? #\A #\_))
+(assert-true   (tn) (char-ci>=? #\A #\a))
+(assert-false  (tn) (char-ci>=? #\A #\b))
+(assert-false  (tn) (char-ci>=? #\A #\z))
+(assert-false  (tn) (char-ci>=? #\A #\~))
+(assert-false  (tn) (char-ci>=? #\A #\x7f))
+(tn "char-ci>=? #\\B")
+(assert-true   (tn) (char-ci>=? #\B #\x00))
+(assert-true   (tn) (char-ci>=? #\B #\newline))
+(assert-true   (tn) (char-ci>=? #\B #\space))
+(assert-true   (tn) (char-ci>=? #\B #\!))
+(assert-true   (tn) (char-ci>=? #\B #\0))
+(assert-true   (tn) (char-ci>=? #\B #\9))
+(assert-true   (tn) (char-ci>=? #\B #\A))
+(assert-true   (tn) (char-ci>=? #\B #\B))
+(assert-false  (tn) (char-ci>=? #\B #\Z))
+(assert-true   (tn) (char-ci>=? #\B #\_))
+(assert-true   (tn) (char-ci>=? #\B #\a))
+(assert-true   (tn) (char-ci>=? #\B #\b))
+(assert-false  (tn) (char-ci>=? #\B #\z))
+(assert-false  (tn) (char-ci>=? #\B #\~))
+(assert-false  (tn) (char-ci>=? #\B #\x7f))
+(tn "char-ci>=? #\\Z")
+(assert-true   (tn) (char-ci>=? #\Z #\x00))
+(assert-true   (tn) (char-ci>=? #\Z #\newline))
+(assert-true   (tn) (char-ci>=? #\Z #\space))
+(assert-true   (tn) (char-ci>=? #\Z #\!))
+(assert-true   (tn) (char-ci>=? #\Z #\0))
+(assert-true   (tn) (char-ci>=? #\Z #\9))
+(assert-true   (tn) (char-ci>=? #\Z #\A))
+(assert-true   (tn) (char-ci>=? #\Z #\B))
+(assert-true   (tn) (char-ci>=? #\Z #\Z))
+(assert-true   (tn) (char-ci>=? #\Z #\_))
+(assert-true   (tn) (char-ci>=? #\Z #\a))
+(assert-true   (tn) (char-ci>=? #\Z #\b))
+(assert-true   (tn) (char-ci>=? #\Z #\z))
+(assert-false  (tn) (char-ci>=? #\Z #\~))
+(assert-false  (tn) (char-ci>=? #\Z #\x7f))
+(tn "char-ci>=? #\\_")
+(assert-true   (tn) (char-ci>=? #\_ #\x00))
+(assert-true   (tn) (char-ci>=? #\_ #\newline))
+(assert-true   (tn) (char-ci>=? #\_ #\space))
+(assert-true   (tn) (char-ci>=? #\_ #\!))
+(assert-true   (tn) (char-ci>=? #\_ #\0))
+(assert-true   (tn) (char-ci>=? #\_ #\9))
+(assert-false  (tn) (char-ci>=? #\_ #\A))
+(assert-false  (tn) (char-ci>=? #\_ #\B))
+(assert-false  (tn) (char-ci>=? #\_ #\Z))
+(assert-true   (tn) (char-ci>=? #\_ #\_))
+(assert-false  (tn) (char-ci>=? #\_ #\a))
+(assert-false  (tn) (char-ci>=? #\_ #\b))
+(assert-false  (tn) (char-ci>=? #\_ #\z))
+(assert-false  (tn) (char-ci>=? #\_ #\~))
+(assert-false  (tn) (char-ci>=? #\_ #\x7f))
+(tn "char-ci>=? #\\a")
+(assert-true   (tn) (char-ci>=? #\a #\x00))
+(assert-true   (tn) (char-ci>=? #\a #\newline))
+(assert-true   (tn) (char-ci>=? #\a #\space))
+(assert-true   (tn) (char-ci>=? #\a #\!))
+(assert-true   (tn) (char-ci>=? #\a #\0))
+(assert-true   (tn) (char-ci>=? #\a #\9))
+(assert-true   (tn) (char-ci>=? #\a #\A))
+(assert-false  (tn) (char-ci>=? #\a #\B))
+(assert-false  (tn) (char-ci>=? #\a #\Z))
+(assert-true   (tn) (char-ci>=? #\a #\_))
+(assert-true   (tn) (char-ci>=? #\a #\a))
+(assert-false  (tn) (char-ci>=? #\a #\b))
+(assert-false  (tn) (char-ci>=? #\a #\z))
+(assert-false  (tn) (char-ci>=? #\a #\~))
+(assert-false  (tn) (char-ci>=? #\a #\x7f))
+(tn "char-ci>=? #\\b")
+(assert-true   (tn) (char-ci>=? #\b #\x00))
+(assert-true   (tn) (char-ci>=? #\b #\newline))
+(assert-true   (tn) (char-ci>=? #\b #\space))
+(assert-true   (tn) (char-ci>=? #\b #\!))
+(assert-true   (tn) (char-ci>=? #\b #\0))
+(assert-true   (tn) (char-ci>=? #\b #\9))
+(assert-true   (tn) (char-ci>=? #\b #\A))
+(assert-true   (tn) (char-ci>=? #\b #\B))
+(assert-false  (tn) (char-ci>=? #\b #\Z))
+(assert-true   (tn) (char-ci>=? #\b #\_))
+(assert-true   (tn) (char-ci>=? #\b #\a))
+(assert-true   (tn) (char-ci>=? #\b #\b))
+(assert-false  (tn) (char-ci>=? #\b #\z))
+(assert-false  (tn) (char-ci>=? #\b #\~))
+(assert-false  (tn) (char-ci>=? #\b #\x7f))
+(tn "char-ci>=? #\\z")
+(assert-true   (tn) (char-ci>=? #\z #\x00))
+(assert-true   (tn) (char-ci>=? #\z #\newline))
+(assert-true   (tn) (char-ci>=? #\z #\space))
+(assert-true   (tn) (char-ci>=? #\z #\!))
+(assert-true   (tn) (char-ci>=? #\z #\0))
+(assert-true   (tn) (char-ci>=? #\z #\9))
+(assert-true   (tn) (char-ci>=? #\z #\A))
+(assert-true   (tn) (char-ci>=? #\z #\B))
+(assert-true   (tn) (char-ci>=? #\z #\Z))
+(assert-true   (tn) (char-ci>=? #\z #\_))
+(assert-true   (tn) (char-ci>=? #\z #\a))
+(assert-true   (tn) (char-ci>=? #\z #\b))
+(assert-true   (tn) (char-ci>=? #\z #\z))
+(assert-false  (tn) (char-ci>=? #\z #\~))
+(assert-false  (tn) (char-ci>=? #\z #\x7f))
+(tn "char-ci>=? #\\~")
+(assert-true   (tn) (char-ci>=? #\~ #\x00))
+(assert-true   (tn) (char-ci>=? #\~ #\newline))
+(assert-true   (tn) (char-ci>=? #\~ #\space))
+(assert-true   (tn) (char-ci>=? #\~ #\!))
+(assert-true   (tn) (char-ci>=? #\~ #\0))
+(assert-true   (tn) (char-ci>=? #\~ #\9))
+(assert-true   (tn) (char-ci>=? #\~ #\A))
+(assert-true   (tn) (char-ci>=? #\~ #\B))
+(assert-true   (tn) (char-ci>=? #\~ #\Z))
+(assert-true   (tn) (char-ci>=? #\~ #\_))
+(assert-true   (tn) (char-ci>=? #\~ #\a))
+(assert-true   (tn) (char-ci>=? #\~ #\b))
+(assert-true   (tn) (char-ci>=? #\~ #\z))
+(assert-true   (tn) (char-ci>=? #\~ #\~))
+(assert-false  (tn) (char-ci>=? #\~ #\x7f))
+(tn "char-ci>=? #\\x7f")
+(assert-true   (tn) (char-ci>=? #\x7f #\x00))
+(assert-true   (tn) (char-ci>=? #\x7f #\newline))
+(assert-true   (tn) (char-ci>=? #\x7f #\space))
+(assert-true   (tn) (char-ci>=? #\x7f #\!))
+(assert-true   (tn) (char-ci>=? #\x7f #\0))
+(assert-true   (tn) (char-ci>=? #\x7f #\9))
+(assert-true   (tn) (char-ci>=? #\x7f #\A))
+(assert-true   (tn) (char-ci>=? #\x7f #\B))
+(assert-true   (tn) (char-ci>=? #\x7f #\Z))
+(assert-true   (tn) (char-ci>=? #\x7f #\_))
+(assert-true   (tn) (char-ci>=? #\x7f #\a))
+(assert-true   (tn) (char-ci>=? #\x7f #\b))
+(assert-true   (tn) (char-ci>=? #\x7f #\z))
+(assert-true   (tn) (char-ci>=? #\x7f #\~))
+(assert-true   (tn) (char-ci>=? #\x7f #\x7f))
+
 (total-report)

Modified: branches/r5rs/sigscheme/test/unittest.scm
===================================================================
--- branches/r5rs/sigscheme/test/unittest.scm	2006-01-22 19:56:18 UTC (rev 2978)
+++ branches/r5rs/sigscheme/test/unittest.scm	2006-01-22 22:38:00 UTC (rev 2979)
@@ -69,7 +69,7 @@
 (define report-error
   (lambda (err-msg)
     (begin
-      (display "error: ")
+      (display "failed: ")
       (display err-msg)
       (newline))))
 



More information about the uim-commit mailing list