Author: yamakenz
Date: Wed Jul 11 02:38:10 2007
New Revision: 4699

Modified:
   trunk/doc/COMPATIBILITY
   trunk/scm/anthy-utf8.scm
   trunk/scm/anthy.scm
   trunk/scm/canna.scm
   trunk/scm/mana.scm
   trunk/scm/util.scm
   trunk/test/test-util.scm

Log:
* scm/util.scm
  - (sublist, sublist-rel):
    * The meaning of second arg has been changed to correct one
    * Optimize
* test/test-util.scm
  - Revise tests for sublist and sublist-rel
* scm/anthy.scm
  - (anthy-get-raw-candidate): Follow the specification changes
* scm/anthy-utf8.scm
  - (anthy-utf8-get-raw-candidate): Ditto
* scm/mana.scm
  - (mana-get-raw-candidate): Ditto
* scm/canna.scm
  - (canna-get-raw-candidate): Ditto
* doc/COMPATIBILITY
  - Update "Specification changes of utility procedures"


Modified: trunk/doc/COMPATIBILITY
==============================================================================
--- trunk/doc/COMPATIBILITY     (original)
+++ trunk/doc/COMPATIBILITY     Wed Jul 11 02:38:10 2007
@@ -61,7 +61,7 @@
 Affects: uim developers, IM developers
 Updates: Scheme API
 Version: 1.5.0
-Revision: ac4693, ac4694
+Revision: ac4693, ac4694, ac4698, ac4699
 Date: 2007-07-11
 Modifier: YamaKen
 Related: 
@@ -69,6 +69,8 @@
 Changes:
   (changed) string-split
   (changed) string-join
+  (changed) sublist
+  (changed) sublist-rel
 Description:
   Now string-split produces empty strings as follows. See
   test-uim-utils.scm for further information.
@@ -76,6 +78,13 @@
     uim 1.5: (string-split "hhh" "h")  ==> ("" "" "" "")
   The 2 arguments of string-join has been swapped to be compatible
   with SRFI-13 string-join.
+  The meaning of 'end' arg of sublist and 'len' arg of sublist-rel has
+  been changed to correct one. See test-util.scm for further
+  information.
+    uim 1.4: (sublist     '(1) 0 0)  ==> (1)
+             (sublist-rel '(1) 0 0)  ==> (1)
+    uim 1.5: (sublist     '(1) 0 0)  ==> ()
+             (sublist-rel '(1) 0 0)  ==> ()
 ------------------------------------------------------------------------------
 Summary: SRFI-1 procedures replacement
 Affects: uim developers, IM developers

Modified: trunk/scm/anthy-utf8.scm
==============================================================================
--- trunk/scm/anthy-utf8.scm    (original)
+++ trunk/scm/anthy-utf8.scm    Wed Jul 11 02:38:10 2007
@@ -1374,7 +1374,7 @@
                    (len (length unconv)))
                (if start
                    (anthy-make-raw-string
-                    (reverse (sublist raw-str start (+ start (- len 1))))
+                    (reverse (sublist-rel raw-str start len))
                     (if (or
                          (= cand-idx anthy-candidate-type-halfwidth-alnum)
                          (= cand-idx

Modified: trunk/scm/anthy.scm
==============================================================================
--- trunk/scm/anthy.scm (original)
+++ trunk/scm/anthy.scm Wed Jul 11 02:38:10 2007
@@ -1369,7 +1369,7 @@
                    (len (length unconv)))
                (if start
                    (anthy-make-raw-string
-                    (reverse (sublist raw-str start (+ start (- len 1))))
+                    (reverse (sublist-rel raw-str start len))
                     (if (or
                          (= cand-idx anthy-candidate-type-halfwidth-alnum)
                          (= cand-idx

Modified: trunk/scm/canna.scm
==============================================================================
--- trunk/scm/canna.scm (original)
+++ trunk/scm/canna.scm Wed Jul 11 02:38:10 2007
@@ -1017,7 +1017,7 @@
                      (len (length unconv)))
                  (if start
                      (canna-make-raw-string
-                      (reverse (sublist raw-str start (+ start (- len 1))))
+                      (reverse (sublist-rel raw-str start len))
                       (if (or
                            (= cand-idx canna-candidate-type-halfwidth-alnum)
                            (= cand-idx

Modified: trunk/scm/mana.scm
==============================================================================
--- trunk/scm/mana.scm  (original)
+++ trunk/scm/mana.scm  Wed Jul 11 02:38:10 2007
@@ -158,8 +158,8 @@
           (preconv (ja-join-vu (string-to-list yomi)))
           (unconv (ja-join-vu (sublist
                                (string-to-list yomi)
-                               (- (- yomi-len 1) (+ pos (- len 1)))
-                               (- (- yomi-len 1) pos))))
+                               (- yomi-len (+ pos len))
+                               (- yomi-len pos))))
           (raw-str (reverse (mana-get-raw-str-seq mc))))
      (cond
       ((= cand-idx mana-candidate-type-hiragana)
@@ -175,7 +175,7 @@
                     (len (length unconv)))
                 (if start
                     (mana-make-raw-string
-                     (reverse (sublist raw-str start (+ start (- len 1))))
+                     (reverse (sublist-rel raw-str start len))
                      (if (or
                           (= cand-idx mana-candidate-type-halfwidth-alnum)
                           (= cand-idx

Modified: trunk/scm/util.scm
==============================================================================
--- trunk/scm/util.scm  (original)
+++ trunk/scm/util.scm  Wed Jul 11 02:38:10 2007
@@ -83,16 +83,19 @@
        (and (car xs)
             (apply proc-and (cdr xs))))))
 
-;; TODO: write test
+;; meaning of 'end' has been changed from uim 1.5.0. See
+;; doc/COMPATIBILITY and test-util.scm.
 (define sublist
   (lambda (lst start end)
-    (list-tail (list-head lst (+ end 1))
-              start)))
+    (take (drop lst start)
+         (- end start))))
 
-;; TODO: write test
+;; meaning of 'len' has been changed from uim 1.5.0. See
+;; doc/COMPATIBILITY and test-util.scm.
 (define sublist-rel
   (lambda (lst start len)
-    (sublist lst start (+ start len))))
+    (take (drop lst start)
+         len)))
 
 (define alist-replace
   (lambda (kons alist)
@@ -158,19 +161,16 @@
             (dest (dest-getter self)))
        (apply method (cons dest (cdr args)))))))
 
-;; TODO: write test
 (define safe-car
   (lambda (pair)
     (and (pair? pair)
         (car pair))))
 
-;; TODO: write test
 (define safe-cdr
   (lambda (pair)
     (and (pair? pair)
         (cdr pair))))
 
-;; TODO: write test
 (define assq-cdr
   (lambda (key alist)
     (safe-cdr (assq key alist))))
@@ -187,7 +187,6 @@
 
 (define do-nothing (lambda args #f))
 
-;; TODO: write test
 (define make-scm-pathname
   (lambda (file)
     (or (and (= (string->charcode file)

Modified: trunk/test/test-util.scm
==============================================================================
--- trunk/test/test-util.scm    (original)
+++ trunk/test/test-util.scm    Wed Jul 11 02:38:10 2007
@@ -420,75 +420,306 @@
    (assert-false (uim-bool '(apply proc-and '(#t #f #t))))
    (assert-false (uim-bool '(apply proc-and '(#t #t #f))))
    (assert-true  (uim-bool '(apply proc-and '(#t #t #t)))))
-  ("test sublist"
+  ;; See "Specification changes of utility procedures" of doc/COMPATIBILITY
+;;  ("test sublist (uim 1.4)"
+;;   ;; 0
+;;   (assert-equal '(1)
+;;              (uim '(sublist lst 0 0)))
+;;   (assert-equal '(1 "2")
+;;              (uim '(sublist lst 0 1)))
+;;   (assert-equal '(1 "2" three)
+;;              (uim '(sublist lst 0 2)))
+;;   (assert-equal '(1 "2" three (4))
+;;              (uim '(sublist lst 0 3)))
+;;   (assert-equal '(1 "2" three (4) 5)
+;;              (uim '(sublist lst 0 4)))
+;;   (assert-equal '(1 "2" three (4) 5 six "7" (8 8))
+;;              (uim '(sublist lst 0 7)))
+;;   (assert-equal '(1 "2" three (4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist lst 0 8)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 0 9))))
+;;   ;; 1
+;;   (assert-equal '()
+;;              (uim '(sublist lst 1 0)))
+;;   (assert-equal '("2")
+;;              (uim '(sublist lst 1 1)))
+;;   (assert-equal '("2" three)
+;;              (uim '(sublist lst 1 2)))
+;;   (assert-equal '("2" three (4))
+;;              (uim '(sublist lst 1 3)))
+;;   (assert-equal '("2" three (4) 5)
+;;              (uim '(sublist lst 1 4)))
+;;   (assert-equal '("2" three (4) 5 six "7" (8 8))
+;;              (uim '(sublist lst 1 7)))
+;;   (assert-equal '("2" three (4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist lst 1 8)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 1 9))))
+;;   ;; 2
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 2 0))))
+;;   (assert-equal '()
+;;              (uim '(sublist lst 2 1)))
+;;   (assert-equal '(three)
+;;              (uim '(sublist lst 2 2)))
+;;   (assert-equal '(three (4))
+;;              (uim '(sublist lst 2 3)))
+;;   (assert-equal '(three (4) 5)
+;;              (uim '(sublist lst 2 4)))
+;;   (assert-equal '(three (4) 5 six "7" (8 8))
+;;              (uim '(sublist lst 2 7)))
+;;   (assert-equal '(three (4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist lst 2 8)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 2 9))))
+;;   ;; 3
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 3 0))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 3 1))))
+;;   (assert-equal '()
+;;              (uim '(sublist lst 3 2)))
+;;   (assert-equal '((4))
+;;              (uim '(sublist lst 3 3)))
+;;   (assert-equal '((4) 5)
+;;              (uim '(sublist lst 3 4)))
+;;   (assert-equal '((4) 5 six "7" (8 8))
+;;              (uim '(sublist lst 3 7)))
+;;   (assert-equal '((4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist lst 3 8)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 3 9))))
+;;   ;; 8
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 8 0))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 8 1))))
+;;   (assert-error (lambda ()
+;;              (uim '(sublist lst 8 2))))
+;;   (assert-error (lambda ()
+;;              (uim '(sublist lst 8 3))))
+;;   (assert-error (lambda ()
+;;              (uim '(sublist lst 8 4))))
+;;   (assert-equal '()
+;;              (uim '(sublist lst 8 7)))
+;;   (assert-equal '(-9)
+;;              (uim '(sublist lst 8 8)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 8 9))))
+;;   ;; 9
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 9 0))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 9 1))))
+;;   (assert-error (lambda ()
+;;              (uim '(sublist lst 9 2))))
+;;   (assert-error (lambda ()
+;;              (uim '(sublist lst 9 3))))
+;;   (assert-error (lambda ()
+;;              (uim '(sublist lst 9 4))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 9 7))))
+;;   (assert-equal '()
+;;              (uim '(sublist lst 9 8)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist lst 9 9)))))
+;;  ("test sublist-rel (uim 1.4)"
+;;   ;; 0
+;;   (assert-equal '(1)
+;;              (uim '(sublist-rel lst 0 0)))
+;;   (assert-equal '(1 "2")
+;;              (uim '(sublist-rel lst 0 1)))
+;;   (assert-equal '(1 "2" three)
+;;              (uim '(sublist-rel lst 0 2)))
+;;   (assert-equal '(1 "2" three (4))
+;;              (uim '(sublist-rel lst 0 3)))
+;;   (assert-equal '(1 "2" three (4) 5)
+;;              (uim '(sublist-rel lst 0 4)))
+;;   (assert-equal '(1 "2" three (4) 5 six "7" (8 8))
+;;              (uim '(sublist-rel lst 0 7)))
+;;   (assert-equal '(1 "2" three (4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist-rel lst 0 8)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 0 9))))
+;;   ;; 1
+;;   (assert-equal '("2")
+;;              (uim '(sublist-rel lst 1 0)))
+;;   (assert-equal '("2" three)
+;;              (uim '(sublist-rel lst 1 1)))
+;;   (assert-equal '("2" three (4))
+;;              (uim '(sublist-rel lst 1 2)))
+;;   (assert-equal '("2" three (4) 5)
+;;              (uim '(sublist-rel lst 1 3)))
+;;   (assert-equal '("2" three (4) 5 six)
+;;              (uim '(sublist-rel lst 1 4)))
+;;   (assert-equal '("2" three (4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist-rel lst 1 7)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 1 8))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 1 9))))
+;;   ;; 2
+;;   (assert-equal '(three)
+;;              (uim '(sublist-rel lst 2 0)))
+;;   (assert-equal '(three (4))
+;;              (uim '(sublist-rel lst 2 1)))
+;;   (assert-equal '(three (4) 5)
+;;              (uim '(sublist-rel lst 2 2)))
+;;   (assert-equal '(three (4) 5 six)
+;;              (uim '(sublist-rel lst 2 3)))
+;;   (assert-equal '(three (4) 5 six "7")
+;;              (uim '(sublist-rel lst 2 4)))
+;;   (assert-equal '(three (4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist-rel lst 2 6)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 2 7))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 2 8))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 2 9))))
+;;   ;; 3
+;;   (assert-equal '((4))
+;;              (uim '(sublist-rel lst 3 0)))
+;;   (assert-equal '((4) 5)
+;;              (uim '(sublist-rel lst 3 1)))
+;;   (assert-equal '((4) 5 six)
+;;              (uim '(sublist-rel lst 3 2)))
+;;   (assert-equal '((4) 5 six "7")
+;;              (uim '(sublist-rel lst 3 3)))
+;;   (assert-equal '((4) 5 six "7" (8 8))
+;;              (uim '(sublist-rel lst 3 4)))
+;;   (assert-equal '((4) 5 six "7" (8 8) -9)
+;;              (uim '(sublist-rel lst 3 5)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 3 6))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 3 7))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 3 8))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 3 9))))
+;;   ;; 8
+;;   (assert-equal '(-9)
+;;              (uim '(sublist-rel lst 8 0)))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 1))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 2))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 3))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 4))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 5))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 6))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 7))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 8))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 8 9))))
+;;   ;; 9
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 0))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 1))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 2))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 3))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 4))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 5))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 6))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 7))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 8))))
+;;   (assert-error (lambda ()
+;;                (uim '(sublist-rel lst 9 9)))))
+
+  ;; See "Specification changes of utility procedures" of doc/COMPATIBILITY
+  ("test sublist (uim 1.5)"
    ;; 0
-   (assert-equal '(1)
+   (assert-equal '()
                 (uim '(sublist lst 0 0)))
-   (assert-equal '(1 "2")
+   (assert-equal '(1)
                 (uim '(sublist lst 0 1)))
-   (assert-equal '(1 "2" three)
+   (assert-equal '(1 "2")
                 (uim '(sublist lst 0 2)))
-   (assert-equal '(1 "2" three (4))
+   (assert-equal '(1 "2" three)
                 (uim '(sublist lst 0 3)))
-   (assert-equal '(1 "2" three (4) 5)
+   (assert-equal '(1 "2" three (4))
                 (uim '(sublist lst 0 4)))
-   (assert-equal '(1 "2" three (4) 5 six "7" (8 8))
+   (assert-equal '(1 "2" three (4) 5 six "7")
                 (uim '(sublist lst 0 7)))
-   (assert-equal '(1 "2" three (4) 5 six "7" (8 8) -9)
+   (assert-equal '(1 "2" three (4) 5 six "7" (8 8))
                 (uim '(sublist lst 0 8)))
+   (assert-equal '(1 "2" three (4) 5 six "7" (8 8) -9)
+                (uim '(sublist lst 0 9)))
    (assert-error (lambda ()
-                  (uim '(sublist lst 0 9))))
+                  (uim '(sublist lst 0 10))))
    ;; 1
+   (assert-error (lambda ()
+                  (uim '(sublist lst 1 0))))
    (assert-equal '()
-                (uim '(sublist lst 1 0)))
-   (assert-equal '("2")
                 (uim '(sublist lst 1 1)))
-   (assert-equal '("2" three)
+   (assert-equal '("2")
                 (uim '(sublist lst 1 2)))
-   (assert-equal '("2" three (4))
+   (assert-equal '("2" three)
                 (uim '(sublist lst 1 3)))
-   (assert-equal '("2" three (4) 5)
+   (assert-equal '("2" three (4))
                 (uim '(sublist lst 1 4)))
-   (assert-equal '("2" three (4) 5 six "7" (8 8))
+   (assert-equal '("2" three (4) 5 six "7")
                 (uim '(sublist lst 1 7)))
-   (assert-equal '("2" three (4) 5 six "7" (8 8) -9)
+   (assert-equal '("2" three (4) 5 six "7" (8 8))
                 (uim '(sublist lst 1 8)))
+   (assert-equal '("2" three (4) 5 six "7" (8 8) -9)
+                (uim '(sublist lst 1 9)))
    (assert-error (lambda ()
-                  (uim '(sublist lst 1 9))))
+                  (uim '(sublist lst 1 10))))
    ;; 2
    (assert-error (lambda ()
                   (uim '(sublist lst 2 0))))
+   (assert-error (lambda ()
+                  (uim '(sublist lst 2 1))))
    (assert-equal '()
-                (uim '(sublist lst 2 1)))
-   (assert-equal '(three)
                 (uim '(sublist lst 2 2)))
-   (assert-equal '(three (4))
+   (assert-equal '(three)
                 (uim '(sublist lst 2 3)))
-   (assert-equal '(three (4) 5)
+   (assert-equal '(three (4))
                 (uim '(sublist lst 2 4)))
-   (assert-equal '(three (4) 5 six "7" (8 8))
+   (assert-equal '(three (4) 5 six "7")
                 (uim '(sublist lst 2 7)))
-   (assert-equal '(three (4) 5 six "7" (8 8) -9)
+   (assert-equal '(three (4) 5 six "7" (8 8))
                 (uim '(sublist lst 2 8)))
+   (assert-equal '(three (4) 5 six "7" (8 8) -9)
+                (uim '(sublist lst 2 9)))
    (assert-error (lambda ()
-                  (uim '(sublist lst 2 9))))
+                  (uim '(sublist lst 2 10))))
    ;; 3
    (assert-error (lambda ()
                   (uim '(sublist lst 3 0))))
    (assert-error (lambda ()
                   (uim '(sublist lst 3 1))))
+   (assert-error (lambda ()
+                  (uim '(sublist lst 3 2))))
    (assert-equal '()
-                (uim '(sublist lst 3 2)))
-   (assert-equal '((4))
                 (uim '(sublist lst 3 3)))
-   (assert-equal '((4) 5)
+   (assert-equal '((4))
                 (uim '(sublist lst 3 4)))
+   (assert-equal '((4) 5)
+                (uim '(sublist lst 3 5)))
    (assert-equal '((4) 5 six "7" (8 8))
-                (uim '(sublist lst 3 7)))
-   (assert-equal '((4) 5 six "7" (8 8) -9)
                 (uim '(sublist lst 3 8)))
+   (assert-equal '((4) 5 six "7" (8 8) -9)
+                (uim '(sublist lst 3 9)))
    (assert-error (lambda ()
-                  (uim '(sublist lst 3 9))))
+                  (uim '(sublist lst 3 10))))
    ;; 8
    (assert-error (lambda ()
                   (uim '(sublist lst 8 0))))
@@ -500,12 +731,14 @@
                 (uim '(sublist lst 8 3))))
    (assert-error (lambda ()
                 (uim '(sublist lst 8 4))))
+   (assert-error (lambda ()
+                (uim '(sublist lst 8 7))))
    (assert-equal '()
-                (uim '(sublist lst 8 7)))
-   (assert-equal '(-9)
                 (uim '(sublist lst 8 8)))
+   (assert-equal '(-9)
+                (uim '(sublist lst 8 9)))
    (assert-error (lambda ()
-                  (uim '(sublist lst 8 9))))
+                  (uim '(sublist lst 8 10))))
    ;; 9
    (assert-error (lambda ()
                   (uim '(sublist lst 9 0))))
@@ -519,79 +752,95 @@
                 (uim '(sublist lst 9 4))))
    (assert-error (lambda ()
                   (uim '(sublist lst 9 7))))
+   (assert-error (lambda ()
+                  (uim '(sublist lst 9 8))))
    (assert-equal '()
-                (uim '(sublist lst 9 8)))
+                (uim '(sublist lst 9 9)))
    (assert-error (lambda ()
-                  (uim '(sublist lst 9 9)))))
-  ("test sublist-rel"
+                  (uim '(sublist lst 9 10)))))
+  ("test sublist-rel (uim 1.5)"
    ;; 0
-   (assert-equal '(1)
+   (assert-error (lambda ()
+                  (uim '(sublist-rel lst 0 -1))))
+   (assert-equal '()
                 (uim '(sublist-rel lst 0 0)))
-   (assert-equal '(1 "2")
+   (assert-equal '(1)
                 (uim '(sublist-rel lst 0 1)))
-   (assert-equal '(1 "2" three)
+   (assert-equal '(1 "2")
                 (uim '(sublist-rel lst 0 2)))
-   (assert-equal '(1 "2" three (4))
+   (assert-equal '(1 "2" three)
                 (uim '(sublist-rel lst 0 3)))
-   (assert-equal '(1 "2" three (4) 5)
+   (assert-equal '(1 "2" three (4))
                 (uim '(sublist-rel lst 0 4)))
+   (assert-equal '(1 "2" three (4) 5)
+                (uim '(sublist-rel lst 0 5)))
    (assert-equal '(1 "2" three (4) 5 six "7" (8 8))
-                (uim '(sublist-rel lst 0 7)))
-   (assert-equal '(1 "2" three (4) 5 six "7" (8 8) -9)
                 (uim '(sublist-rel lst 0 8)))
+   (assert-equal '(1 "2" three (4) 5 six "7" (8 8) -9)
+                (uim '(sublist-rel lst 0 9)))
    (assert-error (lambda ()
-                  (uim '(sublist-rel lst 0 9))))
+                  (uim '(sublist-rel lst 0 10))))
    ;; 1
-   (assert-equal '("2")
+   (assert-error (lambda ()
+                  (uim '(sublist-rel lst 1 -1))))
+   (assert-equal '()
                 (uim '(sublist-rel lst 1 0)))
-   (assert-equal '("2" three)
+   (assert-equal '("2")
                 (uim '(sublist-rel lst 1 1)))
-   (assert-equal '("2" three (4))
+   (assert-equal '("2" three)
                 (uim '(sublist-rel lst 1 2)))
-   (assert-equal '("2" three (4) 5)
+   (assert-equal '("2" three (4))
                 (uim '(sublist-rel lst 1 3)))
-   (assert-equal '("2" three (4) 5 six)
+   (assert-equal '("2" three (4) 5)
                 (uim '(sublist-rel lst 1 4)))
+   (assert-equal '("2" three (4) 5 six)
+                (uim '(sublist-rel lst 1 5)))
    (assert-equal '("2" three (4) 5 six "7" (8 8) -9)
-                (uim '(sublist-rel lst 1 7)))
-   (assert-error (lambda ()
-                  (uim '(sublist-rel lst 1 8))))
+                (uim '(sublist-rel lst 1 8)))
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 1 9))))
+   (assert-error (lambda ()
+                  (uim '(sublist-rel lst 1 10))))
    ;; 2
-   (assert-equal '(three)
+   (assert-error (lambda ()
+                  (uim '(sublist-rel lst 2 -1))))
+   (assert-equal '()
                 (uim '(sublist-rel lst 2 0)))
-   (assert-equal '(three (4))
+   (assert-equal '(three)
                 (uim '(sublist-rel lst 2 1)))
-   (assert-equal '(three (4) 5)
+   (assert-equal '(three (4))
                 (uim '(sublist-rel lst 2 2)))
-   (assert-equal '(three (4) 5 six)
+   (assert-equal '(three (4) 5)
                 (uim '(sublist-rel lst 2 3)))
-   (assert-equal '(three (4) 5 six "7")
+   (assert-equal '(three (4) 5 six)
                 (uim '(sublist-rel lst 2 4)))
+   (assert-equal '(three (4) 5 six "7")
+                (uim '(sublist-rel lst 2 5)))
    (assert-equal '(three (4) 5 six "7" (8 8) -9)
-                (uim '(sublist-rel lst 2 6)))
-   (assert-error (lambda ()
-                  (uim '(sublist-rel lst 2 7))))
+                (uim '(sublist-rel lst 2 7)))
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 2 8))))
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 2 9))))
+   (assert-error (lambda ()
+                  (uim '(sublist-rel lst 2 10))))
    ;; 3
-   (assert-equal '((4))
+   (assert-error (lambda ()
+                  (uim '(sublist-rel lst 3 -1))))
+   (assert-equal '()
                 (uim '(sublist-rel lst 3 0)))
-   (assert-equal '((4) 5)
+   (assert-equal '((4))
                 (uim '(sublist-rel lst 3 1)))
-   (assert-equal '((4) 5 six)
+   (assert-equal '((4) 5)
                 (uim '(sublist-rel lst 3 2)))
-   (assert-equal '((4) 5 six "7")
+   (assert-equal '((4) 5 six)
                 (uim '(sublist-rel lst 3 3)))
-   (assert-equal '((4) 5 six "7" (8 8))
+   (assert-equal '((4) 5 six "7")
                 (uim '(sublist-rel lst 3 4)))
-   (assert-equal '((4) 5 six "7" (8 8) -9)
+   (assert-equal '((4) 5 six "7" (8 8))
                 (uim '(sublist-rel lst 3 5)))
-   (assert-error (lambda ()
-                  (uim '(sublist-rel lst 3 6))))
+   (assert-equal '((4) 5 six "7" (8 8) -9)
+                (uim '(sublist-rel lst 3 6)))
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 3 7))))
    (assert-error (lambda ()
@@ -599,10 +848,12 @@
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 3 9))))
    ;; 8
-   (assert-equal '(-9)
-                (uim '(sublist-rel lst 8 0)))
    (assert-error (lambda ()
-                  (uim '(sublist-rel lst 8 1))))
+                  (uim '(sublist-rel lst 8 -1))))
+   (assert-equal '()
+                (uim '(sublist-rel lst 8 0)))
+   (assert-equal '(-9)
+                (uim '(sublist-rel lst 8 1)))
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 8 2))))
    (assert-error (lambda ()
@@ -621,7 +872,9 @@
                   (uim '(sublist-rel lst 8 9))))
    ;; 9
    (assert-error (lambda ()
-                  (uim '(sublist-rel lst 9 0))))
+                  (uim '(sublist-rel lst 9 -1))))
+   (assert-equal '()
+                (uim '(sublist-rel lst 9 0)))
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 9 1))))
    (assert-error (lambda ()
@@ -639,8 +892,7 @@
    (assert-error (lambda ()
                   (uim '(sublist-rel lst 9 8))))
    (assert-error (lambda ()
-                  (uim '(sublist-rel lst 9 9))))
-   )
+                  (uim '(sublist-rel lst 9 9)))))
   ("test list-head"
    (assert-equal ()
                 (uim '(list-head lst 0)))

Reply via email to