~ubuntu-branches/ubuntu/precise/uim/precise

« back to all changes in this revision

Viewing changes to test/test-ustr.scm

  • Committer: Package Import Robot
  • Author(s): Ilya Barygin
  • Date: 2011-12-18 16:35:38 UTC
  • mfrom: (1.1.13) (15.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20111218163538-8ktir39z2mjpii8z
Tags: 1:1.7.1-3ubuntu1
* Merge from Debian testing (LP: #818199).
* Remaining changes:
  - debian/uim-qt.install: Fix plugin path for multiarch location.
* Dropped changes:
  - uim-applet-gnome removal (GNOME 3 applet is available)
  - 19_as-needed_compile_fix.dpatch (accepted into Debian package)
* translations.patch: add several files to POTFILE.in to prevent
  intltool-update failure.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env gosh
2
 
 
3
 
;;; Copyright (c) 2003-2009 uim Project http://code.google.com/p/uim/
 
1
;;; Copyright (c) 2003-2011 uim Project http://code.google.com/p/uim/
4
2
;;;
5
3
;;; All rights reserved.
6
4
;;;
29
27
;;; SUCH DAMAGE.
30
28
;;;;
31
29
 
32
 
;; These tests are passed at revision 5329 (new repository)
33
 
 
34
 
(use test.unit)
35
 
 
36
 
(require "test/uim-test-utils")
37
 
 
38
 
(define-uim-test-case "testcase ustr"
39
 
  (setup
40
 
   (lambda ()
41
 
    (uim '(require "ustr.scm"))
42
 
    (uim '(define-record 'ja-kana
43
 
            '((hiragana "")
44
 
              (katakana "")
45
 
              (hankaku  ""))))
46
 
    (uim '(define ustr-f (ustr-new '(("h" . "H") ("e" . "E") ("l" . "L")
47
 
                                     ("l" . "L") ("o" . "O")))))
48
 
    (uim '(define ustr-fl (ustr-new '(("h" . "H") ("e" . "E") ("l" . "L"))
49
 
                                    '(("l" . "L") ("o" . "O")))))
50
 
    (uim '(define ustr-l (ustr-new ()
51
 
                                   '(("h" . "H") ("e" . "E") ("l" . "L")
52
 
                                     ("l" . "L") ("o" . "O")))))
53
 
    (uim '(define ustra-f (ustr-new '("h" "e" "l" "l" "o"))))
54
 
    (uim '(define ustra-fl (ustr-new '("h" "e" "l")
55
 
                                     '("l" "o"))))
56
 
    (uim '(define ustra-l (ustr-new ()
57
 
                                    '("h" "e" "l" "l" "o"))))
58
 
    (uim '(define ustrj-f (ustr-new '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
59
 
                                      ("ん" "ン" "ン") ("ご" "ゴ" "ゴ")
60
 
                                      ("じゃ" "ジャ" "ジャ")))))
61
 
    (uim '(define ustrj-fl (ustr-new '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
62
 
                                       ("ん" "ン" "ン"))
63
 
                                     '(("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")))))
64
 
    (uim '(define ustrj-l (ustr-new ()
65
 
                                    '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
66
 
                                      ("ん" "ン" "ン") ("ご" "ゴ" "ゴ")
67
 
                                      ("じゃ" "ジャ" "ジャ")))))
68
 
    (uim '(define ustre (ustr-new ())))))
69
 
 
70
 
  ("test ustr-new"
71
 
   ;; single sequence goes into former
72
 
   (assert-equal '(("o" "l" "l" "e" "h") ())
73
 
                 (uim '(ustr-new '("h" "e" "l" "l" "o"))))
74
 
   ;; dual sequences are go into former and latter
75
 
   (assert-equal '(("l" "e" "h") ("l" "o"))
76
 
                 (uim '(ustr-new '("h" "e" "l")
77
 
                                 '("l" "o"))))
78
 
   ;; latter sequence only
79
 
   (assert-equal '(() ("h" "e" "l" "l" "o"))
80
 
                 (uim '(ustr-new ()
81
 
                                 '("h" "e" "l" "l" "o")))))
82
 
 
83
 
  ("test ustr-whole-seq"
84
 
   (assert-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
85
 
                 (uim '(ustr-whole-seq ustr-fl)))
86
 
   (assert-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
87
 
                 (uim '(ustr-whole-seq ustr-f)))
88
 
   (assert-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
89
 
                 (uim '(ustr-whole-seq ustr-l)))
90
 
   (assert-equal '("h" "e" "l" "l" "o")
91
 
                 (uim '(ustr-whole-seq ustra-fl)))
92
 
   (assert-equal '("h" "e" "l" "l" "o")
93
 
                 (uim '(ustr-whole-seq ustra-f)))
94
 
   (assert-equal '("h" "e" "l" "l" "o")
95
 
                 (uim '(ustr-whole-seq ustra-l)))
96
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
97
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
98
 
                 (uim '(ustr-whole-seq ustrj-fl)))
99
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
100
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
101
 
                 (uim '(ustr-whole-seq ustrj-f)))
102
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
103
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
104
 
                 (uim '(ustr-whole-seq ustrj-l))))
105
 
 
106
 
  ("test ustr-former-seq"
107
 
   (assert-equal '(("h" . "H") ("e" . "E") ("l" . "L"))
108
 
                 (uim '(ustr-former-seq ustr-fl)))
109
 
   (assert-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
110
 
                 (uim '(ustr-former-seq ustr-f)))
111
 
   (assert-equal ()
112
 
                 (uim '(ustr-former-seq ustr-l)))
113
 
   (assert-equal '("h" "e" "l")
114
 
                 (uim '(ustr-former-seq ustra-fl)))
115
 
   (assert-equal '("h" "e" "l" "l" "o")
116
 
                 (uim '(ustr-former-seq ustra-f)))
117
 
   (assert-equal ()
118
 
                 (uim '(ustr-former-seq ustra-l)))
119
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン"))
120
 
                 (uim '(ustr-former-seq ustrj-fl)))
121
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
122
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
123
 
                 (uim '(ustr-former-seq ustrj-f)))
124
 
   (assert-equal ()
125
 
                 (uim '(ustr-former-seq ustrj-l))))
126
 
 
127
 
  ("test ustr-latter-seq"
128
 
   (assert-equal '(("l" . "L") ("o" . "O"))
129
 
                 (uim '(ustr-latter-seq ustr-fl)))
130
 
   (assert-equal ()
131
 
                 (uim '(ustr-latter-seq ustr-f)))
132
 
   (assert-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
133
 
                 (uim '(ustr-latter-seq ustr-l)))
134
 
   (assert-equal '("l" "o")
135
 
                 (uim '(ustr-latter-seq ustra-fl)))
136
 
   (assert-equal ()
137
 
                 (uim '(ustr-latter-seq ustra-f)))
138
 
   (assert-equal '("h" "e" "l" "l" "o")
139
 
                 (uim '(ustr-latter-seq ustra-l)))
140
 
   (assert-equal '(("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
141
 
                 (uim '(ustr-latter-seq ustrj-fl)))
142
 
   (assert-equal ()
143
 
                 (uim '(ustr-latter-seq ustrj-f)))
144
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
145
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
146
 
                 (uim '(ustr-latter-seq ustrj-l))))
147
 
 
148
 
  ("test ustr-set-whole-seq!"
149
 
   ;; former-latter
150
 
   (assert-equal '("h" "e" "l" "l" "o")
151
 
                 (uim '(ustr-whole-seq ustra-fl)))
152
 
   (assert-equal '("h" "e" "l")
153
 
                 (uim '(ustr-former-seq ustra-fl)))
154
 
   (assert-equal '("l" "o")
155
 
                 (uim '(ustr-latter-seq ustra-fl)))
156
 
   (uim '(ustr-set-whole-seq! ustra-fl '("w" "o" "r" "L" "d")))
157
 
   (assert-equal '("w" "o" "r" "L" "d")
158
 
                 (uim '(ustr-whole-seq ustra-fl)))
159
 
   (assert-equal '("w" "o" "r" "L" "d")
160
 
                 (uim '(ustr-former-seq ustra-fl)))
161
 
   (assert-equal ()
162
 
                 (uim '(ustr-latter-seq ustra-fl)))
163
 
   ;; former
164
 
   (assert-equal '("h" "e" "l" "l" "o")
165
 
                 (uim '(ustr-whole-seq ustra-f)))
166
 
   (assert-equal '("h" "e" "l" "l" "o")
167
 
                 (uim '(ustr-former-seq ustra-f)))
168
 
   (assert-equal ()
169
 
                 (uim '(ustr-latter-seq ustra-f)))
170
 
   (uim '(ustr-set-whole-seq! ustra-f '("w" "o" "r" "L" "d")))
171
 
   (assert-equal '("w" "o" "r" "L" "d")
172
 
                 (uim '(ustr-whole-seq ustra-f)))
173
 
   (assert-equal '("w" "o" "r" "L" "d")
174
 
                 (uim '(ustr-former-seq ustra-f)))
175
 
   (assert-equal ()
176
 
                 (uim '(ustr-latter-seq ustra-f)))
177
 
   ;; latter
178
 
   (assert-equal '("h" "e" "l" "l" "o")
179
 
                 (uim '(ustr-whole-seq ustra-l)))
180
 
   (assert-equal ()
181
 
                 (uim '(ustr-former-seq ustra-l)))
182
 
   (assert-equal '("h" "e" "l" "l" "o")
183
 
                 (uim '(ustr-latter-seq ustra-l)))
184
 
   (uim '(ustr-set-whole-seq! ustra-l '("w" "o" "r" "L" "d")))
185
 
   (assert-equal '("w" "o" "r" "L" "d")
186
 
                 (uim '(ustr-whole-seq ustra-l)))
187
 
   (assert-equal '("w" "o" "r" "L" "d")
188
 
                 (uim '(ustr-former-seq ustra-l)))
189
 
   (assert-equal ()
190
 
                 (uim '(ustr-latter-seq ustra-l))))
191
 
 
192
 
  ("test ustr-set-former-seq!"
193
 
   ;; former-latter
194
 
   (assert-equal '("h" "e" "l" "l" "o")
195
 
                 (uim '(ustr-whole-seq ustra-fl)))
196
 
   (assert-equal '("h" "e" "l")
197
 
                 (uim '(ustr-former-seq ustra-fl)))
198
 
   (assert-equal '("l" "o")
199
 
                 (uim '(ustr-latter-seq ustra-fl)))
200
 
   (uim '(ustr-set-former-seq! ustra-fl '("w" "o" "r" "L" "d")))
201
 
   (assert-equal '("w" "o" "r" "L" "d" "l" "o")
202
 
                 (uim '(ustr-whole-seq ustra-fl)))
203
 
   (assert-equal '("w" "o" "r" "L" "d")
204
 
                 (uim '(ustr-former-seq ustra-fl)))
205
 
   (assert-equal '("l" "o")
206
 
                 (uim '(ustr-latter-seq ustra-fl)))
207
 
   ;; former
208
 
   (assert-equal '("h" "e" "l" "l" "o")
209
 
                 (uim '(ustr-whole-seq ustra-f)))
210
 
   (assert-equal '("h" "e" "l" "l" "o")
211
 
                 (uim '(ustr-former-seq ustra-f)))
212
 
   (assert-equal ()
213
 
                 (uim '(ustr-latter-seq ustra-f)))
214
 
   (uim '(ustr-set-former-seq! ustra-f '("w" "o" "r" "L" "d")))
215
 
   (assert-equal '("w" "o" "r" "L" "d")
216
 
                 (uim '(ustr-whole-seq ustra-f)))
217
 
   (assert-equal '("w" "o" "r" "L" "d")
218
 
                 (uim '(ustr-former-seq ustra-f)))
219
 
   (assert-equal ()
220
 
                 (uim '(ustr-latter-seq ustra-f)))
221
 
   ;; latter
222
 
   (assert-equal '("h" "e" "l" "l" "o")
223
 
                 (uim '(ustr-whole-seq ustra-l)))
224
 
   (assert-equal ()
225
 
                 (uim '(ustr-former-seq ustra-l)))
226
 
   (assert-equal '("h" "e" "l" "l" "o")
227
 
                 (uim '(ustr-latter-seq ustra-l)))
228
 
   (uim '(ustr-set-former-seq! ustra-l '("w" "o" "r" "L" "d")))
229
 
   (assert-equal '("w" "o" "r" "L" "d" "h" "e" "l" "l" "o")
230
 
                 (uim '(ustr-whole-seq ustra-l)))
231
 
   (assert-equal '("w" "o" "r" "L" "d")
232
 
                 (uim '(ustr-former-seq ustra-l)))
233
 
   (assert-equal '("h" "e" "l" "l" "o")
234
 
                 (uim '(ustr-latter-seq ustra-l))))
235
 
 
236
 
  ("test ustr-set-latter-seq!"
237
 
   ;; former-latter
238
 
   (assert-equal '("h" "e" "l" "l" "o")
239
 
                 (uim '(ustr-whole-seq ustra-fl)))
240
 
   (assert-equal '("h" "e" "l")
241
 
                 (uim '(ustr-former-seq ustra-fl)))
242
 
   (assert-equal '("l" "o")
243
 
                 (uim '(ustr-latter-seq ustra-fl)))
244
 
   (uim '(ustr-set-latter-seq! ustra-fl '("w" "o" "r" "L" "d")))
245
 
   (assert-equal '("h" "e" "l" "w" "o" "r" "L" "d")
246
 
                 (uim '(ustr-whole-seq ustra-fl)))
247
 
   (assert-equal '("h" "e" "l")
248
 
                 (uim '(ustr-former-seq ustra-fl)))
249
 
   (assert-equal '("w" "o" "r" "L" "d")
250
 
                 (uim '(ustr-latter-seq ustra-fl)))
251
 
   ;; former
252
 
   (assert-equal '("h" "e" "l" "l" "o")
253
 
                 (uim '(ustr-whole-seq ustra-f)))
254
 
   (assert-equal '("h" "e" "l" "l" "o")
255
 
                 (uim '(ustr-former-seq ustra-f)))
256
 
   (assert-equal ()
257
 
                 (uim '(ustr-latter-seq ustra-f)))
258
 
   (uim '(ustr-set-latter-seq! ustra-f '("w" "o" "r" "L" "d")))
259
 
   (assert-equal '("h" "e" "l" "l" "o" "w" "o" "r" "L" "d")
260
 
                 (uim '(ustr-whole-seq ustra-f)))
261
 
   (assert-equal '("h" "e" "l" "l" "o")
262
 
                 (uim '(ustr-former-seq ustra-f)))
263
 
   (assert-equal '("w" "o" "r" "L" "d")
264
 
                 (uim '(ustr-latter-seq ustra-f)))
265
 
   ;; latter
266
 
   (assert-equal '("h" "e" "l" "l" "o")
267
 
                 (uim '(ustr-whole-seq ustra-l)))
268
 
   (assert-equal ()
269
 
                 (uim '(ustr-former-seq ustra-l)))
270
 
   (assert-equal '("h" "e" "l" "l" "o")
271
 
                 (uim '(ustr-latter-seq ustra-l)))
272
 
   (uim '(ustr-set-latter-seq! ustra-l '("w" "o" "r" "L" "d")))
273
 
   (assert-equal '("w" "o" "r" "L" "d")
274
 
                 (uim '(ustr-whole-seq ustra-l)))
275
 
   (assert-equal ()
276
 
                 (uim '(ustr-former-seq ustra-l)))
277
 
   (assert-equal '("w" "o" "r" "L" "d")
278
 
                 (uim '(ustr-latter-seq ustra-l))))
279
 
 
280
 
  ("test ustr-empty?"
281
 
   (assert-false (uim-bool '(ustr-empty? ustr-fl)))
282
 
   (assert-false (uim-bool '(ustr-empty? ustr-f)))
283
 
   (assert-false (uim-bool '(ustr-empty? ustr-l)))
284
 
   
285
 
   (assert-false (uim-bool '(ustr-empty? ustra-fl)))
286
 
   (assert-false (uim-bool '(ustr-empty? ustra-f)))
287
 
   (assert-false (uim-bool '(ustr-empty? ustra-l)))
288
 
   
289
 
   (assert-false (uim-bool '(ustr-empty? ustrj-fl)))
290
 
   (assert-false (uim-bool '(ustr-empty? ustrj-f)))
291
 
   (assert-false (uim-bool '(ustr-empty? ustrj-l)))
292
 
 
293
 
   (assert-equal '(() ())
294
 
                 (uim 'ustre))
295
 
   (assert-true  (uim-bool '(ustr-empty? ustre))))
296
 
 
297
 
  ("test ustr-clear!"
298
 
   (assert-false (uim-bool '(ustr-empty? ustra-fl)))
299
 
   (uim '(ustr-clear! ustra-fl))
300
 
   (assert-true  (uim-bool '(ustr-empty? ustra-fl)))
301
 
 
302
 
   (assert-false (uim-bool '(ustr-empty? ustra-f)))
303
 
   (uim '(ustr-clear! ustra-f))
304
 
   (assert-true  (uim-bool '(ustr-empty? ustra-f)))
305
 
 
306
 
   (assert-false (uim-bool '(ustr-empty? ustra-l)))
307
 
   (uim '(ustr-clear! ustra-l))
308
 
   (assert-true  (uim-bool '(ustr-empty? ustra-l)))
309
 
   
310
 
   (assert-true  (uim-bool '(ustr-empty? ustre)))
311
 
   (uim '(ustr-clear! ustre))
312
 
   (assert-true  (uim-bool '(ustr-empty? ustre))))
313
 
 
314
 
  ("test ustr-clear-former!"
315
 
   (assert-false (uim-bool '(ustr-empty? ustra-fl)))
316
 
   (uim '(ustr-clear-former! ustra-fl))
317
 
   (assert-false (uim-bool '(ustr-empty? ustra-fl)))
318
 
 
319
 
   (assert-false (uim-bool '(ustr-empty? ustra-f)))
320
 
   (uim '(ustr-clear-former! ustra-f))
321
 
   (assert-true  (uim-bool '(ustr-empty? ustra-f)))
322
 
 
323
 
   (assert-false (uim-bool '(ustr-empty? ustra-l)))
324
 
   (uim '(ustr-clear-former! ustra-l))
325
 
   (assert-false (uim-bool '(ustr-empty? ustra-l)))
326
 
   
327
 
   (assert-true  (uim-bool '(ustr-empty? ustre)))
328
 
   (uim '(ustr-clear-former! ustre))
329
 
   (assert-true  (uim-bool '(ustr-empty? ustre))))
330
 
 
331
 
  ("test ustr-clear-latter!"
332
 
   (assert-false (uim-bool '(ustr-empty? ustra-fl)))
333
 
   (uim '(ustr-clear-latter! ustra-fl))
334
 
   (assert-false (uim-bool '(ustr-empty? ustra-fl)))
335
 
 
336
 
   (assert-false (uim-bool '(ustr-empty? ustra-f)))
337
 
   (uim '(ustr-clear-latter! ustra-f))
338
 
   (assert-false (uim-bool '(ustr-empty? ustra-f)))
339
 
 
340
 
   (assert-false (uim-bool '(ustr-empty? ustra-l)))
341
 
   (uim '(ustr-clear-latter! ustra-l))
342
 
   (assert-true  (uim-bool '(ustr-empty? ustra-l)))
343
 
   
344
 
   (assert-true  (uim-bool '(ustr-empty? ustre)))
345
 
   (uim '(ustr-clear-latter! ustre))
346
 
   (assert-true  (uim-bool '(ustr-empty? ustre))))
347
 
 
348
 
  ("test ustr-copy!"
349
 
   (assert-false (uim-bool '(equal? ustr-fl ustra-fl)))
350
 
   (uim '(ustr-copy! ustr-fl ustra-fl))
351
 
   (assert-true (uim-bool '(equal? ustr-fl ustra-fl)))
352
 
 
353
 
   (assert-false (uim-bool '(equal? ustr-f ustra-f)))
354
 
   (uim '(ustr-copy! ustr-f ustra-f))
355
 
   (assert-true (uim-bool '(equal? ustr-f ustra-f)))
356
 
 
357
 
   (assert-false (uim-bool '(equal? ustr-l ustra-l)))
358
 
   (uim '(ustr-copy! ustr-l ustra-l))
359
 
   (assert-true (uim-bool '(equal? ustr-l ustra-l))))
360
 
 
361
 
  ("test ustr="
362
 
   (assert-true  (uim-bool '(ustr= equal? ustr-fl ustr-fl)))
363
 
   (assert-true  (uim-bool '(ustr= equal? ustr-fl ustr-f)))
364
 
   (assert-true  (uim-bool '(ustr= equal? ustr-f ustr-fl)))
365
 
   (assert-true  (uim-bool '(ustr= equal? ustr-fl ustr-l)))
366
 
   (assert-true  (uim-bool '(ustr= equal? ustr-l ustr-fl)))
367
 
   (assert-true  (uim-bool '(ustr= equal? ustr-f ustr-f)))
368
 
   (assert-true  (uim-bool '(ustr= equal? ustr-l ustr-f)))
369
 
   (assert-true  (uim-bool '(ustr= equal? ustr-f ustr-l)))
370
 
   (assert-true  (uim-bool '(ustr= equal? ustr-l ustr-l)))
371
 
   (assert-false (uim-bool '(ustr= equal? ustr-l ustre)))
372
 
   (assert-false (uim-bool '(ustr= equal? ustre ustr-l)))
373
 
 
374
 
   (assert-true  (uim-bool '(ustr= string=? ustra-fl ustra-fl)))
375
 
   (assert-true  (uim-bool '(ustr= string=? ustra-fl ustra-f)))
376
 
   (assert-true  (uim-bool '(ustr= string=? ustra-f ustra-fl)))
377
 
   (assert-true  (uim-bool '(ustr= string=? ustra-fl ustra-l)))
378
 
   (assert-true  (uim-bool '(ustr= string=? ustra-l ustra-fl)))
379
 
   (assert-true  (uim-bool '(ustr= string=? ustra-f ustra-f)))
380
 
   (assert-true  (uim-bool '(ustr= string=? ustra-l ustra-f)))
381
 
   (assert-true  (uim-bool '(ustr= string=? ustra-f ustra-l)))
382
 
   (assert-true  (uim-bool '(ustr= string=? ustra-l ustra-l)))
383
 
   (assert-false (uim-bool '(ustr= string=? ustra-fl ustre)))
384
 
   (assert-false (uim-bool '(ustr= string=? ustre ustra-fl)))
385
 
   (assert-false (uim-bool '(ustr= string=? ustra-f ustre)))
386
 
   (assert-false (uim-bool '(ustr= string=? ustre ustra-f)))
387
 
   (assert-false (uim-bool '(ustr= string=? ustra-l ustre)))
388
 
   (assert-false (uim-bool '(ustr= string=? ustre ustra-l)))
389
 
   (uim '(ustr-set-former-seq! ustra-f '("h" "e" "l" "l" "o" "!")))
390
 
   (assert-false (uim-bool '(ustr= string=? ustra-fl ustra-f)))
391
 
   (assert-false (uim-bool '(ustr= string=? ustra-f ustra-fl)))
392
 
   (assert-false (uim-bool '(ustr= string=? ustra-l ustra-f)))
393
 
   (assert-false (uim-bool '(ustr= string=? ustra-f ustra-l)))
394
 
   (assert-true  (uim-bool '(ustr= string=? ustra-f ustra-f)))
395
 
 
396
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-fl ustrj-fl)))
397
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-fl ustrj-f)))
398
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-f ustrj-fl)))
399
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-fl ustrj-l)))
400
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-l ustrj-fl)))
401
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-f ustrj-f)))
402
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-l ustrj-f)))
403
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-f ustrj-l)))
404
 
   (assert-true  (uim-bool '(ustr= equal? ustrj-l ustrj-l)))
405
 
   (assert-false (uim-bool '(ustr= equal? ustrj-l ustre)))
406
 
   (assert-false (uim-bool '(ustr= equal? ustre ustrj-l))))
407
 
 
408
 
  ("test ustr-length"
409
 
   (assert-equal 5
410
 
                 (uim '(ustr-length ustr-fl)))
411
 
   (assert-equal 5
412
 
                 (uim '(ustr-length ustr-f)))
413
 
   (assert-equal 5
414
 
                 (uim '(ustr-length ustr-l)))
415
 
   (assert-equal 5
416
 
                 (uim '(ustr-length ustra-fl)))
417
 
   (assert-equal 5
418
 
                 (uim '(ustr-length ustra-f)))
419
 
   (assert-equal 5
420
 
                 (uim '(ustr-length ustra-l)))
421
 
   (assert-equal 5
422
 
                 (uim '(ustr-length ustrj-fl)))
423
 
   (assert-equal 5
424
 
                 (uim '(ustr-length ustrj-f)))
425
 
   (assert-equal 5
426
 
                 (uim '(ustr-length ustrj-l)))
427
 
   (assert-equal 0
428
 
                 (uim '(ustr-length ustre))))
429
 
 
430
 
  ("test ustr-nth"
431
 
   (assert-equal "h"
432
 
                 (uim '(ustr-nth ustra-fl 0)))
433
 
   (assert-equal "e"
434
 
                 (uim '(ustr-nth ustra-fl 1)))
435
 
   (assert-equal "l"
436
 
                 (uim '(ustr-nth ustra-fl 2)))
437
 
   (assert-equal "l"
438
 
                 (uim '(ustr-nth ustra-fl 3)))
439
 
   (assert-equal "o"
440
 
                 (uim '(ustr-nth ustra-fl 4)))
441
 
   (assert-error (lambda ()
442
 
                   (uim '(ustr-nth ustra-fl 5))))
443
 
   (assert-error (lambda ()
444
 
                   (uim '(ustr-nth ustra-fl -1))))
445
 
 
446
 
   (assert-equal "h"
447
 
                 (uim '(ustr-nth ustra-f 0)))
448
 
   (assert-equal "e"
449
 
                 (uim '(ustr-nth ustra-f 1)))
450
 
   (assert-equal "l"
451
 
                 (uim '(ustr-nth ustra-f 2)))
452
 
   (assert-equal "l"
453
 
                 (uim '(ustr-nth ustra-f 3)))
454
 
   (assert-equal "o"
455
 
                 (uim '(ustr-nth ustra-f 4)))
456
 
   (assert-error (lambda ()
457
 
                   (uim '(ustr-nth ustra-f 5))))
458
 
   (assert-error (lambda ()
459
 
                   (uim '(ustr-nth ustra-f -1))))
460
 
 
461
 
   (assert-equal "h"
462
 
                 (uim '(ustr-nth ustra-l 0)))
463
 
   (assert-equal "e"
464
 
                 (uim '(ustr-nth ustra-l 1)))
465
 
   (assert-equal "l"
466
 
                 (uim '(ustr-nth ustra-l 2)))
467
 
   (assert-equal "l"
468
 
                 (uim '(ustr-nth ustra-l 3)))
469
 
   (assert-equal "o"
470
 
                 (uim '(ustr-nth ustra-l 4)))
471
 
   (assert-error (lambda ()
472
 
                   (uim '(ustr-nth ustra-l 5))))
473
 
   (assert-error (lambda ()
474
 
                   (uim '(ustr-nth ustra-l -1))))
475
 
 
476
 
   (assert-error (lambda ()
477
 
                   (uim '(ustr-nth ustre 0)))))
478
 
 
479
 
  ("test ustr-set-nth!"
480
 
   (assert-equal "h"
481
 
                 (uim '(ustr-nth ustra-fl 0)))
482
 
   (assert-equal "e"
483
 
                 (uim '(ustr-nth ustra-fl 1)))
484
 
   (assert-equal "l"
485
 
                 (uim '(ustr-nth ustra-fl 2)))
486
 
   (assert-equal "l"
487
 
                 (uim '(ustr-nth ustra-fl 3)))
488
 
   (assert-equal "o"
489
 
                 (uim '(ustr-nth ustra-fl 4)))
490
 
   (assert-error (lambda ()
491
 
                   (uim '(ustr-nth ustra-fl 5))))
492
 
   (assert-error (lambda ()
493
 
                   (uim '(ustr-nth ustra-fl -1))))
494
 
   ;; position 0
495
 
   (assert-equal 5
496
 
                 (uim '(ustr-length ustra-fl)))
497
 
   (assert-equal 3
498
 
                 (uim '(ustr-cursor-pos ustra-fl)))
499
 
   (uim '(ustr-set-nth! ustra-fl 0 "H"))
500
 
   (assert-equal "H"
501
 
                 (uim '(ustr-nth ustra-fl 0)))
502
 
   (assert-equal '("H" "e" "l")
503
 
                 (uim '(ustr-former-seq ustra-fl)))
504
 
   (assert-equal '("l" "o")
505
 
                 (uim '(ustr-latter-seq ustra-fl)))
506
 
   (assert-equal 5
507
 
                 (uim '(ustr-length ustra-fl)))
508
 
   (assert-equal 3
509
 
                 (uim '(ustr-cursor-pos ustra-fl)))
510
 
   ;; position 1
511
 
   (assert-equal 5
512
 
                 (uim '(ustr-length ustra-fl)))
513
 
   (assert-equal 3
514
 
                 (uim '(ustr-cursor-pos ustra-fl)))
515
 
   (uim '(ustr-set-nth! ustra-fl 1 "E"))
516
 
   (assert-equal "E"
517
 
                 (uim '(ustr-nth ustra-fl 1)))
518
 
   (assert-equal '("H" "E" "l")
519
 
                 (uim '(ustr-former-seq ustra-fl)))
520
 
   (assert-equal '("l" "o")
521
 
                 (uim '(ustr-latter-seq ustra-fl)))
522
 
   (assert-equal 5
523
 
                 (uim '(ustr-length ustra-fl)))
524
 
   (assert-equal 3
525
 
                 (uim '(ustr-cursor-pos ustra-fl)))
526
 
   ;; position 2
527
 
   (assert-equal 5
528
 
                 (uim '(ustr-length ustra-fl)))
529
 
   (assert-equal 3
530
 
                 (uim '(ustr-cursor-pos ustra-fl)))
531
 
   (uim '(ustr-set-nth! ustra-fl 2 "L"))
532
 
   (assert-equal "L"
533
 
                 (uim '(ustr-nth ustra-fl 2)))
534
 
   (assert-equal '("H" "E" "L")
535
 
                 (uim '(ustr-former-seq ustra-fl)))
536
 
   (assert-equal '("l" "o")
537
 
                 (uim '(ustr-latter-seq ustra-fl)))
538
 
   (assert-equal 5
539
 
                 (uim '(ustr-length ustra-fl)))
540
 
   (assert-equal 3
541
 
                 (uim '(ustr-cursor-pos ustra-fl)))
542
 
   ;; position 3
543
 
   (assert-equal 5
544
 
                 (uim '(ustr-length ustra-fl)))
545
 
   (assert-equal 3
546
 
                 (uim '(ustr-cursor-pos ustra-fl)))
547
 
   (uim '(ustr-set-nth! ustra-fl 3 "|"))
548
 
   (assert-equal "|"
549
 
                 (uim '(ustr-nth ustra-fl 3)))
550
 
   (assert-equal '("H" "E" "L")
551
 
                 (uim '(ustr-former-seq ustra-fl)))
552
 
   (assert-equal '("|" "o")
553
 
                 (uim '(ustr-latter-seq ustra-fl)))
554
 
   (assert-equal 5
555
 
                 (uim '(ustr-length ustra-fl)))
556
 
   (assert-equal 3
557
 
                 (uim '(ustr-cursor-pos ustra-fl)))
558
 
   ;; position 4
559
 
   (assert-equal 5
560
 
                 (uim '(ustr-length ustra-fl)))
561
 
   (assert-equal 3
562
 
                 (uim '(ustr-cursor-pos ustra-fl)))
563
 
   (uim '(ustr-set-nth! ustra-fl 4 "O"))
564
 
   (assert-equal "O"
565
 
                 (uim '(ustr-nth ustra-fl 4)))
566
 
   (assert-equal '("H" "E" "L")
567
 
                 (uim '(ustr-former-seq ustra-fl)))
568
 
   (assert-equal '("|" "O")
569
 
                 (uim '(ustr-latter-seq ustra-fl)))
570
 
   (assert-equal 5
571
 
                 (uim '(ustr-length ustra-fl)))
572
 
   (assert-equal 3
573
 
                 (uim '(ustr-cursor-pos ustra-fl)))
574
 
   ;; position 5
575
 
   (assert-equal 5
576
 
                 (uim '(ustr-length ustra-fl)))
577
 
   (assert-equal 3
578
 
                 (uim '(ustr-cursor-pos ustra-fl)))
579
 
   (assert-error (lambda ()
580
 
                   (uim '(ustr-set-nth! ustra-fl 5 "5"))))
581
 
   (assert-error (lambda ()
582
 
                   (uim '(ustr-nth ustra-fl 5))))
583
 
   (assert-equal '("H" "E" "L")
584
 
                 (uim '(ustr-former-seq ustra-fl)))
585
 
   (assert-equal '("|" "O")
586
 
                 (uim '(ustr-latter-seq ustra-fl)))
587
 
   (assert-equal 5
588
 
                 (uim '(ustr-length ustra-fl)))
589
 
   (assert-equal 3
590
 
                 (uim '(ustr-cursor-pos ustra-fl)))
591
 
   ;; position 5 in former-str
592
 
   (assert-equal '("h" "e" "l" "l" "o")
593
 
                 (uim '(ustr-former-seq ustra-f)))
594
 
   (assert-equal ()
595
 
                 (uim '(ustr-latter-seq ustra-f)))
596
 
   (assert-equal 5
597
 
                 (uim '(ustr-length ustra-f)))
598
 
   (assert-equal 5
599
 
                 (uim '(ustr-cursor-pos ustra-f)))
600
 
   (assert-error (lambda ()
601
 
                   (uim '(ustr-set-nth! ustra-f 5 "5"))))
602
 
   (assert-error (lambda ()
603
 
                   (uim '(ustr-nth ustra-f 5))))
604
 
   (assert-equal '("h" "e" "l" "l" "o")
605
 
                 (uim '(ustr-former-seq ustra-f)))
606
 
   (assert-equal ()
607
 
                 (uim '(ustr-latter-seq ustra-f)))
608
 
   (assert-equal 5
609
 
                 (uim '(ustr-length ustra-f)))
610
 
   (assert-equal 5
611
 
                 (uim '(ustr-cursor-pos ustra-f)))
612
 
   ;; position 4 in former-str
613
 
   (assert-equal '("h" "e" "l" "l" "o")
614
 
                 (uim '(ustr-former-seq ustra-f)))
615
 
   (assert-equal ()
616
 
                 (uim '(ustr-latter-seq ustra-f)))
617
 
   (assert-equal 5
618
 
                 (uim '(ustr-length ustra-f)))
619
 
   (assert-equal 5
620
 
                 (uim '(ustr-cursor-pos ustra-f)))
621
 
   (uim '(ustr-set-nth! ustra-f 4 "O"))
622
 
   (assert-equal "O"
623
 
                 (uim '(ustr-nth ustra-f 4)))
624
 
   (assert-equal '("h" "e" "l" "l" "O")
625
 
                 (uim '(ustr-former-seq ustra-f)))
626
 
   (assert-equal ()
627
 
                 (uim '(ustr-latter-seq ustra-f)))
628
 
   (assert-equal 5
629
 
                 (uim '(ustr-length ustra-f)))
630
 
   (assert-equal 5
631
 
                 (uim '(ustr-cursor-pos ustra-f)))
632
 
   ;; position 0 in latter-str
633
 
   (assert-equal ()
634
 
                 (uim '(ustr-former-seq ustra-l)))
635
 
   (assert-equal '("h" "e" "l" "l" "o")
636
 
                 (uim '(ustr-latter-seq ustra-l)))
637
 
   (assert-equal 5
638
 
                 (uim '(ustr-length ustra-l)))
639
 
   (assert-equal 0
640
 
                 (uim '(ustr-cursor-pos ustra-l)))
641
 
   (uim '(ustr-set-nth! ustra-l 0 "H"))
642
 
   (assert-equal "H"
643
 
                 (uim '(ustr-nth ustra-l 0)))
644
 
   (assert-equal ()
645
 
                 (uim '(ustr-former-seq ustra-l)))
646
 
   (assert-equal '("H" "e" "l" "l" "o")
647
 
                 (uim '(ustr-latter-seq ustra-l)))
648
 
   (assert-equal 5
649
 
                 (uim '(ustr-length ustra-l)))
650
 
   (assert-equal 0
651
 
                 (uim '(ustr-cursor-pos ustra-l))))
652
 
 
653
 
  ("test ustr-ref"
654
 
   (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 0)
655
 
                                 (nthcdr 2 (ustr-former ustra-fl)))))
656
 
   (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 1)
657
 
                                 (nthcdr 1 (ustr-former ustra-fl)))))
658
 
   (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 2)
659
 
                                 (nthcdr 0 (ustr-former ustra-fl)))))
660
 
   (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 3)
661
 
                                 (nthcdr 0 (ustr-latter ustra-fl)))))
662
 
   (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 4)
663
 
                                 (nthcdr 1 (ustr-latter ustra-fl)))))
664
 
   (assert-error (lambda ()
665
 
                   (uim '(ustr-ref ustra-fl 5))))
666
 
   (assert-error (lambda ()
667
 
                   (uim '(ustr-ref ustra-fl -1))))
668
 
   ;; former-str
669
 
   (assert-true  (uim-bool '(eq? (ustr-ref ustra-f 4)
670
 
                                 (nthcdr 0 (ustr-former ustra-f)))))
671
 
   (assert-error (lambda ()
672
 
                   (uim '(ustr-ref ustra-f 5))))
673
 
   ;; latter-str
674
 
   (assert-true  (uim-bool '(eq? (ustr-ref ustra-l 0)
675
 
                                 (nthcdr 0 (ustr-latter ustra-l))))))
676
 
 
677
 
  ("test ustr-append!"
678
 
   ;; former-latter
679
 
   (assert-equal '("ん" "ン" "ン")
680
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
681
 
   (assert-equal 5
682
 
                 (uim '(ustr-length ustrj-fl)))
683
 
   (assert-equal 3
684
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
685
 
   (uim '(ustr-append! ustrj-fl '(("んー" "ンー" "ンー") ("か" "カ" "カ")
686
 
                                  ("よ" "ヨ" "ヨ"))))
687
 
   (assert-equal '("ん" "ン" "ン")
688
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
689
 
   (assert-equal 8
690
 
                 (uim '(ustr-length ustrj-fl)))
691
 
   (assert-equal 3
692
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
693
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
694
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
695
 
                   ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
696
 
                 (uim '(ustr-whole-seq ustrj-fl)))
697
 
   ;; former
698
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
699
 
                 (uim '(ustr-cursor-backside ustrj-f)))
700
 
   (assert-equal 5
701
 
                 (uim '(ustr-length ustrj-f)))
702
 
   (assert-equal 5
703
 
                 (uim '(ustr-cursor-pos ustrj-f)))
704
 
   (uim '(ustr-append! ustrj-f '(("んー" "ンー" "ンー") ("か" "カ" "カ")
705
 
                                 ("よ" "ヨ" "ヨ"))))
706
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
707
 
                 (uim '(ustr-cursor-backside ustrj-f)))
708
 
   (assert-equal 8
709
 
                 (uim '(ustr-length ustrj-f)))
710
 
   (assert-equal 5
711
 
                 (uim '(ustr-cursor-pos ustrj-f)))
712
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
713
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
714
 
                   ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
715
 
                 (uim '(ustr-whole-seq ustrj-f)))
716
 
   ;; latter
717
 
   (assert-error (lambda ()
718
 
                   (uim '(ustr-cursor-backside ustrj-l))))
719
 
   (assert-equal 5
720
 
                 (uim '(ustr-length ustrj-l)))
721
 
   (assert-equal 0
722
 
                 (uim '(ustr-cursor-pos ustrj-l)))
723
 
   (uim '(ustr-append! ustrj-l '(("んー" "ンー" "ンー") ("か" "カ" "カ")
724
 
                                 ("よ" "ヨ" "ヨ"))))
725
 
   (assert-error (lambda ()
726
 
                   (uim '(ustr-cursor-backside ustrj-l))))
727
 
   (assert-equal 8
728
 
                 (uim '(ustr-length ustrj-l)))
729
 
   (assert-equal 0
730
 
                 (uim '(ustr-cursor-pos ustrj-l)))
731
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
732
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
733
 
                   ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
734
 
                 (uim '(ustr-whole-seq ustrj-l)))
735
 
   ;; empty
736
 
   (assert-error (lambda ()
737
 
                   (uim '(ustr-cursor-backside ustre))))
738
 
   (assert-equal 0
739
 
                 (uim '(ustr-length ustre)))
740
 
   (assert-equal 0
741
 
                 (uim '(ustr-cursor-pos ustre)))
742
 
   (uim '(ustr-append! ustre '(("んー" "ンー" "ンー") ("か" "カ" "カ")
743
 
                               ("よ" "ヨ" "ヨ"))))
744
 
   (assert-error (lambda ()
745
 
                   (uim '(ustr-cursor-backside ustre))))
746
 
   (assert-equal 3
747
 
                 (uim '(ustr-length ustre)))
748
 
   (assert-equal 0
749
 
                 (uim '(ustr-cursor-pos ustre)))
750
 
   (assert-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
751
 
                 (uim '(ustr-whole-seq ustre))))
752
 
 
753
 
  ("test ustr-append! #2"
754
 
   ;; former-latter
755
 
   (assert-equal '("ん" "ン" "ン")
756
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
757
 
   (assert-equal 5
758
 
                 (uim '(ustr-length ustrj-fl)))
759
 
   (assert-equal 3
760
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
761
 
   (uim '(ustr-append! ustrj-fl ()))
762
 
   (assert-equal '("ん" "ン" "ン")
763
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
764
 
   (assert-equal 5
765
 
                 (uim '(ustr-length ustrj-fl)))
766
 
   (assert-equal 3
767
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
768
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
769
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
770
 
                 (uim '(ustr-whole-seq ustrj-fl)))
771
 
   ;; former
772
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
773
 
                 (uim '(ustr-cursor-backside ustrj-f)))
774
 
   (assert-equal 5
775
 
                 (uim '(ustr-length ustrj-f)))
776
 
   (assert-equal 5
777
 
                 (uim '(ustr-cursor-pos ustrj-f)))
778
 
   (uim '(ustr-append! ustrj-f ()))
779
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
780
 
                 (uim '(ustr-cursor-backside ustrj-f)))
781
 
   (assert-equal 5
782
 
                 (uim '(ustr-length ustrj-f)))
783
 
   (assert-equal 5
784
 
                 (uim '(ustr-cursor-pos ustrj-f)))
785
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
786
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
787
 
                 (uim '(ustr-whole-seq ustrj-f)))
788
 
   ;; latter
789
 
   (assert-error (lambda ()
790
 
                   (uim '(ustr-cursor-backside ustrj-l))))
791
 
   (assert-equal 5
792
 
                 (uim '(ustr-length ustrj-l)))
793
 
   (assert-equal 0
794
 
                 (uim '(ustr-cursor-pos ustrj-l)))
795
 
   (uim '(ustr-append! ustrj-l ()))
796
 
   (assert-error (lambda ()
797
 
                   (uim '(ustr-cursor-backside ustrj-l))))
798
 
   (assert-equal 5
799
 
                 (uim '(ustr-length ustrj-l)))
800
 
   (assert-equal 0
801
 
                 (uim '(ustr-cursor-pos ustrj-l)))
802
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
803
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
804
 
                 (uim '(ustr-whole-seq ustrj-l)))
805
 
   ;; empty
806
 
   (assert-error (lambda ()
807
 
                   (uim '(ustr-cursor-backside ustre))))
808
 
   (assert-equal 0
809
 
                 (uim '(ustr-length ustre)))
810
 
   (assert-equal 0
811
 
                 (uim '(ustr-cursor-pos ustre)))
812
 
   (uim '(ustr-append! ustre ()))
813
 
   (assert-error (lambda ()
814
 
                   (uim '(ustr-cursor-backside ustre))))
815
 
   (assert-equal 0
816
 
                 (uim '(ustr-length ustre)))
817
 
   (assert-equal 0
818
 
                 (uim '(ustr-cursor-pos ustre))))
819
 
 
820
 
  ("test ustr-prepend!"
821
 
   ;; former-latter
822
 
   (assert-equal '("ん" "ン" "ン")
823
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
824
 
   (assert-equal 5
825
 
                 (uim '(ustr-length ustrj-fl)))
826
 
   (assert-equal 3
827
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
828
 
   (uim '(ustr-prepend! ustrj-fl '(("んー" "ンー" "ンー") ("か" "カ" "カ")
829
 
                                   ("よ" "ヨ" "ヨ"))))
830
 
   (assert-equal '("ん" "ン" "ン")
831
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
832
 
   (assert-equal 8
833
 
                 (uim '(ustr-length ustrj-fl)))
834
 
   (assert-equal 6
835
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
836
 
   (assert-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
837
 
                   ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
838
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
839
 
                 (uim '(ustr-whole-seq ustrj-fl)))
840
 
   ;; former
841
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
842
 
                 (uim '(ustr-cursor-backside ustrj-f)))
843
 
   (assert-equal 5
844
 
                 (uim '(ustr-length ustrj-f)))
845
 
   (assert-equal 5
846
 
                 (uim '(ustr-cursor-pos ustrj-f)))
847
 
   (uim '(ustr-prepend! ustrj-f '(("んー" "ンー" "ンー") ("か" "カ" "カ")
848
 
                                  ("よ" "ヨ" "ヨ"))))
849
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
850
 
                 (uim '(ustr-cursor-backside ustrj-f)))
851
 
   (assert-equal 8
852
 
                 (uim '(ustr-length ustrj-f)))
853
 
   (assert-equal 8
854
 
                 (uim '(ustr-cursor-pos ustrj-f)))
855
 
   (assert-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
856
 
                   ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
857
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
858
 
                 (uim '(ustr-whole-seq ustrj-f)))
859
 
   ;; latter
860
 
   (assert-error (lambda ()
861
 
                   (uim '(ustr-cursor-backside ustrj-l))))
862
 
   (assert-equal 5
863
 
                 (uim '(ustr-length ustrj-l)))
864
 
   (assert-equal 0
865
 
                 (uim '(ustr-cursor-pos ustrj-l)))
866
 
   (uim '(ustr-prepend! ustrj-l '(("んー" "ンー" "ンー") ("か" "カ" "カ")
867
 
                                  ("よ" "ヨ" "ヨ"))))
868
 
   (assert-equal '("よ" "ヨ" "ヨ")
869
 
                 (uim '(ustr-cursor-backside ustrj-l)))
870
 
   (assert-equal 8
871
 
                 (uim '(ustr-length ustrj-l)))
872
 
   (assert-equal 3
873
 
                 (uim '(ustr-cursor-pos ustrj-l)))
874
 
   (assert-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
875
 
                   ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
876
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
877
 
                 (uim '(ustr-whole-seq ustrj-l)))
878
 
   ;; empty
879
 
   (assert-error (lambda ()
880
 
                   (uim '(ustr-cursor-backside ustre))))
881
 
   (assert-equal 0
882
 
                 (uim '(ustr-length ustre)))
883
 
   (assert-equal 0
884
 
                 (uim '(ustr-cursor-pos ustre)))
885
 
   (uim '(ustr-prepend! ustre '(("んー" "ンー" "ンー") ("か" "カ" "カ")
886
 
                                ("よ" "ヨ" "ヨ"))))
887
 
   (assert-equal '("よ" "ヨ" "ヨ")
888
 
                 (uim '(ustr-cursor-backside ustre)))
889
 
   (assert-equal 3
890
 
                 (uim '(ustr-length ustre)))
891
 
   (assert-equal 3
892
 
                 (uim '(ustr-cursor-pos ustre)))
893
 
   (assert-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
894
 
                 (uim '(ustr-whole-seq ustre))))
895
 
 
896
 
  ("test ustr-prepend! #2"
897
 
   ;; former-latter
898
 
   (assert-equal '("ん" "ン" "ン")
899
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
900
 
   (assert-equal 5
901
 
                 (uim '(ustr-length ustrj-fl)))
902
 
   (assert-equal 3
903
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
904
 
   (uim '(ustr-prepend! ustrj-fl ()))
905
 
   (assert-equal '("ん" "ン" "ン")
906
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
907
 
   (assert-equal 5
908
 
                 (uim '(ustr-length ustrj-fl)))
909
 
   (assert-equal 3
910
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
911
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
912
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
913
 
                 (uim '(ustr-whole-seq ustrj-fl)))
914
 
   ;; former
915
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
916
 
                 (uim '(ustr-cursor-backside ustrj-f)))
917
 
   (assert-equal 5
918
 
                 (uim '(ustr-length ustrj-f)))
919
 
   (assert-equal 5
920
 
                 (uim '(ustr-cursor-pos ustrj-f)))
921
 
   (uim '(ustr-prepend! ustrj-f ()))
922
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
923
 
                 (uim '(ustr-cursor-backside ustrj-f)))
924
 
   (assert-equal 5
925
 
                 (uim '(ustr-length ustrj-f)))
926
 
   (assert-equal 5
927
 
                 (uim '(ustr-cursor-pos ustrj-f)))
928
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
929
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
930
 
                 (uim '(ustr-whole-seq ustrj-f)))
931
 
   ;; latter
932
 
   (assert-error (lambda ()
933
 
                   (uim '(ustr-cursor-backside ustrj-l))))
934
 
   (assert-equal 5
935
 
                 (uim '(ustr-length ustrj-l)))
936
 
   (assert-equal 0
937
 
                 (uim '(ustr-cursor-pos ustrj-l)))
938
 
   (uim '(ustr-prepend! ustrj-l ()))
939
 
   (assert-error (lambda ()
940
 
                   (uim '(ustr-cursor-backside ustrj-l))))
941
 
   (assert-equal 5
942
 
                 (uim '(ustr-length ustrj-l)))
943
 
   (assert-equal 0
944
 
                 (uim '(ustr-cursor-pos ustrj-l)))
945
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
946
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
947
 
                 (uim '(ustr-whole-seq ustrj-l)))
948
 
   ;; empty
949
 
   (assert-error (lambda ()
950
 
                   (uim '(ustr-cursor-backside ustre))))
951
 
   (assert-equal 0
952
 
                 (uim '(ustr-length ustre)))
953
 
   (assert-equal 0
954
 
                 (uim '(ustr-cursor-pos ustre)))
955
 
   (uim '(ustr-prepend! ustre ()))
956
 
   (assert-error (lambda ()
957
 
                   (uim '(ustr-cursor-backside ustre))))
958
 
   (assert-equal 0
959
 
                 (uim '(ustr-length ustre)))
960
 
   (assert-equal 0
961
 
                 (uim '(ustr-cursor-pos ustre))))
962
 
 
963
 
  ("test map-ustr-whole"
964
 
   ;; former-latter
965
 
   (assert-equal '("h" "e" "l" "l" "o")
966
 
                 (uim '(map-ustr-whole car ustr-fl)))
967
 
   (assert-equal '("H" "E" "L" "L" "O")
968
 
                 (uim '(map-ustr-whole cdr ustr-fl)))
969
 
   (assert-equal '("に" "ほ" "ん" "ご" "じゃ")
970
 
                 (uim '(map-ustr-whole ja-kana-hiragana ustrj-fl)))
971
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
972
 
                 (uim '(map-ustr-whole ja-kana-katakana ustrj-fl)))
973
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
974
 
                 (uim '(map-ustr-whole ja-kana-hankaku ustrj-fl)))
975
 
   ;; former
976
 
   (assert-equal '("h" "e" "l" "l" "o")
977
 
                 (uim '(map-ustr-whole car ustr-f)))
978
 
   (assert-equal '("H" "E" "L" "L" "O")
979
 
                 (uim '(map-ustr-whole cdr ustr-f)))
980
 
   (assert-equal '("に" "ほ" "ん" "ご" "じゃ")
981
 
                 (uim '(map-ustr-whole ja-kana-hiragana ustrj-f)))
982
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
983
 
                 (uim '(map-ustr-whole ja-kana-katakana ustrj-f)))
984
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
985
 
                 (uim '(map-ustr-whole ja-kana-hankaku ustrj-f)))
986
 
   ;; latter
987
 
   (assert-equal '("h" "e" "l" "l" "o")
988
 
                 (uim '(map-ustr-whole car ustr-l)))
989
 
   (assert-equal '("H" "E" "L" "L" "O")
990
 
                 (uim '(map-ustr-whole cdr ustr-l)))
991
 
   (assert-equal '("に" "ほ" "ん" "ご" "じゃ")
992
 
                 (uim '(map-ustr-whole ja-kana-hiragana ustrj-l)))
993
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
994
 
                 (uim '(map-ustr-whole ja-kana-katakana ustrj-l)))
995
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
996
 
                 (uim '(map-ustr-whole ja-kana-hankaku ustrj-l)))
997
 
   ;; empty
998
 
   (assert-equal ()
999
 
                 (uim '(map-ustr-whole cdr ustre))))
1000
 
 
1001
 
  ("test map-ustr-former"
1002
 
   ;; former-latter
1003
 
   (assert-equal '("h" "e" "l")
1004
 
                 (uim '(map-ustr-former car ustr-fl)))
1005
 
   (assert-equal '("H" "E" "L")
1006
 
                 (uim '(map-ustr-former cdr ustr-fl)))
1007
 
   (assert-equal '("に" "ほ" "ん")
1008
 
                 (uim '(map-ustr-former ja-kana-hiragana ustrj-fl)))
1009
 
   (assert-equal '("ニ" "ホ" "ン")
1010
 
                 (uim '(map-ustr-former ja-kana-katakana ustrj-fl)))
1011
 
   (assert-equal '("ニ" "ホ" "ン")
1012
 
                 (uim '(map-ustr-former ja-kana-hankaku ustrj-fl)))
1013
 
   ;; former
1014
 
   (assert-equal '("h" "e" "l" "l" "o")
1015
 
                 (uim '(map-ustr-former car ustr-f)))
1016
 
   (assert-equal '("H" "E" "L" "L" "O")
1017
 
                 (uim '(map-ustr-former cdr ustr-f)))
1018
 
   (assert-equal '("に" "ほ" "ん" "ご" "じゃ")
1019
 
                 (uim '(map-ustr-former ja-kana-hiragana ustrj-f)))
1020
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
1021
 
                 (uim '(map-ustr-former ja-kana-katakana ustrj-f)))
1022
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
1023
 
                 (uim '(map-ustr-former ja-kana-hankaku ustrj-f)))
1024
 
   ;; latter
1025
 
   (assert-equal ()
1026
 
                 (uim '(map-ustr-former car ustr-l)))
1027
 
   (assert-equal ()
1028
 
                 (uim '(map-ustr-former cdr ustr-l)))
1029
 
   (assert-equal ()
1030
 
                 (uim '(map-ustr-former ja-kana-hiragana ustrj-l)))
1031
 
   (assert-equal ()
1032
 
                 (uim '(map-ustr-former ja-kana-katakana ustrj-l)))
1033
 
   (assert-equal ()
1034
 
                 (uim '(map-ustr-former ja-kana-hankaku ustrj-l)))
1035
 
   ;; empty
1036
 
   (assert-equal ()
1037
 
                 (uim '(map-ustr-former cdr ustre))))
1038
 
 
1039
 
  ("test map-ustr-latter"
1040
 
   ;; former-latter
1041
 
   (assert-equal '("l" "o")
1042
 
                 (uim '(map-ustr-latter car ustr-fl)))
1043
 
   (assert-equal '("L" "O")
1044
 
                 (uim '(map-ustr-latter cdr ustr-fl)))
1045
 
   (assert-equal '("ご" "じゃ")
1046
 
                 (uim '(map-ustr-latter ja-kana-hiragana ustrj-fl)))
1047
 
   (assert-equal '("ゴ" "ジャ")
1048
 
                 (uim '(map-ustr-latter ja-kana-katakana ustrj-fl)))
1049
 
   (assert-equal '("ゴ" "ジャ")
1050
 
                 (uim '(map-ustr-latter ja-kana-hankaku ustrj-fl)))
1051
 
   ;; former
1052
 
   (assert-equal ()
1053
 
                 (uim '(map-ustr-latter car ustr-f)))
1054
 
   (assert-equal ()
1055
 
                 (uim '(map-ustr-latter cdr ustr-f)))
1056
 
   (assert-equal ()
1057
 
                 (uim '(map-ustr-latter ja-kana-hiragana ustrj-f)))
1058
 
   (assert-equal ()
1059
 
                 (uim '(map-ustr-latter ja-kana-katakana ustrj-f)))
1060
 
   (assert-equal ()
1061
 
                 (uim '(map-ustr-latter ja-kana-hankaku ustrj-f)))
1062
 
   ;; latter
1063
 
   (assert-equal '("h" "e" "l" "l" "o")
1064
 
                 (uim '(map-ustr-latter car ustr-l)))
1065
 
   (assert-equal '("H" "E" "L" "L" "O")
1066
 
                 (uim '(map-ustr-latter cdr ustr-l)))
1067
 
   (assert-equal '("に" "ほ" "ん" "ご" "じゃ")
1068
 
                 (uim '(map-ustr-latter ja-kana-hiragana ustrj-l)))
1069
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
1070
 
                 (uim '(map-ustr-latter ja-kana-katakana ustrj-l)))
1071
 
   (assert-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
1072
 
                 (uim '(map-ustr-latter ja-kana-hankaku ustrj-l)))
1073
 
   ;; empty
1074
 
   (assert-equal ()
1075
 
                 (uim '(map-ustr-latter cdr ustre))))
1076
 
 
1077
 
  ("test append-map-ustr-whole"
1078
 
   (assert-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
1079
 
                 (uim '(append-map-ustr-whole cdr ustrj-fl)))
1080
 
   (assert-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
1081
 
                 (uim '(append-map-ustr-whole cdr ustrj-f)))
1082
 
   (assert-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
1083
 
                 (uim '(append-map-ustr-whole cdr ustrj-l)))
1084
 
   (assert-equal ()
1085
 
                 (uim '(append-map-ustr-whole cdr ustre))))
1086
 
 
1087
 
  ("test append-map-ustr-former"
1088
 
   (assert-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン")
1089
 
                 (uim '(append-map-ustr-former cdr ustrj-fl)))
1090
 
   (assert-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
1091
 
                 (uim '(append-map-ustr-former cdr ustrj-f)))
1092
 
   (assert-equal ()
1093
 
                 (uim '(append-map-ustr-former cdr ustrj-l)))
1094
 
   (assert-equal ()
1095
 
                 (uim '(append-map-ustr-former cdr ustre))))
1096
 
 
1097
 
  ("test append-map-ustr-latter"
1098
 
   (assert-equal '("ゴ" "ゴ" "ジャ" "ジャ")
1099
 
                 (uim '(append-map-ustr-latter cdr ustrj-fl)))
1100
 
   (assert-equal ()
1101
 
                 (uim '(append-map-ustr-latter cdr ustrj-f)))
1102
 
   (assert-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
1103
 
                 (uim '(append-map-ustr-latter cdr ustrj-l)))
1104
 
   (assert-equal ()
1105
 
                 (uim '(append-map-ustr-latter cdr ustre))))
1106
 
 
1107
 
  ("test string-append-map-ustr-whole"
1108
 
   ;; former-latter
1109
 
   (assert-equal "hello"
1110
 
                 (uim '(string-append-map-ustr-whole car ustr-fl)))
1111
 
   (assert-equal "HELLO"
1112
 
                 (uim '(string-append-map-ustr-whole cdr ustr-fl)))
1113
 
   (assert-equal "にほんごじゃ"
1114
 
                 (uim '(string-append-map-ustr-whole ja-kana-hiragana
1115
 
                                                     ustrj-fl)))
1116
 
   (assert-equal "ニホンゴジャ"
1117
 
                 (uim '(string-append-map-ustr-whole ja-kana-katakana
1118
 
                                                     ustrj-fl)))
1119
 
   (assert-equal "ニホンゴジャ"
1120
 
                 (uim '(string-append-map-ustr-whole ja-kana-hankaku
1121
 
                                                     ustrj-fl)))
1122
 
   ;; former
1123
 
   (assert-equal "hello"
1124
 
                 (uim '(string-append-map-ustr-whole car ustr-f)))
1125
 
   (assert-equal "HELLO"
1126
 
                 (uim '(string-append-map-ustr-whole cdr ustr-f)))
1127
 
   (assert-equal "にほんごじゃ"
1128
 
                 (uim '(string-append-map-ustr-whole ja-kana-hiragana
1129
 
                                                     ustrj-f)))
1130
 
   (assert-equal "ニホンゴジャ"
1131
 
                 (uim '(string-append-map-ustr-whole ja-kana-katakana
1132
 
                                                     ustrj-f)))
1133
 
   (assert-equal "ニホンゴジャ"
1134
 
                 (uim '(string-append-map-ustr-whole ja-kana-hankaku
1135
 
                                                     ustrj-f)))
1136
 
   ;; latter
1137
 
   (assert-equal "hello"
1138
 
                 (uim '(string-append-map-ustr-whole car ustr-l)))
1139
 
   (assert-equal "HELLO"
1140
 
                 (uim '(string-append-map-ustr-whole cdr ustr-l)))
1141
 
   (assert-equal "にほんごじゃ"
1142
 
                 (uim '(string-append-map-ustr-whole ja-kana-hiragana
1143
 
                                                     ustrj-l)))
1144
 
   (assert-equal "ニホンゴジャ"
1145
 
                 (uim '(string-append-map-ustr-whole ja-kana-katakana
1146
 
                                                     ustrj-l)))
1147
 
   (assert-equal "ニホンゴジャ"
1148
 
                 (uim '(string-append-map-ustr-whole ja-kana-hankaku
1149
 
                                                     ustrj-l)))
1150
 
   ;; empty
1151
 
   (assert-equal ""
1152
 
                 (uim '(string-append-map-ustr-whole cdr ustre))))
1153
 
 
1154
 
  ("test string-append-map-ustr-former"
1155
 
   ;; former-latter
1156
 
   (assert-equal "hel"
1157
 
                 (uim '(string-append-map-ustr-former car ustr-fl)))
1158
 
   (assert-equal "HEL"
1159
 
                 (uim '(string-append-map-ustr-former cdr ustr-fl)))
1160
 
   (assert-equal "にほん"
1161
 
                 (uim '(string-append-map-ustr-former ja-kana-hiragana
1162
 
                                                      ustrj-fl)))
1163
 
   (assert-equal "ニホン"
1164
 
                 (uim '(string-append-map-ustr-former ja-kana-katakana
1165
 
                                                      ustrj-fl)))
1166
 
   (assert-equal "ニホン"
1167
 
                 (uim '(string-append-map-ustr-former ja-kana-hankaku
1168
 
                                                      ustrj-fl)))
1169
 
   ;; former
1170
 
   (assert-equal "hello"
1171
 
                 (uim '(string-append-map-ustr-former car ustr-f)))
1172
 
   (assert-equal "HELLO"
1173
 
                 (uim '(string-append-map-ustr-former cdr ustr-f)))
1174
 
   (assert-equal "にほんごじゃ"
1175
 
                 (uim '(string-append-map-ustr-former ja-kana-hiragana
1176
 
                                                      ustrj-f)))
1177
 
   (assert-equal "ニホンゴジャ"
1178
 
                 (uim '(string-append-map-ustr-former ja-kana-katakana
1179
 
                                                      ustrj-f)))
1180
 
   (assert-equal "ニホンゴジャ"
1181
 
                 (uim '(string-append-map-ustr-former ja-kana-hankaku
1182
 
                                                      ustrj-f)))
1183
 
   ;; latter
1184
 
   (assert-equal ""
1185
 
                 (uim '(string-append-map-ustr-former car ustr-l)))
1186
 
   (assert-equal ""
1187
 
                 (uim '(string-append-map-ustr-former cdr ustr-l)))
1188
 
   (assert-equal ""
1189
 
                 (uim '(string-append-map-ustr-former ja-kana-hiragana
1190
 
                                                      ustrj-l)))
1191
 
   (assert-equal ""
1192
 
                 (uim '(string-append-map-ustr-former ja-kana-katakana
1193
 
                                                      ustrj-l)))
1194
 
   (assert-equal ""
1195
 
                 (uim '(string-append-map-ustr-former ja-kana-hankaku
1196
 
                                                      ustrj-l)))
1197
 
   ;; empty
1198
 
   (assert-equal ""
1199
 
                 (uim '(string-append-map-ustr-former cdr ustre))))
1200
 
 
1201
 
  ("test string-append-map-ustr-latter"
1202
 
   ;; former-latter
1203
 
   (assert-equal "lo"
1204
 
                 (uim '(string-append-map-ustr-latter car ustr-fl)))
1205
 
   (assert-equal "LO"
1206
 
                 (uim '(string-append-map-ustr-latter cdr ustr-fl)))
1207
 
   (assert-equal "ごじゃ"
1208
 
                 (uim '(string-append-map-ustr-latter ja-kana-hiragana
1209
 
                                                      ustrj-fl)))
1210
 
   (assert-equal "ゴジャ"
1211
 
                 (uim '(string-append-map-ustr-latter ja-kana-katakana
1212
 
                                                      ustrj-fl)))
1213
 
   (assert-equal "ゴジャ"
1214
 
                 (uim '(string-append-map-ustr-latter ja-kana-hankaku
1215
 
                                                      ustrj-fl)))
1216
 
   ;; former
1217
 
   (assert-equal ""
1218
 
                 (uim '(string-append-map-ustr-latter car ustr-f)))
1219
 
   (assert-equal ""
1220
 
                 (uim '(string-append-map-ustr-latter cdr ustr-f)))
1221
 
   (assert-equal ""
1222
 
                 (uim '(string-append-map-ustr-latter ja-kana-hiragana
1223
 
                                                      ustrj-f)))
1224
 
   (assert-equal ""
1225
 
                 (uim '(string-append-map-ustr-latter ja-kana-katakana
1226
 
                                                      ustrj-f)))
1227
 
   (assert-equal ""
1228
 
                 (uim '(string-append-map-ustr-latter ja-kana-hankaku
1229
 
                                                      ustrj-f)))
1230
 
   ;; latter
1231
 
   (assert-equal "hello"
1232
 
                 (uim '(string-append-map-ustr-latter car ustr-l)))
1233
 
   (assert-equal "HELLO"
1234
 
                 (uim '(string-append-map-ustr-latter cdr ustr-l)))
1235
 
   (assert-equal "にほんごじゃ"
1236
 
                 (uim '(string-append-map-ustr-latter ja-kana-hiragana
1237
 
                                                      ustrj-l)))
1238
 
   (assert-equal "ニホンゴジャ"
1239
 
                 (uim '(string-append-map-ustr-latter ja-kana-katakana
1240
 
                                                      ustrj-l)))
1241
 
   (assert-equal "ニホンゴジャ"
1242
 
                 (uim '(string-append-map-ustr-latter ja-kana-hankaku
1243
 
                                                      ustrj-l)))
1244
 
   ;; empty
1245
 
   (assert-equal ""
1246
 
                 (uim '(string-append-map-ustr-latter cdr ustre))))
1247
 
 
1248
 
  ("test ustr-cursor-at-beginning?"
1249
 
   (assert-false (uim-bool '(ustr-cursor-at-beginning? ustra-fl)))
1250
 
   (assert-false (uim-bool '(ustr-cursor-at-beginning? ustra-f)))
1251
 
   (assert-true  (uim-bool '(ustr-cursor-at-beginning? ustra-l)))
1252
 
   (assert-true  (uim-bool '(ustr-cursor-at-beginning? ustre))))
1253
 
 
1254
 
  ("test ustr-cursor-at-end?"
1255
 
   (assert-false (uim-bool '(ustr-cursor-at-end? ustra-fl)))
1256
 
   (assert-true  (uim-bool '(ustr-cursor-at-end? ustra-f)))
1257
 
   (assert-false (uim-bool '(ustr-cursor-at-end? ustra-l)))
1258
 
   (assert-true  (uim-bool '(ustr-cursor-at-end? ustre))))
1259
 
 
1260
 
  ("test ustr-cursor-pos"
1261
 
   (assert-equal 3
1262
 
                 (uim '(ustr-cursor-pos ustr-fl)))
1263
 
   (assert-equal 5
1264
 
                 (uim '(ustr-cursor-pos ustr-f)))
1265
 
   (assert-equal 0
1266
 
                 (uim '(ustr-cursor-pos ustr-l)))
1267
 
 
1268
 
   (assert-equal 3
1269
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1270
 
   (assert-equal 5
1271
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1272
 
   (assert-equal 0
1273
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1274
 
 
1275
 
   (assert-equal 3
1276
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1277
 
   (assert-equal 5
1278
 
                 (uim '(ustr-cursor-pos ustra-f)))
1279
 
   (assert-equal 0
1280
 
                 (uim '(ustr-cursor-pos ustra-l)))
1281
 
 
1282
 
   (assert-equal 0
1283
 
                 (uim '(ustr-cursor-pos ustre))))
1284
 
 
1285
 
  ("test ustr-set-cursor-pos!"
1286
 
   ;; former-latter
1287
 
   (assert-equal 3
1288
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1289
 
   (assert-true  (uim-bool '(ustr-set-cursor-pos! ustra-fl 0)))
1290
 
   (assert-equal 0
1291
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1292
 
   (assert-true  (uim-bool '(ustr-set-cursor-pos! ustra-fl 5)))
1293
 
   (assert-equal 5
1294
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1295
 
   (assert-true  (uim-bool '(ustr-set-cursor-pos! ustra-fl 2)))
1296
 
   (assert-equal 2
1297
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1298
 
   (assert-false (uim-bool '(ustr-set-cursor-pos! ustra-fl -1)))
1299
 
   (assert-false (uim-bool '(ustr-set-cursor-pos! ustra-fl 6)))
1300
 
   ;; empty
1301
 
   (assert-equal 0
1302
 
                 (uim '(ustr-cursor-pos ustre)))
1303
 
   (assert-true  (uim-bool '(ustr-set-cursor-pos! ustra-fl 0)))
1304
 
   (assert-equal 0
1305
 
                 (uim '(ustr-cursor-pos ustre)))
1306
 
   (assert-false (uim-bool '(ustr-set-cursor-pos! ustre -1)))
1307
 
   (assert-false (uim-bool '(ustr-set-cursor-pos! ustre 1))))
1308
 
 
1309
 
  ("test ustr-cursor-move!"
1310
 
   (assert-equal 3
1311
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1312
 
   (assert-false (uim-bool '(ustr-cursor-move! ustra-fl -4)))
1313
 
   (assert-equal 3
1314
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1315
 
 
1316
 
   (assert-false (uim-bool '(ustr-cursor-move! ustra-fl 3)))
1317
 
   (assert-equal 3
1318
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1319
 
 
1320
 
   (assert-true  (uim-bool '(ustr-cursor-move! ustra-fl 2)))
1321
 
   (assert-equal 5
1322
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1323
 
 
1324
 
   (assert-true  (uim-bool '(ustr-cursor-move! ustra-fl -3)))
1325
 
   (assert-equal 2
1326
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1327
 
 
1328
 
   (assert-true  (uim-bool '(ustr-cursor-move! ustra-fl 1)))
1329
 
   (assert-equal 3
1330
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1331
 
 
1332
 
   (assert-true  (uim-bool '(ustr-cursor-move! ustra-fl 0)))
1333
 
   (assert-equal 3
1334
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1335
 
 
1336
 
   (assert-true  (uim-bool '(ustr-cursor-move! ustra-fl -3)))
1337
 
   (assert-equal 0
1338
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1339
 
 
1340
 
   (assert-equal 0
1341
 
                 (uim '(ustr-cursor-pos ustre)))
1342
 
   (assert-true  (uim-bool '(ustr-cursor-move! ustra-fl 0)))
1343
 
   (assert-equal 0
1344
 
                 (uim '(ustr-cursor-pos ustre)))
1345
 
 
1346
 
   (assert-false (uim-bool '(ustr-cursor-move! ustre -1)))
1347
 
   (assert-false (uim-bool '(ustr-cursor-move! ustre 1))))
1348
 
 
1349
 
  ("test ustr-cursor-move-backward!"
1350
 
   (assert-equal 3
1351
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1352
 
 
1353
 
   (uim '(ustr-cursor-move-backward! ustra-fl))
1354
 
   (assert-equal 2
1355
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1356
 
 
1357
 
   (uim '(ustr-cursor-move-backward! ustra-fl))
1358
 
   (assert-equal 1
1359
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1360
 
 
1361
 
   (uim '(ustr-cursor-move-backward! ustra-fl))
1362
 
   (assert-equal 0
1363
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1364
 
 
1365
 
   (uim '(ustr-cursor-move-backward! ustra-fl))
1366
 
   (assert-equal 0
1367
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1368
 
   ;; start from end of string
1369
 
   (assert-equal 5
1370
 
                 (uim '(ustr-cursor-pos ustra-f)))
1371
 
   (uim '(ustr-cursor-move-backward! ustra-f))
1372
 
   (assert-equal 4
1373
 
                 (uim '(ustr-cursor-pos ustra-f))))
1374
 
 
1375
 
  ("test ustr-cursor-move-forward!"
1376
 
   (assert-equal 3
1377
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1378
 
 
1379
 
   (uim '(ustr-cursor-move-forward! ustra-fl))
1380
 
   (assert-equal 4
1381
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1382
 
 
1383
 
   (uim '(ustr-cursor-move-forward! ustra-fl))
1384
 
   (assert-equal 5
1385
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1386
 
 
1387
 
   (uim '(ustr-cursor-move-forward! ustra-fl))
1388
 
   (assert-equal 5
1389
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1390
 
 
1391
 
   ;; start from beginning of string
1392
 
   (assert-equal 0
1393
 
                 (uim '(ustr-cursor-pos ustra-l)))
1394
 
   (uim '(ustr-cursor-move-forward! ustra-l))
1395
 
   (assert-equal 1
1396
 
                 (uim '(ustr-cursor-pos ustra-l))))
1397
 
 
1398
 
  ("test ustr-cursor-move-beginning!"
1399
 
   (assert-equal 3
1400
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1401
 
 
1402
 
   (uim '(ustr-cursor-move-beginning! ustra-fl))
1403
 
   (assert-equal 0
1404
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1405
 
 
1406
 
   (uim '(ustr-cursor-move-beginning! ustra-fl))
1407
 
   (assert-equal 0
1408
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1409
 
 
1410
 
   ;; start from end of string
1411
 
   (assert-equal 5
1412
 
                 (uim '(ustr-cursor-pos ustra-f)))
1413
 
   (uim '(ustr-cursor-move-beginning! ustra-f))
1414
 
   (assert-equal 0
1415
 
                 (uim '(ustr-cursor-pos ustra-f))))
1416
 
 
1417
 
  ("test ustr-cursor-move-end!"
1418
 
   (assert-equal 3
1419
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1420
 
 
1421
 
   (uim '(ustr-cursor-move-end! ustra-fl))
1422
 
   (assert-equal 5
1423
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1424
 
 
1425
 
   (uim '(ustr-cursor-move-end! ustra-fl))
1426
 
   (assert-equal 5
1427
 
                 (uim '(ustr-cursor-pos ustra-fl)))
1428
 
 
1429
 
   ;; start from beginning of string
1430
 
   (assert-equal 0
1431
 
                 (uim '(ustr-cursor-pos ustra-l)))
1432
 
   (uim '(ustr-cursor-move-end! ustra-l))
1433
 
   (assert-equal 5
1434
 
                 (uim '(ustr-cursor-pos ustra-l))))
1435
 
 
1436
 
  ("test ustr-cursor-frontside"
1437
 
   ;; former-latter
1438
 
   (assert-equal '("l" . "L")
1439
 
                 (uim '(ustr-cursor-frontside ustr-fl)))
1440
 
   (assert-equal '("ご" "ゴ" "ゴ")
1441
 
                 (uim '(ustr-cursor-frontside ustrj-fl)))
1442
 
   (assert-equal "l"
1443
 
                 (uim '(ustr-cursor-frontside ustra-fl)))
1444
 
   ;; former
1445
 
   (assert-error (lambda ()
1446
 
                   (uim '(ustr-cursor-frontside ustr-f))))
1447
 
   (assert-error (lambda ()
1448
 
                   (uim '(ustr-cursor-frontside ustrj-f))))
1449
 
   (assert-error (lambda ()
1450
 
                   (uim '(ustr-cursor-frontside ustra-f))))
1451
 
   ;; latter
1452
 
   (assert-equal '("h" . "H")
1453
 
                 (uim '(ustr-cursor-frontside ustr-l)))
1454
 
   (assert-equal '("に" "ニ" "ニ")
1455
 
                 (uim '(ustr-cursor-frontside ustrj-l)))
1456
 
   (assert-equal "h"
1457
 
                 (uim '(ustr-cursor-frontside ustra-l)))
1458
 
   ;; empty
1459
 
   (assert-error (lambda ()
1460
 
                   (uim '(ustr-cursor-frontside ustre)))))
1461
 
 
1462
 
  ("test ustr-cursor-backside"
1463
 
   ;; former-latter
1464
 
   (assert-equal '("l" . "L")
1465
 
                 (uim '(ustr-cursor-backside ustr-fl)))
1466
 
   (assert-equal '("ん" "ン" "ン")
1467
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1468
 
   (assert-equal "l"
1469
 
                 (uim '(ustr-cursor-backside ustra-fl)))
1470
 
   ;; former
1471
 
   (assert-equal '("o" . "O")
1472
 
                 (uim '(ustr-cursor-backside ustr-f)))
1473
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1474
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1475
 
   (assert-equal "o"
1476
 
                 (uim '(ustr-cursor-backside ustra-f)))
1477
 
   ;; latter
1478
 
   (assert-error (lambda ()
1479
 
                   (uim '(ustr-cursor-backside ustr-l))))
1480
 
   (assert-error (lambda ()
1481
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1482
 
   (assert-error (lambda ()
1483
 
                   (uim '(ustr-cursor-backside ustra-l))))
1484
 
   ;; empty
1485
 
   (assert-error (lambda ()
1486
 
                   (uim '(ustr-cursor-backside ustre)))))
1487
 
 
1488
 
  ("test ustr-cursor-delete-frontside!"
1489
 
   ;; former-latter
1490
 
   (assert-equal '("ご" "ゴ" "ゴ")
1491
 
                 (uim '(ustr-cursor-frontside ustrj-fl)))
1492
 
   (assert-equal 5
1493
 
                 (uim '(ustr-length ustrj-fl)))
1494
 
   (assert-equal 3
1495
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1496
 
   (assert-true  (uim-bool '(ustr-cursor-delete-frontside! ustrj-fl)))
1497
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1498
 
                 (uim '(ustr-cursor-frontside ustrj-fl)))
1499
 
   (assert-equal 4
1500
 
                 (uim '(ustr-length ustrj-fl)))
1501
 
   (assert-equal 3
1502
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1503
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1504
 
                   ("じゃ" "ジャ" "ジャ"))
1505
 
                 (uim '(ustr-whole-seq ustrj-fl)))
1506
 
   ;; former
1507
 
   (assert-error (lambda ()
1508
 
                   (uim '(ustr-cursor-frontside ustrj-f))))
1509
 
   (assert-equal 5
1510
 
                 (uim '(ustr-length ustrj-f)))
1511
 
   (assert-equal 5
1512
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1513
 
   (assert-false (uim-bool '(ustr-cursor-delete-frontside! ustrj-f)))
1514
 
   (assert-error (lambda ()
1515
 
                   (uim '(ustr-cursor-frontside ustrj-f))))
1516
 
   (assert-equal 5
1517
 
                 (uim '(ustr-length ustrj-f)))
1518
 
   (assert-equal 5
1519
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1520
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1521
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1522
 
                 (uim '(ustr-whole-seq ustrj-f)))
1523
 
   ;; latter
1524
 
   (assert-equal '("に" "ニ" "ニ")
1525
 
                 (uim '(ustr-cursor-frontside ustrj-l)))
1526
 
   (assert-equal 5
1527
 
                 (uim '(ustr-length ustrj-l)))
1528
 
   (assert-equal 0
1529
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1530
 
   (assert-true  (uim-bool '(ustr-cursor-delete-frontside! ustrj-l)))
1531
 
   (assert-equal '("ほ" "ホ" "ホ")
1532
 
                 (uim '(ustr-cursor-frontside ustrj-l)))
1533
 
   (assert-equal 4
1534
 
                 (uim '(ustr-length ustrj-l)))
1535
 
   (assert-equal 0
1536
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1537
 
   (assert-equal '(("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1538
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1539
 
                 (uim '(ustr-whole-seq ustrj-l)))
1540
 
   ;; empty
1541
 
   (assert-error (lambda ()
1542
 
                   (uim '(ustr-cursor-frontside ustre))))
1543
 
   (assert-equal 0
1544
 
                 (uim '(ustr-length ustre)))
1545
 
   (assert-equal 0
1546
 
                 (uim '(ustr-cursor-pos ustre)))
1547
 
   (assert-false (uim-bool '(ustr-cursor-delete-frontside! ustre)))
1548
 
   (assert-error (lambda ()
1549
 
                   (uim '(ustr-cursor-frontside ustre))))
1550
 
   (assert-equal 0
1551
 
                 (uim '(ustr-length ustre)))
1552
 
   (assert-equal 0
1553
 
                 (uim '(ustr-cursor-pos ustre))))
1554
 
 
1555
 
  ("test ustr-cursor-delete-backside!"
1556
 
   ;; former-latter
1557
 
   (assert-equal '("ん" "ン" "ン")
1558
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1559
 
   (assert-equal 5
1560
 
                 (uim '(ustr-length ustrj-fl)))
1561
 
   (assert-equal 3
1562
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1563
 
   (assert-true  (uim-bool '(ustr-cursor-delete-backside! ustrj-fl)))
1564
 
   (assert-equal '("ほ" "ホ" "ホ")
1565
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1566
 
   (assert-equal 4
1567
 
                 (uim '(ustr-length ustrj-fl)))
1568
 
   (assert-equal 2
1569
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1570
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
1571
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1572
 
                 (uim '(ustr-whole-seq ustrj-fl)))
1573
 
   ;; former
1574
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1575
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1576
 
   (assert-equal 5
1577
 
                 (uim '(ustr-length ustrj-f)))
1578
 
   (assert-equal 5
1579
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1580
 
   (assert-true  (uim-bool '(ustr-cursor-delete-backside! ustrj-f)))
1581
 
   (assert-equal '("ご" "ゴ" "ゴ")
1582
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1583
 
   (assert-equal 4
1584
 
                 (uim '(ustr-length ustrj-f)))
1585
 
   (assert-equal 4
1586
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1587
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1588
 
                   ("ご" "ゴ" "ゴ"))
1589
 
                 (uim '(ustr-whole-seq ustrj-f)))
1590
 
   ;; latter
1591
 
   (assert-error (lambda ()
1592
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1593
 
   (assert-equal 5
1594
 
                 (uim '(ustr-length ustrj-l)))
1595
 
   (assert-equal 0
1596
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1597
 
   (assert-false (uim-bool '(ustr-cursor-delete-backside! ustrj-l)))
1598
 
   (assert-error (lambda ()
1599
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1600
 
   (assert-equal 5
1601
 
                 (uim '(ustr-length ustrj-l)))
1602
 
   (assert-equal 0
1603
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1604
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1605
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1606
 
                 (uim '(ustr-whole-seq ustrj-l)))
1607
 
   ;; empty
1608
 
   (assert-error (lambda ()
1609
 
                   (uim '(ustr-cursor-backside ustre))))
1610
 
   (assert-equal 0
1611
 
                 (uim '(ustr-length ustre)))
1612
 
   (assert-false (uim-bool '(ustr-cursor-delete-backside! ustre)))
1613
 
   (assert-error (lambda ()
1614
 
                   (uim '(ustr-cursor-backside ustre))))
1615
 
   (assert-equal 0
1616
 
                 (uim '(ustr-length ustre))))
1617
 
 
1618
 
  ("test ustr-insert-elem!"
1619
 
   ;; former-latter
1620
 
   (assert-equal '("ん" "ン" "ン")
1621
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1622
 
   (assert-equal 5
1623
 
                 (uim '(ustr-length ustrj-fl)))
1624
 
   (assert-equal 3
1625
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1626
 
   (uim '(ustr-insert-elem! ustrj-fl '("んー" "ンー" "ンー")))
1627
 
   (assert-equal '("んー" "ンー" "ンー")
1628
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1629
 
   (assert-equal 6
1630
 
                 (uim '(ustr-length ustrj-fl)))
1631
 
   (assert-equal 4
1632
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1633
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1634
 
                   ("んー" "ンー" "ンー")
1635
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1636
 
                 (uim '(ustr-whole-seq ustrj-fl)))
1637
 
   ;; former
1638
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1639
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1640
 
   (assert-equal 5
1641
 
                 (uim '(ustr-length ustrj-f)))
1642
 
   (assert-equal 5
1643
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1644
 
   (uim '(ustr-insert-elem! ustrj-f '("んー" "ンー" "ンー")))
1645
 
   (assert-equal '("んー" "ンー" "ンー")
1646
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1647
 
   (assert-equal 6
1648
 
                 (uim '(ustr-length ustrj-f)))
1649
 
   (assert-equal 6
1650
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1651
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1652
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ") ("んー" "ンー" "ンー"))
1653
 
                 (uim '(ustr-whole-seq ustrj-f)))
1654
 
   ;; latter
1655
 
   (assert-error (lambda ()
1656
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1657
 
   (assert-equal 5
1658
 
                 (uim '(ustr-length ustrj-l)))
1659
 
   (assert-equal 0
1660
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1661
 
   (uim '(ustr-insert-elem! ustrj-l '("んー" "ンー" "ンー")))
1662
 
   (assert-equal '("んー" "ンー" "ンー")
1663
 
                 (uim '(ustr-cursor-backside ustrj-l)))
1664
 
   (assert-equal 6
1665
 
                 (uim '(ustr-length ustrj-l)))
1666
 
   (assert-equal 1
1667
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1668
 
   (assert-equal '(("んー" "ンー" "ンー")
1669
 
                   ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1670
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1671
 
                 (uim '(ustr-whole-seq ustrj-l)))
1672
 
   ;; empty
1673
 
   (assert-error (lambda ()
1674
 
                   (uim '(ustr-cursor-backside ustre))))
1675
 
   (assert-equal 0
1676
 
                 (uim '(ustr-length ustre)))
1677
 
   (uim '(ustr-insert-elem! ustre '("んー" "ンー" "ンー")))
1678
 
   (assert-equal '("んー" "ンー" "ンー")
1679
 
                 (uim '(ustr-cursor-backside ustre)))
1680
 
   (assert-equal 1
1681
 
                 (uim '(ustr-length ustre)))
1682
 
   (assert-equal '(("んー" "ンー" "ンー"))
1683
 
                 (uim '(ustr-whole-seq ustre))))
1684
 
 
1685
 
  ("test ustr-cursor-set-frontside!"
1686
 
   ;; former-latter
1687
 
   (assert-equal '("ご" "ゴ" "ゴ")
1688
 
                 (uim '(ustr-cursor-frontside ustrj-fl)))
1689
 
   (assert-equal 5
1690
 
                 (uim '(ustr-length ustrj-fl)))
1691
 
   (assert-equal 3
1692
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1693
 
   (assert-true (uim-bool '(ustr-cursor-set-frontside! ustrj-fl
1694
 
                                                       '("んー" "ンー" "ンー"))))
1695
 
   (assert-equal '("んー" "ンー" "ンー")
1696
 
                 (uim '(ustr-cursor-frontside ustrj-fl)))
1697
 
   (assert-equal 5
1698
 
                 (uim '(ustr-length ustrj-fl)))
1699
 
   (assert-equal 3
1700
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1701
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1702
 
                   ("んー" "ンー" "ンー") ("じゃ" "ジャ" "ジャ"))
1703
 
                 (uim '(ustr-whole-seq ustrj-fl)))
1704
 
   ;; former
1705
 
   (assert-error (lambda ()
1706
 
                   (uim '(ustr-cursor-frontside ustrj-f))))
1707
 
   (assert-equal 5
1708
 
                 (uim '(ustr-length ustrj-f)))
1709
 
   (assert-equal 5
1710
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1711
 
   (assert-false (uim-bool '(ustr-cursor-set-frontside! ustrj-f
1712
 
                                                        '("んー" "ンー" "ンー"))))
1713
 
   (assert-equal 5
1714
 
                 (uim '(ustr-length ustrj-f)))
1715
 
   (assert-equal 5
1716
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1717
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1718
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1719
 
                 (uim '(ustr-whole-seq ustrj-f)))
1720
 
   ;; latter
1721
 
   (assert-equal '("に" "ニ" "ニ")
1722
 
                 (uim '(ustr-cursor-frontside ustrj-l)))
1723
 
   (assert-equal 5
1724
 
                 (uim '(ustr-length ustrj-l)))
1725
 
   (assert-equal 0
1726
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1727
 
   (assert-true  (uim-bool '(ustr-cursor-set-frontside! ustrj-l
1728
 
                                                        '("んー" "ンー" "ンー"))))
1729
 
   (assert-equal '("んー" "ンー" "ンー")
1730
 
                 (uim '(ustr-cursor-frontside ustrj-l)))
1731
 
   (assert-equal 5
1732
 
                 (uim '(ustr-length ustrj-l)))
1733
 
   (assert-equal 0
1734
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1735
 
   (assert-equal '(("んー" "ンー" "ンー") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1736
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1737
 
                 (uim '(ustr-whole-seq ustrj-l)))
1738
 
   ;; empty
1739
 
   (assert-error (lambda ()
1740
 
                   (uim '(ustr-cursor-frontside ustre))))
1741
 
   (assert-equal 0
1742
 
                 (uim '(ustr-length ustre)))
1743
 
   (assert-false (uim-bool '(ustr-cursor-set-frontside! ustre
1744
 
                                                        '("んー" "ンー" "ンー"))))
1745
 
   (assert-error (lambda ()
1746
 
                   (uim '(ustr-cursor-frontside ustre))))
1747
 
   (assert-equal 0
1748
 
                 (uim '(ustr-length ustre)))
1749
 
   (assert-equal ()
1750
 
                 (uim '(ustr-whole-seq ustre))))
1751
 
 
1752
 
  ("test ustr-cursor-set-backside!"
1753
 
   ;; former-latter
1754
 
   (assert-equal '("ん" "ン" "ン")
1755
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1756
 
   (assert-equal 5
1757
 
                 (uim '(ustr-length ustrj-fl)))
1758
 
   (assert-equal 3
1759
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1760
 
   (assert-true  (uim-bool '(ustr-cursor-set-backside! ustrj-fl
1761
 
                                                       '("んー" "ンー" "ンー"))))
1762
 
   (assert-equal '("んー" "ンー" "ンー")
1763
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1764
 
   (assert-equal 5
1765
 
                 (uim '(ustr-length ustrj-fl)))
1766
 
   (assert-equal 3
1767
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1768
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("んー" "ンー" "ンー")
1769
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1770
 
                 (uim '(ustr-whole-seq ustrj-fl)))
1771
 
   ;; former
1772
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1773
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1774
 
   (assert-equal 5
1775
 
                 (uim '(ustr-length ustrj-f)))
1776
 
   (assert-equal 5
1777
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1778
 
   (assert-true  (uim-bool '(ustr-cursor-set-backside! ustrj-f
1779
 
                                                       '("んー" "ンー" "ンー"))))
1780
 
   (assert-equal '("んー" "ンー" "ンー")
1781
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1782
 
   (assert-equal 5
1783
 
                 (uim '(ustr-length ustrj-f)))
1784
 
   (assert-equal 5
1785
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1786
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1787
 
                   ("ご" "ゴ" "ゴ") ("んー" "ンー" "ンー"))
1788
 
                 (uim '(ustr-whole-seq ustrj-f)))
1789
 
   ;; latter
1790
 
   (assert-error (lambda ()
1791
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1792
 
   (assert-equal 5
1793
 
                 (uim '(ustr-length ustrj-l)))
1794
 
   (assert-equal 0
1795
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1796
 
   (assert-false (uim-bool '(ustr-cursor-set-backside! ustrj-l
1797
 
                                                       '("んー" "ンー" "ンー"))))
1798
 
   (assert-error (lambda ()
1799
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1800
 
   (assert-equal 5
1801
 
                 (uim '(ustr-length ustrj-l)))
1802
 
   (assert-equal 0
1803
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1804
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1805
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1806
 
                 (uim '(ustr-whole-seq ustrj-l)))
1807
 
   ;; empty
1808
 
   (assert-error (lambda ()
1809
 
                   (uim '(ustr-cursor-backside ustre))))
1810
 
   (assert-equal 0
1811
 
                 (uim '(ustr-length ustre)))
1812
 
   (assert-false (uim-bool '(ustr-cursor-set-backside! ustre
1813
 
                                                       '("んー" "ンー" "ンー"))))
1814
 
   (assert-error (lambda ()
1815
 
                   (uim '(ustr-cursor-backside ustre))))
1816
 
   (assert-equal 0
1817
 
                 (uim '(ustr-length ustre)))
1818
 
   (assert-equal ()
1819
 
                 (uim '(ustr-whole-seq ustre))))
1820
 
 
1821
 
  ("test ustr-insert-seq!"
1822
 
   ;; former-latter
1823
 
   (assert-equal '("ん" "ン" "ン")
1824
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1825
 
   (assert-equal 5
1826
 
                 (uim '(ustr-length ustrj-fl)))
1827
 
   (assert-equal 3
1828
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1829
 
   (uim '(ustr-insert-seq! ustrj-fl '(("んー" "ンー" "ンー") ("か" "カ" "カ")
1830
 
                                      ("よ" "ヨ" "ヨ"))))
1831
 
   (assert-equal '("よ" "ヨ" "ヨ")
1832
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1833
 
   (assert-equal 8
1834
 
                 (uim '(ustr-length ustrj-fl)))
1835
 
   (assert-equal 6
1836
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1837
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1838
 
                   ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
1839
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1840
 
                 (uim '(ustr-whole-seq ustrj-fl)))
1841
 
   ;; former
1842
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1843
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1844
 
   (assert-equal 5
1845
 
                 (uim '(ustr-length ustrj-f)))
1846
 
   (assert-equal 5
1847
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1848
 
   (uim '(ustr-insert-seq! ustrj-f '(("んー" "ンー" "ンー") ("か" "カ" "カ")
1849
 
                                     ("よ" "ヨ" "ヨ"))))
1850
 
   (assert-equal '("よ" "ヨ" "ヨ")
1851
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1852
 
   (assert-equal 8
1853
 
                 (uim '(ustr-length ustrj-f)))
1854
 
   (assert-equal 8
1855
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1856
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1857
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
1858
 
                   ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
1859
 
                 (uim '(ustr-whole-seq ustrj-f)))
1860
 
   ;; latter
1861
 
   (assert-error (lambda ()
1862
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1863
 
   (assert-equal 5
1864
 
                 (uim '(ustr-length ustrj-l)))
1865
 
   (assert-equal 0
1866
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1867
 
   (uim '(ustr-insert-seq! ustrj-l '(("んー" "ンー" "ンー") ("か" "カ" "カ")
1868
 
                                     ("よ" "ヨ" "ヨ"))))
1869
 
   (assert-equal '("よ" "ヨ" "ヨ")
1870
 
                 (uim '(ustr-cursor-backside ustrj-l)))
1871
 
   (assert-equal 8
1872
 
                 (uim '(ustr-length ustrj-l)))
1873
 
   (assert-equal 3
1874
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1875
 
   (assert-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
1876
 
                   ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1877
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1878
 
                 (uim '(ustr-whole-seq ustrj-l)))
1879
 
   ;; empty
1880
 
   (assert-error (lambda ()
1881
 
                   (uim '(ustr-cursor-backside ustre))))
1882
 
   (assert-equal 0
1883
 
                 (uim '(ustr-length ustre)))
1884
 
   (assert-equal 0
1885
 
                 (uim '(ustr-cursor-pos ustre)))
1886
 
   (uim '(ustr-insert-seq! ustre '(("んー" "ンー" "ンー") ("か" "カ" "カ")
1887
 
                                   ("よ" "ヨ" "ヨ"))))
1888
 
   (assert-equal '("よ" "ヨ" "ヨ")
1889
 
                 (uim '(ustr-cursor-backside ustre)))
1890
 
   (assert-equal 3
1891
 
                 (uim '(ustr-length ustre)))
1892
 
   (assert-equal 3
1893
 
                 (uim '(ustr-cursor-pos ustre)))
1894
 
   (assert-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
1895
 
                 (uim '(ustr-whole-seq ustre))))
1896
 
 
1897
 
  ("test ustr-insert-seq! #2"
1898
 
   ;; former-latter
1899
 
   (assert-equal '("ん" "ン" "ン")
1900
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1901
 
   (assert-equal 5
1902
 
                 (uim '(ustr-length ustrj-fl)))
1903
 
   (assert-equal 3
1904
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1905
 
   (uim '(ustr-insert-seq! ustrj-fl ()))
1906
 
   (assert-equal '("ん" "ン" "ン")
1907
 
                 (uim '(ustr-cursor-backside ustrj-fl)))
1908
 
   (assert-equal 5
1909
 
                 (uim '(ustr-length ustrj-fl)))
1910
 
   (assert-equal 3
1911
 
                 (uim '(ustr-cursor-pos ustrj-fl)))
1912
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1913
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1914
 
                 (uim '(ustr-whole-seq ustrj-fl)))
1915
 
   ;; former
1916
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1917
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1918
 
   (assert-equal 5
1919
 
                 (uim '(ustr-length ustrj-f)))
1920
 
   (assert-equal 5
1921
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1922
 
   (uim '(ustr-insert-seq! ustrj-f ()))
1923
 
   (assert-equal '("じゃ" "ジャ" "ジャ")
1924
 
                 (uim '(ustr-cursor-backside ustrj-f)))
1925
 
   (assert-equal 5
1926
 
                 (uim '(ustr-length ustrj-f)))
1927
 
   (assert-equal 5
1928
 
                 (uim '(ustr-cursor-pos ustrj-f)))
1929
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1930
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1931
 
                 (uim '(ustr-whole-seq ustrj-f)))
1932
 
   ;; latter
1933
 
   (assert-error (lambda ()
1934
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1935
 
   (assert-equal 5
1936
 
                 (uim '(ustr-length ustrj-l)))
1937
 
   (assert-equal 0
1938
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1939
 
   (uim '(ustr-insert-seq! ustrj-l ()))
1940
 
   (assert-error (lambda ()
1941
 
                   (uim '(ustr-cursor-backside ustrj-l))))
1942
 
   (assert-equal 5
1943
 
                 (uim '(ustr-length ustrj-l)))
1944
 
   (assert-equal 0
1945
 
                 (uim '(ustr-cursor-pos ustrj-l)))
1946
 
   (assert-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
1947
 
                   ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
1948
 
                 (uim '(ustr-whole-seq ustrj-l)))
1949
 
   ;; empty
1950
 
   (assert-error (lambda ()
1951
 
                   (uim '(ustr-cursor-backside ustre))))
1952
 
   (assert-equal 0
1953
 
                 (uim '(ustr-length ustre)))
1954
 
   (assert-equal 0
1955
 
                 (uim '(ustr-cursor-pos ustre)))
1956
 
   (uim '(ustr-insert-seq! ustre ()))
1957
 
   (assert-error (lambda ()
1958
 
                   (uim '(ustr-cursor-backside ustre))))
1959
 
   (assert-equal 0
1960
 
                 (uim '(ustr-length ustre)))
1961
 
   (assert-equal 0
1962
 
                 (uim '(ustr-cursor-pos ustre)))))
 
30
;; These tests are passed at revision 6600 (new repository)
 
31
 
 
32
(define-module test.test-ustr
 
33
  (use test.unit.test-case)
 
34
  (use test.uim-test))
 
35
(select-module test.test-ustr)
 
36
 
 
37
(define (setup)
 
38
  (uim-test-setup)
 
39
  (uim-eval '(require "ustr.scm"))
 
40
  (uim-eval '(define-record 'ja-kana
 
41
               '((hiragana "")
 
42
                 (katakana "")
 
43
                 (hankaku  ""))))
 
44
  (uim-eval
 
45
   '(begin
 
46
      (define ustr-f (ustr-new '(("h" . "H") ("e" . "E") ("l" . "L")
 
47
                                 ("l" . "L") ("o" . "O"))))
 
48
      (define ustr-fl (ustr-new '(("h" . "H") ("e" . "E") ("l" . "L"))
 
49
                                '(("l" . "L") ("o" . "O"))))
 
50
      (define ustr-l (ustr-new ()
 
51
                               '(("h" . "H") ("e" . "E") ("l" . "L")
 
52
                                 ("l" . "L") ("o" . "O"))))
 
53
      (define ustra-f (ustr-new '("h" "e" "l" "l" "o")))
 
54
      (define ustra-fl (ustr-new '("h" "e" "l")
 
55
                                 '("l" "o")))
 
56
      (define ustra-l (ustr-new ()
 
57
                                '("h" "e" "l" "l" "o")))
 
58
      (define ustrj-f (ustr-new '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
 
59
                                  ("ん" "ン" "ン") ("ご" "ゴ" "ゴ")
 
60
                                  ("じゃ" "ジャ" "ジャ"))))
 
61
      (define ustrj-fl (ustr-new '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
 
62
                                   ("ん" "ン" "ン"))
 
63
                                 '(("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))))
 
64
      (define ustrj-l (ustr-new ()
 
65
                                '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
 
66
                                  ("ん" "ン" "ン") ("ご" "ゴ" "ゴ")
 
67
                                  ("じゃ" "ジャ" "ジャ"))))
 
68
      (define ustre (ustr-new ())))))
 
69
 
 
70
(define (teardown)
 
71
  (uim-test-teardown))
 
72
 
 
73
(define (test-ustr-new)
 
74
  ;; single sequence goes into former
 
75
  (assert-uim-equal '(("o" "l" "l" "e" "h") . ())
 
76
                    '(ustr-new '("h" "e" "l" "l" "o")))
 
77
  ;; dual sequences are go into former and latter
 
78
  (assert-uim-equal '(("l" "e" "h") . ("l" "o"))
 
79
                    '(ustr-new '("h" "e" "l")
 
80
                               '("l" "o")))
 
81
  ;; latter sequence only
 
82
  (assert-uim-equal '(() . ("h" "e" "l" "l" "o"))
 
83
                    '(ustr-new ()
 
84
                               '("h" "e" "l" "l" "o"))))
 
85
 
 
86
(define (test-ustr-whole-seq)
 
87
  (assert-uim-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
 
88
                    '(ustr-whole-seq ustr-fl))
 
89
  (assert-uim-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
 
90
                    '(ustr-whole-seq ustr-f))
 
91
  (assert-uim-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
 
92
                    '(ustr-whole-seq ustr-l))
 
93
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
94
                    '(ustr-whole-seq ustra-fl))
 
95
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
96
                    '(ustr-whole-seq ustra-f))
 
97
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
98
                    '(ustr-whole-seq ustra-l))
 
99
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
100
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
101
                    '(ustr-whole-seq ustrj-fl))
 
102
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
103
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
104
                    '(ustr-whole-seq ustrj-f))
 
105
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
106
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
107
                    '(ustr-whole-seq ustrj-l)))
 
108
 
 
109
(define (test-ustr-former-seq)
 
110
  (assert-uim-equal '(("h" . "H") ("e" . "E") ("l" . "L"))
 
111
                    '(ustr-former-seq ustr-fl))
 
112
  (assert-uim-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
 
113
                    '(ustr-former-seq ustr-f))
 
114
  (assert-uim-equal '()
 
115
                    '(ustr-former-seq ustr-l))
 
116
  (assert-uim-equal '("h" "e" "l")
 
117
                    '(ustr-former-seq ustra-fl))
 
118
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
119
                    '(ustr-former-seq ustra-f))
 
120
  (assert-uim-equal '()
 
121
                    '(ustr-former-seq ustra-l))
 
122
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン"))
 
123
                    '(ustr-former-seq ustrj-fl))
 
124
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
125
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
126
                    '(ustr-former-seq ustrj-f))
 
127
  (assert-uim-equal '()
 
128
                    '(ustr-former-seq ustrj-l)))
 
129
 
 
130
(define (test-ustr-latter-seq)
 
131
  (assert-uim-equal '(("l" . "L") ("o" . "O"))
 
132
                    '(ustr-latter-seq ustr-fl))
 
133
  (assert-uim-equal '()
 
134
                    '(ustr-latter-seq ustr-f))
 
135
  (assert-uim-equal '(("h" . "H") ("e" . "E") ("l" . "L") ("l" . "L") ("o" . "O"))
 
136
                    '(ustr-latter-seq ustr-l))
 
137
  (assert-uim-equal '("l" "o")
 
138
                    '(ustr-latter-seq ustra-fl))
 
139
  (assert-uim-equal '()
 
140
                    '(ustr-latter-seq ustra-f))
 
141
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
142
                    '(ustr-latter-seq ustra-l))
 
143
  (assert-uim-equal '(("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
144
                    '(ustr-latter-seq ustrj-fl))
 
145
  (assert-uim-equal '()
 
146
                    '(ustr-latter-seq ustrj-f))
 
147
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
148
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
149
                    '(ustr-latter-seq ustrj-l)))
 
150
 
 
151
(define (test-ustr-set-whole-seq!)
 
152
  ;; former-latter
 
153
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
154
                    '(ustr-whole-seq ustra-fl))
 
155
  (assert-uim-equal '("h" "e" "l")
 
156
                    '(ustr-former-seq ustra-fl))
 
157
  (assert-uim-equal '("l" "o")
 
158
                    '(ustr-latter-seq ustra-fl))
 
159
  (uim-eval '(ustr-set-whole-seq! ustra-fl '("w" "o" "r" "L" "d")))
 
160
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
161
                    '(ustr-whole-seq ustra-fl))
 
162
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
163
                    '(ustr-former-seq ustra-fl))
 
164
  (assert-uim-equal '()
 
165
                    '(ustr-latter-seq ustra-fl))
 
166
  ;; former
 
167
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
168
                    '(ustr-whole-seq ustra-f))
 
169
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
170
                    '(ustr-former-seq ustra-f))
 
171
  (assert-uim-equal '()
 
172
                    '(ustr-latter-seq ustra-f))
 
173
  (uim-eval '(ustr-set-whole-seq! ustra-f '("w" "o" "r" "L" "d")))
 
174
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
175
                    '(ustr-whole-seq ustra-f))
 
176
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
177
                    '(ustr-former-seq ustra-f))
 
178
  (assert-uim-equal '()
 
179
                    '(ustr-latter-seq ustra-f))
 
180
  ;; latter
 
181
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
182
                    '(ustr-whole-seq ustra-l))
 
183
  (assert-uim-equal '()
 
184
                    '(ustr-former-seq ustra-l))
 
185
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
186
                    '(ustr-latter-seq ustra-l))
 
187
  (uim-eval '(ustr-set-whole-seq! ustra-l '("w" "o" "r" "L" "d")))
 
188
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
189
                    '(ustr-whole-seq ustra-l))
 
190
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
191
                    '(ustr-former-seq ustra-l))
 
192
  (assert-uim-equal '()
 
193
                    '(ustr-latter-seq ustra-l)))
 
194
 
 
195
(define (test-ustr-set-former-seq!)
 
196
  ;; former-latter
 
197
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
198
                    '(ustr-whole-seq ustra-fl))
 
199
  (assert-uim-equal '("h" "e" "l")
 
200
                    '(ustr-former-seq ustra-fl))
 
201
  (assert-uim-equal '("l" "o")
 
202
                    '(ustr-latter-seq ustra-fl))
 
203
  (uim-eval '(ustr-set-former-seq! ustra-fl '("w" "o" "r" "L" "d")))
 
204
  (assert-uim-equal '("w" "o" "r" "L" "d" "l" "o")
 
205
                    '(ustr-whole-seq ustra-fl))
 
206
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
207
                    '(ustr-former-seq ustra-fl))
 
208
  (assert-uim-equal '("l" "o")
 
209
                    '(ustr-latter-seq ustra-fl))
 
210
  ;; former
 
211
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
212
                    '(ustr-whole-seq ustra-f))
 
213
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
214
                    '(ustr-former-seq ustra-f))
 
215
  (assert-uim-equal '()
 
216
                    '(ustr-latter-seq ustra-f))
 
217
  (uim-eval '(ustr-set-former-seq! ustra-f '("w" "o" "r" "L" "d")))
 
218
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
219
                    '(ustr-whole-seq ustra-f))
 
220
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
221
                    '(ustr-former-seq ustra-f))
 
222
  (assert-uim-equal '()
 
223
                    '(ustr-latter-seq ustra-f))
 
224
  ;; latter
 
225
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
226
                    '(ustr-whole-seq ustra-l))
 
227
  (assert-uim-equal '()
 
228
                    '(ustr-former-seq ustra-l))
 
229
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
230
                    '(ustr-latter-seq ustra-l))
 
231
  (uim-eval '(ustr-set-former-seq! ustra-l '("w" "o" "r" "L" "d")))
 
232
  (assert-uim-equal '("w" "o" "r" "L" "d" "h" "e" "l" "l" "o")
 
233
                    '(ustr-whole-seq ustra-l))
 
234
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
235
                    '(ustr-former-seq ustra-l))
 
236
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
237
                    '(ustr-latter-seq ustra-l)))
 
238
 
 
239
(define (test-ustr-set-latter-seq!)
 
240
  ;; former-latter
 
241
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
242
                    '(ustr-whole-seq ustra-fl))
 
243
  (assert-uim-equal '("h" "e" "l")
 
244
                    '(ustr-former-seq ustra-fl))
 
245
  (assert-uim-equal '("l" "o")
 
246
                    '(ustr-latter-seq ustra-fl))
 
247
  (uim-eval '(ustr-set-latter-seq! ustra-fl '("w" "o" "r" "L" "d")))
 
248
  (assert-uim-equal '("h" "e" "l" "w" "o" "r" "L" "d")
 
249
                    '(ustr-whole-seq ustra-fl))
 
250
  (assert-uim-equal '("h" "e" "l")
 
251
                    '(ustr-former-seq ustra-fl))
 
252
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
253
                    '(ustr-latter-seq ustra-fl))
 
254
  ;; former
 
255
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
256
                    '(ustr-whole-seq ustra-f))
 
257
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
258
                    '(ustr-former-seq ustra-f))
 
259
  (assert-uim-equal '()
 
260
                    '(ustr-latter-seq ustra-f))
 
261
  (uim-eval '(ustr-set-latter-seq! ustra-f '("w" "o" "r" "L" "d")))
 
262
  (assert-uim-equal '("h" "e" "l" "l" "o" "w" "o" "r" "L" "d")
 
263
                    '(ustr-whole-seq ustra-f))
 
264
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
265
                    '(ustr-former-seq ustra-f))
 
266
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
267
                    '(ustr-latter-seq ustra-f))
 
268
  ;; latter
 
269
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
270
                    '(ustr-whole-seq ustra-l))
 
271
  (assert-uim-equal '()
 
272
                    '(ustr-former-seq ustra-l))
 
273
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
274
                    '(ustr-latter-seq ustra-l))
 
275
  (uim-eval '(ustr-set-latter-seq! ustra-l '("w" "o" "r" "L" "d")))
 
276
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
277
                    '(ustr-whole-seq ustra-l))
 
278
  (assert-uim-equal '()
 
279
                    '(ustr-former-seq ustra-l))
 
280
  (assert-uim-equal '("w" "o" "r" "L" "d")
 
281
                    '(ustr-latter-seq ustra-l)))
 
282
 
 
283
(define (test-ustr-empty?)
 
284
  (assert-false (uim-bool '(ustr-empty? ustr-fl)))
 
285
  (assert-false (uim-bool '(ustr-empty? ustr-f)))
 
286
  (assert-false (uim-bool '(ustr-empty? ustr-l)))
 
287
 
 
288
  (assert-false (uim-bool '(ustr-empty? ustra-fl)))
 
289
  (assert-false (uim-bool '(ustr-empty? ustra-f)))
 
290
  (assert-false (uim-bool '(ustr-empty? ustra-l)))
 
291
 
 
292
  (assert-false (uim-bool '(ustr-empty? ustrj-fl)))
 
293
  (assert-false (uim-bool '(ustr-empty? ustrj-f)))
 
294
  (assert-false (uim-bool '(ustr-empty? ustrj-l)))
 
295
 
 
296
  (assert-uim-equal '(() . ())
 
297
                    'ustre)
 
298
  (assert-uim-true  '(ustr-empty? ustre)))
 
299
 
 
300
(define (test-ustr-clear!)
 
301
  (assert-uim-false '(ustr-empty? ustra-fl))
 
302
  (uim-eval '(ustr-clear! ustra-fl))
 
303
  (assert-uim-true  '(ustr-empty? ustra-fl))
 
304
 
 
305
  (assert-uim-false '(ustr-empty? ustra-f))
 
306
  (uim-eval '(ustr-clear! ustra-f))
 
307
  (assert-uim-true  '(ustr-empty? ustra-f))
 
308
 
 
309
  (assert-uim-false '(ustr-empty? ustra-l))
 
310
  (uim-eval '(ustr-clear! ustra-l))
 
311
  (assert-uim-true  '(ustr-empty? ustra-l))
 
312
 
 
313
  (assert-uim-true  '(ustr-empty? ustre))
 
314
  (uim-eval '(ustr-clear! ustre))
 
315
  (assert-uim-true  '(ustr-empty? ustre)))
 
316
 
 
317
(define (test-ustr-clear-former!)
 
318
  (assert-uim-false '(ustr-empty? ustra-fl))
 
319
  (uim-eval '(ustr-clear-former! ustra-fl))
 
320
  (assert-uim-false '(ustr-empty? ustra-fl))
 
321
 
 
322
  (assert-uim-false '(ustr-empty? ustra-f))
 
323
  (uim-eval '(ustr-clear-former! ustra-f))
 
324
  (assert-uim-true  '(ustr-empty? ustra-f))
 
325
 
 
326
  (assert-uim-false '(ustr-empty? ustra-l))
 
327
  (uim-eval '(ustr-clear-former! ustra-l))
 
328
  (assert-uim-false '(ustr-empty? ustra-l))
 
329
 
 
330
  (assert-uim-true  '(ustr-empty? ustre))
 
331
  (uim-eval '(ustr-clear-former! ustre))
 
332
  (assert-uim-true  '(ustr-empty? ustre)))
 
333
 
 
334
(define (test-ustr-clear-latter!)
 
335
  (assert-uim-false '(ustr-empty? ustra-fl))
 
336
  (uim-eval '(ustr-clear-latter! ustra-fl))
 
337
  (assert-uim-false '(ustr-empty? ustra-fl))
 
338
 
 
339
  (assert-uim-false '(ustr-empty? ustra-f))
 
340
  (uim-eval '(ustr-clear-latter! ustra-f))
 
341
  (assert-uim-false '(ustr-empty? ustra-f))
 
342
 
 
343
  (assert-uim-false '(ustr-empty? ustra-l))
 
344
  (uim-eval '(ustr-clear-latter! ustra-l))
 
345
  (assert-uim-true  '(ustr-empty? ustra-l))
 
346
 
 
347
  (assert-uim-true  '(ustr-empty? ustre))
 
348
  (uim-eval '(ustr-clear-latter! ustre))
 
349
  (assert-uim-true  '(ustr-empty? ustre)))
 
350
 
 
351
(define (test-ustr-copy!)
 
352
  (assert-uim-false '(equal? ustr-fl ustra-fl))
 
353
  (uim-eval '(ustr-copy! ustr-fl ustra-fl))
 
354
  (assert-uim-true '(equal? ustr-fl ustra-fl))
 
355
 
 
356
  (assert-uim-false '(equal? ustr-f ustra-f))
 
357
  (uim-eval '(ustr-copy! ustr-f ustra-f))
 
358
  (assert-uim-true '(equal? ustr-f ustra-f))
 
359
 
 
360
  (assert-uim-false '(equal? ustr-l ustra-l))
 
361
  (uim-eval '(ustr-copy! ustr-l ustra-l))
 
362
  (assert-uim-true '(equal? ustr-l ustra-l)))
 
363
 
 
364
(define (test-ustr=)
 
365
  (assert-uim-true  '(ustr= equal? ustr-fl ustr-fl))
 
366
  (assert-uim-true  '(ustr= equal? ustr-fl ustr-f))
 
367
  (assert-uim-true  '(ustr= equal? ustr-f ustr-fl))
 
368
  (assert-uim-true  '(ustr= equal? ustr-fl ustr-l))
 
369
  (assert-uim-true  '(ustr= equal? ustr-l ustr-fl))
 
370
  (assert-uim-true  '(ustr= equal? ustr-f ustr-f))
 
371
  (assert-uim-true  '(ustr= equal? ustr-l ustr-f))
 
372
  (assert-uim-true  '(ustr= equal? ustr-f ustr-l))
 
373
  (assert-uim-true  '(ustr= equal? ustr-l ustr-l))
 
374
  (assert-uim-false '(ustr= equal? ustr-l ustre))
 
375
  (assert-uim-false '(ustr= equal? ustre ustr-l))
 
376
 
 
377
  (assert-uim-true  '(ustr= string=? ustra-fl ustra-fl))
 
378
  (assert-uim-true  '(ustr= string=? ustra-fl ustra-f))
 
379
  (assert-uim-true  '(ustr= string=? ustra-f ustra-fl))
 
380
  (assert-uim-true  '(ustr= string=? ustra-fl ustra-l))
 
381
  (assert-uim-true  '(ustr= string=? ustra-l ustra-fl))
 
382
  (assert-uim-true  '(ustr= string=? ustra-f ustra-f))
 
383
  (assert-uim-true  '(ustr= string=? ustra-l ustra-f))
 
384
  (assert-uim-true  '(ustr= string=? ustra-f ustra-l))
 
385
  (assert-uim-true  '(ustr= string=? ustra-l ustra-l))
 
386
  (assert-uim-false '(ustr= string=? ustra-fl ustre))
 
387
  (assert-uim-false '(ustr= string=? ustre ustra-fl))
 
388
  (assert-uim-false '(ustr= string=? ustra-f ustre))
 
389
  (assert-uim-false '(ustr= string=? ustre ustra-f))
 
390
  (assert-uim-false '(ustr= string=? ustra-l ustre))
 
391
  (assert-uim-false '(ustr= string=? ustre ustra-l))
 
392
  (uim-eval '(ustr-set-former-seq! ustra-f '("h" "e" "l" "l" "o" "!")))
 
393
  (assert-uim-false '(ustr= string=? ustra-fl ustra-f))
 
394
  (assert-uim-false '(ustr= string=? ustra-f ustra-fl))
 
395
  (assert-uim-false '(ustr= string=? ustra-l ustra-f))
 
396
  (assert-uim-false '(ustr= string=? ustra-f ustra-l))
 
397
  (assert-uim-true  '(ustr= string=? ustra-f ustra-f))
 
398
 
 
399
  (assert-uim-true  '(ustr= equal? ustrj-fl ustrj-fl))
 
400
  (assert-uim-true  '(ustr= equal? ustrj-fl ustrj-f))
 
401
  (assert-uim-true  '(ustr= equal? ustrj-f ustrj-fl))
 
402
  (assert-uim-true  '(ustr= equal? ustrj-fl ustrj-l))
 
403
  (assert-uim-true  '(ustr= equal? ustrj-l ustrj-fl))
 
404
  (assert-uim-true  '(ustr= equal? ustrj-f ustrj-f))
 
405
  (assert-uim-true  '(ustr= equal? ustrj-l ustrj-f))
 
406
  (assert-uim-true  '(ustr= equal? ustrj-f ustrj-l))
 
407
  (assert-uim-true  '(ustr= equal? ustrj-l ustrj-l))
 
408
  (assert-uim-false '(ustr= equal? ustrj-l ustre))
 
409
  (assert-uim-false '(ustr= equal? ustre ustrj-l)))
 
410
 
 
411
(define (test-ustr-length)
 
412
  (assert-uim-equal 5
 
413
                    '(ustr-length ustr-fl))
 
414
  (assert-uim-equal 5
 
415
                    '(ustr-length ustr-f))
 
416
  (assert-uim-equal 5
 
417
                    '(ustr-length ustr-l))
 
418
  (assert-uim-equal 5
 
419
                    '(ustr-length ustra-fl))
 
420
  (assert-uim-equal 5
 
421
                    '(ustr-length ustra-f))
 
422
  (assert-uim-equal 5
 
423
                    '(ustr-length ustra-l))
 
424
  (assert-uim-equal 5
 
425
                    '(ustr-length ustrj-fl))
 
426
  (assert-uim-equal 5
 
427
                    '(ustr-length ustrj-f))
 
428
  (assert-uim-equal 5
 
429
                    '(ustr-length ustrj-l))
 
430
  (assert-uim-equal 0
 
431
                    '(ustr-length ustre)))
 
432
 
 
433
(define (test-ustr-nth)
 
434
  (assert-uim-equal "h"
 
435
                    '(ustr-nth ustra-fl 0))
 
436
  (assert-uim-equal "e"
 
437
                    '(ustr-nth ustra-fl 1))
 
438
  (assert-uim-equal "l"
 
439
                    '(ustr-nth ustra-fl 2))
 
440
  (assert-uim-equal "l"
 
441
                    '(ustr-nth ustra-fl 3))
 
442
  (assert-uim-equal "o"
 
443
                    '(ustr-nth ustra-fl 4))
 
444
  (assert-uim-error '(ustr-nth ustra-fl 5))
 
445
  (assert-uim-error '(ustr-nth ustra-fl -1))
 
446
 
 
447
  (assert-uim-equal "h"
 
448
                    '(ustr-nth ustra-f 0))
 
449
  (assert-uim-equal "e"
 
450
                    '(ustr-nth ustra-f 1))
 
451
  (assert-uim-equal "l"
 
452
                    '(ustr-nth ustra-f 2))
 
453
  (assert-uim-equal "l"
 
454
                    '(ustr-nth ustra-f 3))
 
455
  (assert-uim-equal "o"
 
456
                    '(ustr-nth ustra-f 4))
 
457
  (assert-uim-error '(ustr-nth ustra-f 5))
 
458
  (assert-uim-error '(ustr-nth ustra-f -1))
 
459
 
 
460
  (assert-uim-equal "h"
 
461
                    '(ustr-nth ustra-l 0))
 
462
  (assert-uim-equal "e"
 
463
                    '(ustr-nth ustra-l 1))
 
464
  (assert-uim-equal "l"
 
465
                    '(ustr-nth ustra-l 2))
 
466
  (assert-uim-equal "l"
 
467
                    '(ustr-nth ustra-l 3))
 
468
  (assert-uim-equal "o"
 
469
                    '(ustr-nth ustra-l 4))
 
470
  (assert-uim-error '(ustr-nth ustra-l 5))
 
471
  (assert-uim-error '(ustr-nth ustra-l -1))
 
472
 
 
473
  (assert-uim-error '(ustr-nth ustre 0)))
 
474
 
 
475
(define (test-ustr-set-nth!)
 
476
  (assert-uim-equal "h"
 
477
                    '(ustr-nth ustra-fl 0))
 
478
  (assert-uim-equal "e"
 
479
                    '(ustr-nth ustra-fl 1))
 
480
  (assert-uim-equal "l"
 
481
                    '(ustr-nth ustra-fl 2))
 
482
  (assert-uim-equal "l"
 
483
                    '(ustr-nth ustra-fl 3))
 
484
  (assert-uim-equal "o"
 
485
                    '(ustr-nth ustra-fl 4))
 
486
  (assert-uim-error '(ustr-nth ustra-fl 5))
 
487
  (assert-uim-error '(ustr-nth ustra-fl -1))
 
488
  ;; position 0
 
489
  (assert-uim-equal 5
 
490
                    '(ustr-length ustra-fl))
 
491
  (assert-uim-equal 3
 
492
                    '(ustr-cursor-pos ustra-fl))
 
493
  (uim-eval '(ustr-set-nth! ustra-fl 0 "H"))
 
494
  (assert-uim-equal "H"
 
495
                    '(ustr-nth ustra-fl 0))
 
496
  (assert-uim-equal '("H" "e" "l")
 
497
                    '(ustr-former-seq ustra-fl))
 
498
  (assert-uim-equal '("l" "o")
 
499
                    '(ustr-latter-seq ustra-fl))
 
500
  (assert-uim-equal 5
 
501
                    '(ustr-length ustra-fl))
 
502
  (assert-uim-equal 3
 
503
                    '(ustr-cursor-pos ustra-fl))
 
504
  ;; position 1
 
505
  (assert-uim-equal 5
 
506
                    '(ustr-length ustra-fl))
 
507
  (assert-uim-equal 3
 
508
                    '(ustr-cursor-pos ustra-fl))
 
509
  (uim-eval '(ustr-set-nth! ustra-fl 1 "E"))
 
510
  (assert-uim-equal "E"
 
511
                    '(ustr-nth ustra-fl 1))
 
512
  (assert-uim-equal '("H" "E" "l")
 
513
                    '(ustr-former-seq ustra-fl))
 
514
  (assert-uim-equal '("l" "o")
 
515
                    '(ustr-latter-seq ustra-fl))
 
516
  (assert-uim-equal 5
 
517
                    '(ustr-length ustra-fl))
 
518
  (assert-uim-equal 3
 
519
                    '(ustr-cursor-pos ustra-fl))
 
520
  ;; position 2
 
521
  (assert-uim-equal 5
 
522
                    '(ustr-length ustra-fl))
 
523
  (assert-uim-equal 3
 
524
                    '(ustr-cursor-pos ustra-fl))
 
525
  (uim-eval '(ustr-set-nth! ustra-fl 2 "L"))
 
526
  (assert-uim-equal "L"
 
527
                    '(ustr-nth ustra-fl 2))
 
528
  (assert-uim-equal '("H" "E" "L")
 
529
                    '(ustr-former-seq ustra-fl))
 
530
  (assert-uim-equal '("l" "o")
 
531
                    '(ustr-latter-seq ustra-fl))
 
532
  (assert-uim-equal 5
 
533
                    '(ustr-length ustra-fl))
 
534
  (assert-uim-equal 3
 
535
                    '(ustr-cursor-pos ustra-fl))
 
536
  ;; position 3
 
537
  (assert-uim-equal 5
 
538
                    '(ustr-length ustra-fl))
 
539
  (assert-uim-equal 3
 
540
                    '(ustr-cursor-pos ustra-fl))
 
541
  (uim-eval '(ustr-set-nth! ustra-fl 3 "|"))
 
542
  (assert-uim-equal "|"
 
543
                    '(ustr-nth ustra-fl 3))
 
544
  (assert-uim-equal '("H" "E" "L")
 
545
                    '(ustr-former-seq ustra-fl))
 
546
  (assert-uim-equal '("|" "o")
 
547
                    '(ustr-latter-seq ustra-fl))
 
548
  (assert-uim-equal 5
 
549
                    '(ustr-length ustra-fl))
 
550
  (assert-uim-equal 3
 
551
                    '(ustr-cursor-pos ustra-fl))
 
552
  ;; position 4
 
553
  (assert-uim-equal 5
 
554
                    '(ustr-length ustra-fl))
 
555
  (assert-uim-equal 3
 
556
                    '(ustr-cursor-pos ustra-fl))
 
557
  (uim-eval '(ustr-set-nth! ustra-fl 4 "O"))
 
558
  (assert-uim-equal "O"
 
559
                    '(ustr-nth ustra-fl 4))
 
560
  (assert-uim-equal '("H" "E" "L")
 
561
                    '(ustr-former-seq ustra-fl))
 
562
  (assert-uim-equal '("|" "O")
 
563
                    '(ustr-latter-seq ustra-fl))
 
564
  (assert-uim-equal 5
 
565
                    '(ustr-length ustra-fl))
 
566
  (assert-uim-equal 3
 
567
                    '(ustr-cursor-pos ustra-fl))
 
568
  ;; position 5
 
569
  (assert-uim-equal 5
 
570
                    '(ustr-length ustra-fl))
 
571
  (assert-uim-equal 3
 
572
                    '(ustr-cursor-pos ustra-fl))
 
573
  (assert-uim-error '(ustr-set-nth! ustra-fl 5 "5"))
 
574
  (assert-uim-error '(ustr-nth ustra-fl 5))
 
575
  (assert-uim-equal '("H" "E" "L")
 
576
                    '(ustr-former-seq ustra-fl))
 
577
  (assert-uim-equal '("|" "O")
 
578
                    '(ustr-latter-seq ustra-fl))
 
579
  (assert-uim-equal 5
 
580
                    '(ustr-length ustra-fl))
 
581
  (assert-uim-equal 3
 
582
                    '(ustr-cursor-pos ustra-fl))
 
583
  ;; position 5 in former-str
 
584
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
585
                    '(ustr-former-seq ustra-f))
 
586
  (assert-uim-equal '()
 
587
                    '(ustr-latter-seq ustra-f))
 
588
  (assert-uim-equal 5
 
589
                    '(ustr-length ustra-f))
 
590
  (assert-uim-equal 5
 
591
                    '(ustr-cursor-pos ustra-f))
 
592
  (assert-uim-error '(ustr-set-nth! ustra-f 5 "5"))
 
593
  (assert-uim-error '(ustr-nth ustra-f 5))
 
594
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
595
                    '(ustr-former-seq ustra-f))
 
596
  (assert-uim-equal '()
 
597
                    '(ustr-latter-seq ustra-f))
 
598
  (assert-uim-equal 5
 
599
                    '(ustr-length ustra-f))
 
600
  (assert-uim-equal 5
 
601
                    '(ustr-cursor-pos ustra-f))
 
602
  ;; position 4 in former-str
 
603
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
604
                    '(ustr-former-seq ustra-f))
 
605
  (assert-uim-equal '()
 
606
                    '(ustr-latter-seq ustra-f))
 
607
  (assert-uim-equal 5
 
608
                    '(ustr-length ustra-f))
 
609
  (assert-uim-equal 5
 
610
                    '(ustr-cursor-pos ustra-f))
 
611
  (uim-eval '(ustr-set-nth! ustra-f 4 "O"))
 
612
  (assert-uim-equal "O"
 
613
                    '(ustr-nth ustra-f 4))
 
614
  (assert-uim-equal '("h" "e" "l" "l" "O")
 
615
                    '(ustr-former-seq ustra-f))
 
616
  (assert-uim-equal '()
 
617
                    '(ustr-latter-seq ustra-f))
 
618
  (assert-uim-equal 5
 
619
                    '(ustr-length ustra-f))
 
620
  (assert-uim-equal 5
 
621
                    '(ustr-cursor-pos ustra-f))
 
622
  ;; position 0 in latter-str
 
623
  (assert-uim-equal '()
 
624
                    '(ustr-former-seq ustra-l))
 
625
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
626
                    '(ustr-latter-seq ustra-l))
 
627
  (assert-uim-equal 5
 
628
                    '(ustr-length ustra-l))
 
629
  (assert-uim-equal 0
 
630
                    '(ustr-cursor-pos ustra-l))
 
631
  (uim-eval '(ustr-set-nth! ustra-l 0 "H"))
 
632
  (assert-uim-equal "H"
 
633
                    '(ustr-nth ustra-l 0))
 
634
  (assert-uim-equal '()
 
635
                    '(ustr-former-seq ustra-l))
 
636
  (assert-uim-equal '("H" "e" "l" "l" "o")
 
637
                    '(ustr-latter-seq ustra-l))
 
638
  (assert-uim-equal 5
 
639
                    '(ustr-length ustra-l))
 
640
  (assert-uim-equal 0
 
641
                    '(ustr-cursor-pos ustra-l)))
 
642
 
 
643
(define (test-ustr-ref)
 
644
  (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 0)
 
645
                                (nthcdr 2 (ustr-former ustra-fl)))))
 
646
  (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 1)
 
647
                                (nthcdr 1 (ustr-former ustra-fl)))))
 
648
  (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 2)
 
649
                                (nthcdr 0 (ustr-former ustra-fl)))))
 
650
  (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 3)
 
651
                                (nthcdr 0 (ustr-latter ustra-fl)))))
 
652
  (assert-true  (uim-bool '(eq? (ustr-ref ustra-fl 4)
 
653
                                (nthcdr 1 (ustr-latter ustra-fl)))))
 
654
  (assert-uim-error '(ustr-ref ustra-fl 5))
 
655
  (assert-uim-error '(ustr-ref ustra-fl -1))
 
656
  ;; former-str
 
657
  (assert-true  (uim-bool '(eq? (ustr-ref ustra-f 4)
 
658
                                (nthcdr 0 (ustr-former ustra-f)))))
 
659
  (assert-uim-error '(ustr-ref ustra-f 5))
 
660
  ;; latter-str
 
661
  (assert-true  (uim-bool '(eq? (ustr-ref ustra-l 0)
 
662
                                (nthcdr 0 (ustr-latter ustra-l))))))
 
663
 
 
664
(define (test-ustr-append!)
 
665
  ;; former-latter
 
666
  (assert-uim-equal '("ん" "ン" "ン")
 
667
                    '(ustr-cursor-backside ustrj-fl))
 
668
  (assert-uim-equal 5
 
669
                    '(ustr-length ustrj-fl))
 
670
  (assert-uim-equal 3
 
671
                    '(ustr-cursor-pos ustrj-fl))
 
672
  (uim-eval '(ustr-append! ustrj-fl '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
673
                                      ("よ" "ヨ" "ヨ"))))
 
674
  (assert-uim-equal '("ん" "ン" "ン")
 
675
                    '(ustr-cursor-backside ustrj-fl))
 
676
  (assert-uim-equal 8
 
677
                    '(ustr-length ustrj-fl))
 
678
  (assert-uim-equal 3
 
679
                    '(ustr-cursor-pos ustrj-fl))
 
680
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
681
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
 
682
                      ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
 
683
                    '(ustr-whole-seq ustrj-fl))
 
684
  ;; former
 
685
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
686
                    '(ustr-cursor-backside ustrj-f))
 
687
  (assert-uim-equal 5
 
688
                    '(ustr-length ustrj-f))
 
689
  (assert-uim-equal 5
 
690
                    '(ustr-cursor-pos ustrj-f))
 
691
  (uim-eval '(ustr-append! ustrj-f '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
692
                                     ("よ" "ヨ" "ヨ"))))
 
693
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
694
                    '(ustr-cursor-backside ustrj-f))
 
695
  (assert-uim-equal 8
 
696
                    '(ustr-length ustrj-f))
 
697
  (assert-uim-equal 5
 
698
                    '(ustr-cursor-pos ustrj-f))
 
699
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
700
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
 
701
                      ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
 
702
                    '(ustr-whole-seq ustrj-f))
 
703
  ;; latter
 
704
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
705
  (assert-uim-equal 5
 
706
                    '(ustr-length ustrj-l))
 
707
  (assert-uim-equal 0
 
708
                    '(ustr-cursor-pos ustrj-l))
 
709
  (uim-eval '(ustr-append! ustrj-l '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
710
                                     ("よ" "ヨ" "ヨ"))))
 
711
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
712
  (assert-uim-equal 8
 
713
                    '(ustr-length ustrj-l))
 
714
  (assert-uim-equal 0
 
715
                    '(ustr-cursor-pos ustrj-l))
 
716
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
717
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
 
718
                      ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
 
719
                    '(ustr-whole-seq ustrj-l))
 
720
  ;; empty
 
721
  (assert-uim-error '(ustr-cursor-backside ustre))
 
722
  (assert-uim-equal 0
 
723
                    '(ustr-length ustre))
 
724
  (assert-uim-equal 0
 
725
                    '(ustr-cursor-pos ustre))
 
726
  (uim-eval '(ustr-append! ustre '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
727
                                   ("よ" "ヨ" "ヨ"))))
 
728
  (assert-uim-error '(ustr-cursor-backside ustre))
 
729
  (assert-uim-equal 3
 
730
                    '(ustr-length ustre))
 
731
  (assert-uim-equal 0
 
732
                    '(ustr-cursor-pos ustre))
 
733
  (assert-uim-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
 
734
                    '(ustr-whole-seq ustre)))
 
735
 
 
736
(define (test-ustr-append!-#2)
 
737
  ;; former-latter
 
738
  (assert-uim-equal '("ん" "ン" "ン")
 
739
                    '(ustr-cursor-backside ustrj-fl))
 
740
  (assert-uim-equal 5
 
741
                    '(ustr-length ustrj-fl))
 
742
  (assert-uim-equal 3
 
743
                    '(ustr-cursor-pos ustrj-fl))
 
744
  (uim-eval '(ustr-append! ustrj-fl ()))
 
745
  (assert-uim-equal '("ん" "ン" "ン")
 
746
                    '(ustr-cursor-backside ustrj-fl))
 
747
  (assert-uim-equal 5
 
748
                    '(ustr-length ustrj-fl))
 
749
  (assert-uim-equal 3
 
750
                    '(ustr-cursor-pos ustrj-fl))
 
751
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
752
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
753
                    '(ustr-whole-seq ustrj-fl))
 
754
  ;; former
 
755
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
756
                    '(ustr-cursor-backside ustrj-f))
 
757
  (assert-uim-equal 5
 
758
                    '(ustr-length ustrj-f))
 
759
  (assert-uim-equal 5
 
760
                    '(ustr-cursor-pos ustrj-f))
 
761
  (uim-eval '(ustr-append! ustrj-f ()))
 
762
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
763
                    '(ustr-cursor-backside ustrj-f))
 
764
  (assert-uim-equal 5
 
765
                    '(ustr-length ustrj-f))
 
766
  (assert-uim-equal 5
 
767
                    '(ustr-cursor-pos ustrj-f))
 
768
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
769
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
770
                    '(ustr-whole-seq ustrj-f))
 
771
  ;; latter
 
772
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
773
  (assert-uim-equal 5
 
774
                    '(ustr-length ustrj-l))
 
775
  (assert-uim-equal 0
 
776
                    '(ustr-cursor-pos ustrj-l))
 
777
  (uim-eval '(ustr-append! ustrj-l ()))
 
778
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
779
  (assert-uim-equal 5
 
780
                    '(ustr-length ustrj-l))
 
781
  (assert-uim-equal 0
 
782
                    '(ustr-cursor-pos ustrj-l))
 
783
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
784
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
785
                    '(ustr-whole-seq ustrj-l))
 
786
  ;; empty
 
787
  (assert-uim-error '(ustr-cursor-backside ustre))
 
788
  (assert-uim-equal 0
 
789
                    '(ustr-length ustre))
 
790
  (assert-uim-equal 0
 
791
                    '(ustr-cursor-pos ustre))
 
792
  (uim-eval '(ustr-append! ustre ()))
 
793
  (assert-uim-error '(ustr-cursor-backside ustre))
 
794
  (assert-uim-equal 0
 
795
                    '(ustr-length ustre))
 
796
  (assert-uim-equal 0
 
797
                    '(ustr-cursor-pos ustre)))
 
798
 
 
799
(define (test-ustr-prepend!)
 
800
  ;; former-latter
 
801
  (assert-uim-equal '("ん" "ン" "ン")
 
802
                    '(ustr-cursor-backside ustrj-fl))
 
803
  (assert-uim-equal 5
 
804
                    '(ustr-length ustrj-fl))
 
805
  (assert-uim-equal 3
 
806
                    '(ustr-cursor-pos ustrj-fl))
 
807
  (uim-eval '(ustr-prepend! ustrj-fl '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
808
                                       ("よ" "ヨ" "ヨ"))))
 
809
  (assert-uim-equal '("ん" "ン" "ン")
 
810
                    '(ustr-cursor-backside ustrj-fl))
 
811
  (assert-uim-equal 8
 
812
                    '(ustr-length ustrj-fl))
 
813
  (assert-uim-equal 6
 
814
                    '(ustr-cursor-pos ustrj-fl))
 
815
  (assert-uim-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
 
816
                      ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
817
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
818
                    '(ustr-whole-seq ustrj-fl))
 
819
  ;; former
 
820
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
821
                    '(ustr-cursor-backside ustrj-f))
 
822
  (assert-uim-equal 5
 
823
                    '(ustr-length ustrj-f))
 
824
  (assert-uim-equal 5
 
825
                    '(ustr-cursor-pos ustrj-f))
 
826
  (uim-eval '(ustr-prepend! ustrj-f '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
827
                                      ("よ" "ヨ" "ヨ"))))
 
828
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
829
                    '(ustr-cursor-backside ustrj-f))
 
830
  (assert-uim-equal 8
 
831
                    '(ustr-length ustrj-f))
 
832
  (assert-uim-equal 8
 
833
                    '(ustr-cursor-pos ustrj-f))
 
834
  (assert-uim-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
 
835
                      ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
836
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
837
                    '(ustr-whole-seq ustrj-f))
 
838
  ;; latter
 
839
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
840
  (assert-uim-equal 5
 
841
                    '(ustr-length ustrj-l))
 
842
  (assert-uim-equal 0
 
843
                    '(ustr-cursor-pos ustrj-l))
 
844
  (uim-eval '(ustr-prepend! ustrj-l '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
845
                                      ("よ" "ヨ" "ヨ"))))
 
846
  (assert-uim-equal '("よ" "ヨ" "ヨ")
 
847
                    '(ustr-cursor-backside ustrj-l))
 
848
  (assert-uim-equal 8
 
849
                    '(ustr-length ustrj-l))
 
850
  (assert-uim-equal 3
 
851
                    '(ustr-cursor-pos ustrj-l))
 
852
  (assert-uim-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
 
853
                      ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
854
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
855
                    '(ustr-whole-seq ustrj-l))
 
856
  ;; empty
 
857
  (assert-uim-error '(ustr-cursor-backside ustre))
 
858
  (assert-uim-equal 0
 
859
                    '(ustr-length ustre))
 
860
  (assert-uim-equal 0
 
861
                    '(ustr-cursor-pos ustre))
 
862
  (uim-eval '(ustr-prepend! ustre '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
863
                                    ("よ" "ヨ" "ヨ"))))
 
864
  (assert-uim-equal '("よ" "ヨ" "ヨ")
 
865
                    '(ustr-cursor-backside ustre))
 
866
  (assert-uim-equal 3
 
867
                    '(ustr-length ustre))
 
868
  (assert-uim-equal 3
 
869
                    '(ustr-cursor-pos ustre))
 
870
  (assert-uim-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
 
871
                    '(ustr-whole-seq ustre)))
 
872
 
 
873
(define (test-ustr-prepend!-#2)
 
874
  ;; former-latter
 
875
  (assert-uim-equal '("ん" "ン" "ン")
 
876
                    '(ustr-cursor-backside ustrj-fl))
 
877
  (assert-uim-equal 5
 
878
                    '(ustr-length ustrj-fl))
 
879
  (assert-uim-equal 3
 
880
                    '(ustr-cursor-pos ustrj-fl))
 
881
  (uim-eval '(ustr-prepend! ustrj-fl ()))
 
882
  (assert-uim-equal '("ん" "ン" "ン")
 
883
                    '(ustr-cursor-backside ustrj-fl))
 
884
  (assert-uim-equal 5
 
885
                    '(ustr-length ustrj-fl))
 
886
  (assert-uim-equal 3
 
887
                    '(ustr-cursor-pos ustrj-fl))
 
888
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
889
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
890
                    '(ustr-whole-seq ustrj-fl))
 
891
  ;; former
 
892
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
893
                    '(ustr-cursor-backside ustrj-f))
 
894
  (assert-uim-equal 5
 
895
                    '(ustr-length ustrj-f))
 
896
  (assert-uim-equal 5
 
897
                    '(ustr-cursor-pos ustrj-f))
 
898
  (uim-eval '(ustr-prepend! ustrj-f ()))
 
899
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
900
                    '(ustr-cursor-backside ustrj-f))
 
901
  (assert-uim-equal 5
 
902
                    '(ustr-length ustrj-f))
 
903
  (assert-uim-equal 5
 
904
                    '(ustr-cursor-pos ustrj-f))
 
905
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
906
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
907
                    '(ustr-whole-seq ustrj-f))
 
908
  ;; latter
 
909
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
910
  (assert-uim-equal 5
 
911
                    '(ustr-length ustrj-l))
 
912
  (assert-uim-equal 0
 
913
                    '(ustr-cursor-pos ustrj-l))
 
914
  (uim-eval '(ustr-prepend! ustrj-l ()))
 
915
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
916
  (assert-uim-equal 5
 
917
                    '(ustr-length ustrj-l))
 
918
  (assert-uim-equal 0
 
919
                    '(ustr-cursor-pos ustrj-l))
 
920
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
921
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
922
                    '(ustr-whole-seq ustrj-l))
 
923
  ;; empty
 
924
  (assert-uim-error '(ustr-cursor-backside ustre))
 
925
  (assert-uim-equal 0
 
926
                    '(ustr-length ustre))
 
927
  (assert-uim-equal 0
 
928
                    '(ustr-cursor-pos ustre))
 
929
  (uim-eval '(ustr-prepend! ustre ()))
 
930
  (assert-uim-error '(ustr-cursor-backside ustre))
 
931
  (assert-uim-equal 0
 
932
                    '(ustr-length ustre))
 
933
  (assert-uim-equal 0
 
934
                    '(ustr-cursor-pos ustre)))
 
935
 
 
936
(define (test-map-ustr-whole)
 
937
  ;; former-latter
 
938
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
939
                    '(map-ustr-whole car ustr-fl))
 
940
  (assert-uim-equal '("H" "E" "L" "L" "O")
 
941
                    '(map-ustr-whole cdr ustr-fl))
 
942
  (assert-uim-equal '("に" "ほ" "ん" "ご" "じゃ")
 
943
                    '(map-ustr-whole ja-kana-hiragana ustrj-fl))
 
944
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
945
                    '(map-ustr-whole ja-kana-katakana ustrj-fl))
 
946
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
947
                    '(map-ustr-whole ja-kana-hankaku ustrj-fl))
 
948
  ;; former
 
949
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
950
                    '(map-ustr-whole car ustr-f))
 
951
  (assert-uim-equal '("H" "E" "L" "L" "O")
 
952
                    '(map-ustr-whole cdr ustr-f))
 
953
  (assert-uim-equal '("に" "ほ" "ん" "ご" "じゃ")
 
954
                    '(map-ustr-whole ja-kana-hiragana ustrj-f))
 
955
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
956
                    '(map-ustr-whole ja-kana-katakana ustrj-f))
 
957
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
958
                    '(map-ustr-whole ja-kana-hankaku ustrj-f))
 
959
  ;; latter
 
960
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
961
                    '(map-ustr-whole car ustr-l))
 
962
  (assert-uim-equal '("H" "E" "L" "L" "O")
 
963
                    '(map-ustr-whole cdr ustr-l))
 
964
  (assert-uim-equal '("に" "ほ" "ん" "ご" "じゃ")
 
965
                    '(map-ustr-whole ja-kana-hiragana ustrj-l))
 
966
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
967
                    '(map-ustr-whole ja-kana-katakana ustrj-l))
 
968
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
969
                    '(map-ustr-whole ja-kana-hankaku ustrj-l))
 
970
  ;; empty
 
971
  (assert-uim-equal '()
 
972
                    '(map-ustr-whole cdr ustre)))
 
973
 
 
974
(define (test-map-ustr-former)
 
975
  ;; former-latter
 
976
  (assert-uim-equal '("h" "e" "l")
 
977
                    '(map-ustr-former car ustr-fl))
 
978
  (assert-uim-equal '("H" "E" "L")
 
979
                    '(map-ustr-former cdr ustr-fl))
 
980
  (assert-uim-equal '("に" "ほ" "ん")
 
981
                    '(map-ustr-former ja-kana-hiragana ustrj-fl))
 
982
  (assert-uim-equal '("ニ" "ホ" "ン")
 
983
                    '(map-ustr-former ja-kana-katakana ustrj-fl))
 
984
  (assert-uim-equal '("ニ" "ホ" "ン")
 
985
                    '(map-ustr-former ja-kana-hankaku ustrj-fl))
 
986
  ;; former
 
987
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
988
                    '(map-ustr-former car ustr-f))
 
989
  (assert-uim-equal '("H" "E" "L" "L" "O")
 
990
                    '(map-ustr-former cdr ustr-f))
 
991
  (assert-uim-equal '("に" "ほ" "ん" "ご" "じゃ")
 
992
                    '(map-ustr-former ja-kana-hiragana ustrj-f))
 
993
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
994
                    '(map-ustr-former ja-kana-katakana ustrj-f))
 
995
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
996
                    '(map-ustr-former ja-kana-hankaku ustrj-f))
 
997
  ;; latter
 
998
  (assert-uim-equal '()
 
999
                    '(map-ustr-former car ustr-l))
 
1000
  (assert-uim-equal '()
 
1001
                    '(map-ustr-former cdr ustr-l))
 
1002
  (assert-uim-equal '()
 
1003
                    '(map-ustr-former ja-kana-hiragana ustrj-l))
 
1004
  (assert-uim-equal '()
 
1005
                    '(map-ustr-former ja-kana-katakana ustrj-l))
 
1006
  (assert-uim-equal '()
 
1007
                    '(map-ustr-former ja-kana-hankaku ustrj-l))
 
1008
  ;; empty
 
1009
  (assert-uim-equal '()
 
1010
                    '(map-ustr-former cdr ustre)))
 
1011
 
 
1012
(define (test-map-ustr-latter)
 
1013
  ;; former-latter
 
1014
  (assert-uim-equal '("l" "o")
 
1015
                    '(map-ustr-latter car ustr-fl))
 
1016
  (assert-uim-equal '("L" "O")
 
1017
                    '(map-ustr-latter cdr ustr-fl))
 
1018
  (assert-uim-equal '("ご" "じゃ")
 
1019
                    '(map-ustr-latter ja-kana-hiragana ustrj-fl))
 
1020
  (assert-uim-equal '("ゴ" "ジャ")
 
1021
                    '(map-ustr-latter ja-kana-katakana ustrj-fl))
 
1022
  (assert-uim-equal '("ゴ" "ジャ")
 
1023
                    '(map-ustr-latter ja-kana-hankaku ustrj-fl))
 
1024
  ;; former
 
1025
  (assert-uim-equal '()
 
1026
                    '(map-ustr-latter car ustr-f))
 
1027
  (assert-uim-equal '()
 
1028
                    '(map-ustr-latter cdr ustr-f))
 
1029
  (assert-uim-equal '()
 
1030
                    '(map-ustr-latter ja-kana-hiragana ustrj-f))
 
1031
  (assert-uim-equal '()
 
1032
                    '(map-ustr-latter ja-kana-katakana ustrj-f))
 
1033
  (assert-uim-equal '()
 
1034
                    '(map-ustr-latter ja-kana-hankaku ustrj-f))
 
1035
  ;; latter
 
1036
  (assert-uim-equal '("h" "e" "l" "l" "o")
 
1037
                    '(map-ustr-latter car ustr-l))
 
1038
  (assert-uim-equal '("H" "E" "L" "L" "O")
 
1039
                    '(map-ustr-latter cdr ustr-l))
 
1040
  (assert-uim-equal '("に" "ほ" "ん" "ご" "じゃ")
 
1041
                    '(map-ustr-latter ja-kana-hiragana ustrj-l))
 
1042
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
1043
                    '(map-ustr-latter ja-kana-katakana ustrj-l))
 
1044
  (assert-uim-equal '("ニ" "ホ" "ン" "ゴ" "ジャ")
 
1045
                    '(map-ustr-latter ja-kana-hankaku ustrj-l))
 
1046
  ;; empty
 
1047
  (assert-uim-equal '()
 
1048
                    '(map-ustr-latter cdr ustre)))
 
1049
 
 
1050
(define (test-append-map-ustr-whole)
 
1051
  (assert-uim-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
 
1052
                    '(append-map-ustr-whole cdr ustrj-fl))
 
1053
  (assert-uim-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
 
1054
                    '(append-map-ustr-whole cdr ustrj-f))
 
1055
  (assert-uim-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
 
1056
                    '(append-map-ustr-whole cdr ustrj-l))
 
1057
  (assert-uim-equal '()
 
1058
                    '(append-map-ustr-whole cdr ustre)))
 
1059
 
 
1060
(define (test-append-map-ustr-former)
 
1061
  (assert-uim-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン")
 
1062
                    '(append-map-ustr-former cdr ustrj-fl))
 
1063
  (assert-uim-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
 
1064
                    '(append-map-ustr-former cdr ustrj-f))
 
1065
  (assert-uim-equal '()
 
1066
                    '(append-map-ustr-former cdr ustrj-l))
 
1067
  (assert-uim-equal '()
 
1068
                    '(append-map-ustr-former cdr ustre)))
 
1069
 
 
1070
(define (test-append-map-ustr-latter)
 
1071
  (assert-uim-equal '("ゴ" "ゴ" "ジャ" "ジャ")
 
1072
                    '(append-map-ustr-latter cdr ustrj-fl))
 
1073
  (assert-uim-equal '()
 
1074
                    '(append-map-ustr-latter cdr ustrj-f))
 
1075
  (assert-uim-equal '("ニ" "ニ" "ホ" "ホ" "ン" "ン" "ゴ" "ゴ" "ジャ" "ジャ")
 
1076
                    '(append-map-ustr-latter cdr ustrj-l))
 
1077
  (assert-uim-equal '()
 
1078
                    '(append-map-ustr-latter cdr ustre)))
 
1079
 
 
1080
(define (test-string-append-map-ustr-whole)
 
1081
  ;; former-latter
 
1082
  (assert-uim-equal "hello"
 
1083
                    '(string-append-map-ustr-whole car ustr-fl))
 
1084
  (assert-uim-equal "HELLO"
 
1085
                    '(string-append-map-ustr-whole cdr ustr-fl))
 
1086
  (assert-uim-equal "にほんごじゃ"
 
1087
                    (uim '(string-append-map-ustr-whole ja-kana-hiragana
 
1088
                                                        ustrj-fl)))
 
1089
  (assert-uim-equal "ニホンゴジャ"
 
1090
                    (uim '(string-append-map-ustr-whole ja-kana-katakana
 
1091
                                                        ustrj-fl)))
 
1092
  (assert-uim-equal "ニホンゴジャ"
 
1093
                    (uim '(string-append-map-ustr-whole ja-kana-hankaku
 
1094
                                                        ustrj-fl)))
 
1095
  ;; former
 
1096
  (assert-uim-equal "hello"
 
1097
                    '(string-append-map-ustr-whole car ustr-f))
 
1098
  (assert-uim-equal "HELLO"
 
1099
                    '(string-append-map-ustr-whole cdr ustr-f))
 
1100
  (assert-uim-equal "にほんごじゃ"
 
1101
                    (uim '(string-append-map-ustr-whole ja-kana-hiragana
 
1102
                                                        ustrj-f)))
 
1103
  (assert-uim-equal "ニホンゴジャ"
 
1104
                    (uim '(string-append-map-ustr-whole ja-kana-katakana
 
1105
                                                        ustrj-f)))
 
1106
  (assert-uim-equal "ニホンゴジャ"
 
1107
                    (uim '(string-append-map-ustr-whole ja-kana-hankaku
 
1108
                                                        ustrj-f)))
 
1109
  ;; latter
 
1110
  (assert-uim-equal "hello"
 
1111
                    '(string-append-map-ustr-whole car ustr-l))
 
1112
  (assert-uim-equal "HELLO"
 
1113
                    '(string-append-map-ustr-whole cdr ustr-l))
 
1114
  (assert-uim-equal "にほんごじゃ"
 
1115
                    (uim '(string-append-map-ustr-whole ja-kana-hiragana
 
1116
                                                        ustrj-l)))
 
1117
  (assert-uim-equal "ニホンゴジャ"
 
1118
                    (uim '(string-append-map-ustr-whole ja-kana-katakana
 
1119
                                                        ustrj-l)))
 
1120
  (assert-uim-equal "ニホンゴジャ"
 
1121
                    (uim '(string-append-map-ustr-whole ja-kana-hankaku
 
1122
                                                        ustrj-l)))
 
1123
  ;; empty
 
1124
  (assert-uim-equal ""
 
1125
                    '(string-append-map-ustr-whole cdr ustre)))
 
1126
 
 
1127
(define (test-string-append-map-ustr-former)
 
1128
  ;; former-latter
 
1129
  (assert-uim-equal "hel"
 
1130
                    '(string-append-map-ustr-former car ustr-fl))
 
1131
  (assert-uim-equal "HEL"
 
1132
                    '(string-append-map-ustr-former cdr ustr-fl))
 
1133
  (assert-uim-equal "にほん"
 
1134
                    (uim '(string-append-map-ustr-former ja-kana-hiragana
 
1135
                                                         ustrj-fl)))
 
1136
  (assert-uim-equal "ニホン"
 
1137
                    (uim '(string-append-map-ustr-former ja-kana-katakana
 
1138
                                                         ustrj-fl)))
 
1139
  (assert-uim-equal "ニホン"
 
1140
                    (uim '(string-append-map-ustr-former ja-kana-hankaku
 
1141
                                                         ustrj-fl)))
 
1142
  ;; former
 
1143
  (assert-uim-equal "hello"
 
1144
                    '(string-append-map-ustr-former car ustr-f))
 
1145
  (assert-uim-equal "HELLO"
 
1146
                    '(string-append-map-ustr-former cdr ustr-f))
 
1147
  (assert-uim-equal "にほんごじゃ"
 
1148
                    (uim '(string-append-map-ustr-former ja-kana-hiragana
 
1149
                                                         ustrj-f)))
 
1150
  (assert-uim-equal "ニホンゴジャ"
 
1151
                    (uim '(string-append-map-ustr-former ja-kana-katakana
 
1152
                                                         ustrj-f)))
 
1153
  (assert-uim-equal "ニホンゴジャ"
 
1154
                    (uim '(string-append-map-ustr-former ja-kana-hankaku
 
1155
                                                         ustrj-f)))
 
1156
  ;; latter
 
1157
  (assert-uim-equal ""
 
1158
                    '(string-append-map-ustr-former car ustr-l))
 
1159
  (assert-uim-equal ""
 
1160
                    '(string-append-map-ustr-former cdr ustr-l))
 
1161
  (assert-uim-equal ""
 
1162
                    (uim '(string-append-map-ustr-former ja-kana-hiragana
 
1163
                                                         ustrj-l)))
 
1164
  (assert-uim-equal ""
 
1165
                    (uim '(string-append-map-ustr-former ja-kana-katakana
 
1166
                                                         ustrj-l)))
 
1167
  (assert-uim-equal ""
 
1168
                    (uim '(string-append-map-ustr-former ja-kana-hankaku
 
1169
                                                         ustrj-l)))
 
1170
  ;; empty
 
1171
  (assert-uim-equal ""
 
1172
                    '(string-append-map-ustr-former cdr ustre)))
 
1173
 
 
1174
(define (test-string-append-map-ustr-latter)
 
1175
  ;; former-latter
 
1176
  (assert-uim-equal "lo"
 
1177
                    '(string-append-map-ustr-latter car ustr-fl))
 
1178
  (assert-uim-equal "LO"
 
1179
                    '(string-append-map-ustr-latter cdr ustr-fl))
 
1180
  (assert-uim-equal "ごじゃ"
 
1181
                    (uim '(string-append-map-ustr-latter ja-kana-hiragana
 
1182
                                                         ustrj-fl)))
 
1183
  (assert-uim-equal "ゴジャ"
 
1184
                    (uim '(string-append-map-ustr-latter ja-kana-katakana
 
1185
                                                         ustrj-fl)))
 
1186
  (assert-uim-equal "ゴジャ"
 
1187
                    (uim '(string-append-map-ustr-latter ja-kana-hankaku
 
1188
                                                         ustrj-fl)))
 
1189
  ;; former
 
1190
  (assert-uim-equal ""
 
1191
                    '(string-append-map-ustr-latter car ustr-f))
 
1192
  (assert-uim-equal ""
 
1193
                    '(string-append-map-ustr-latter cdr ustr-f))
 
1194
  (assert-uim-equal ""
 
1195
                    (uim '(string-append-map-ustr-latter ja-kana-hiragana
 
1196
                                                         ustrj-f)))
 
1197
  (assert-uim-equal ""
 
1198
                    (uim '(string-append-map-ustr-latter ja-kana-katakana
 
1199
                                                         ustrj-f)))
 
1200
  (assert-uim-equal ""
 
1201
                    (uim '(string-append-map-ustr-latter ja-kana-hankaku
 
1202
                                                         ustrj-f)))
 
1203
  ;; latter
 
1204
  (assert-uim-equal "hello"
 
1205
                    '(string-append-map-ustr-latter car ustr-l))
 
1206
  (assert-uim-equal "HELLO"
 
1207
                    '(string-append-map-ustr-latter cdr ustr-l))
 
1208
  (assert-uim-equal "にほんごじゃ"
 
1209
                    (uim '(string-append-map-ustr-latter ja-kana-hiragana
 
1210
                                                         ustrj-l)))
 
1211
  (assert-uim-equal "ニホンゴジャ"
 
1212
                    (uim '(string-append-map-ustr-latter ja-kana-katakana
 
1213
                                                         ustrj-l)))
 
1214
  (assert-uim-equal "ニホンゴジャ"
 
1215
                    (uim '(string-append-map-ustr-latter ja-kana-hankaku
 
1216
                                                         ustrj-l)))
 
1217
  ;; empty
 
1218
  (assert-uim-equal ""
 
1219
                    '(string-append-map-ustr-latter cdr ustre)))
 
1220
 
 
1221
(define (test-ustr-cursor-at-beginning?)
 
1222
  (assert-uim-false '(ustr-cursor-at-beginning? ustra-fl))
 
1223
  (assert-uim-false '(ustr-cursor-at-beginning? ustra-f))
 
1224
  (assert-uim-true  '(ustr-cursor-at-beginning? ustra-l))
 
1225
  (assert-uim-true  '(ustr-cursor-at-beginning? ustre)))
 
1226
 
 
1227
(define (test-ustr-cursor-at-end?)
 
1228
  (assert-uim-false '(ustr-cursor-at-end? ustra-fl))
 
1229
  (assert-uim-true  '(ustr-cursor-at-end? ustra-f))
 
1230
  (assert-uim-false '(ustr-cursor-at-end? ustra-l))
 
1231
  (assert-uim-true  '(ustr-cursor-at-end? ustre)))
 
1232
 
 
1233
(define (test-ustr-cursor-pos)
 
1234
  (assert-uim-equal 3
 
1235
                    '(ustr-cursor-pos ustr-fl))
 
1236
  (assert-uim-equal 5
 
1237
                    '(ustr-cursor-pos ustr-f))
 
1238
  (assert-uim-equal 0
 
1239
                    '(ustr-cursor-pos ustr-l))
 
1240
 
 
1241
  (assert-uim-equal 3
 
1242
                    '(ustr-cursor-pos ustrj-fl))
 
1243
  (assert-uim-equal 5
 
1244
                    '(ustr-cursor-pos ustrj-f))
 
1245
  (assert-uim-equal 0
 
1246
                    '(ustr-cursor-pos ustrj-l))
 
1247
 
 
1248
  (assert-uim-equal 3
 
1249
                    '(ustr-cursor-pos ustra-fl))
 
1250
  (assert-uim-equal 5
 
1251
                    '(ustr-cursor-pos ustra-f))
 
1252
  (assert-uim-equal 0
 
1253
                    '(ustr-cursor-pos ustra-l))
 
1254
 
 
1255
  (assert-uim-equal 0
 
1256
                    '(ustr-cursor-pos ustre)))
 
1257
 
 
1258
(define (test-ustr-set-cursor-pos!)
 
1259
  ;; former-latter
 
1260
  (assert-uim-equal 3
 
1261
                    '(ustr-cursor-pos ustra-fl))
 
1262
  (assert-uim-true  '(ustr-set-cursor-pos! ustra-fl 0))
 
1263
  (assert-uim-equal 0
 
1264
                    '(ustr-cursor-pos ustra-fl))
 
1265
  (assert-uim-true  '(ustr-set-cursor-pos! ustra-fl 5))
 
1266
  (assert-uim-equal 5
 
1267
                    '(ustr-cursor-pos ustra-fl))
 
1268
  (assert-uim-true  '(ustr-set-cursor-pos! ustra-fl 2))
 
1269
  (assert-uim-equal 2
 
1270
                    '(ustr-cursor-pos ustra-fl))
 
1271
  (assert-uim-false '(ustr-set-cursor-pos! ustra-fl -1))
 
1272
  (assert-uim-false '(ustr-set-cursor-pos! ustra-fl 6))
 
1273
  ;; empty
 
1274
  (assert-uim-equal 0
 
1275
                    '(ustr-cursor-pos ustre))
 
1276
  (assert-uim-true  '(ustr-set-cursor-pos! ustra-fl 0))
 
1277
  (assert-uim-equal 0
 
1278
                    '(ustr-cursor-pos ustre))
 
1279
  (assert-uim-false '(ustr-set-cursor-pos! ustre -1))
 
1280
  (assert-uim-false '(ustr-set-cursor-pos! ustre 1)))
 
1281
 
 
1282
(define (test-ustr-cursor-move!)
 
1283
  (assert-uim-equal 3
 
1284
                    '(ustr-cursor-pos ustra-fl))
 
1285
  (assert-uim-false '(ustr-cursor-move! ustra-fl -4))
 
1286
  (assert-uim-equal 3
 
1287
                    '(ustr-cursor-pos ustra-fl))
 
1288
 
 
1289
  (assert-uim-false '(ustr-cursor-move! ustra-fl 3))
 
1290
  (assert-uim-equal 3
 
1291
                    '(ustr-cursor-pos ustra-fl))
 
1292
 
 
1293
  (assert-uim-true  '(ustr-cursor-move! ustra-fl 2))
 
1294
  (assert-uim-equal 5
 
1295
                    '(ustr-cursor-pos ustra-fl))
 
1296
 
 
1297
  (assert-uim-true  '(ustr-cursor-move! ustra-fl -3))
 
1298
  (assert-uim-equal 2
 
1299
                    '(ustr-cursor-pos ustra-fl))
 
1300
 
 
1301
  (assert-uim-true  '(ustr-cursor-move! ustra-fl 1))
 
1302
  (assert-uim-equal 3
 
1303
                    '(ustr-cursor-pos ustra-fl))
 
1304
 
 
1305
  (assert-uim-true  '(ustr-cursor-move! ustra-fl 0))
 
1306
  (assert-uim-equal 3
 
1307
                    '(ustr-cursor-pos ustra-fl))
 
1308
 
 
1309
  (assert-uim-true  '(ustr-cursor-move! ustra-fl -3))
 
1310
  (assert-uim-equal 0
 
1311
                    '(ustr-cursor-pos ustra-fl))
 
1312
 
 
1313
  (assert-uim-equal 0
 
1314
                    '(ustr-cursor-pos ustre))
 
1315
  (assert-uim-true  '(ustr-cursor-move! ustra-fl 0))
 
1316
  (assert-uim-equal 0
 
1317
                    '(ustr-cursor-pos ustre))
 
1318
 
 
1319
  (assert-uim-false '(ustr-cursor-move! ustre -1))
 
1320
  (assert-uim-false '(ustr-cursor-move! ustre 1)))
 
1321
 
 
1322
(define (test-ustr-cursor-move-backward!)
 
1323
  (assert-uim-equal 3
 
1324
                    '(ustr-cursor-pos ustra-fl))
 
1325
 
 
1326
  (uim-eval '(ustr-cursor-move-backward! ustra-fl))
 
1327
  (assert-uim-equal 2
 
1328
                    '(ustr-cursor-pos ustra-fl))
 
1329
 
 
1330
  (uim-eval '(ustr-cursor-move-backward! ustra-fl))
 
1331
  (assert-uim-equal 1
 
1332
                    '(ustr-cursor-pos ustra-fl))
 
1333
 
 
1334
  (uim-eval '(ustr-cursor-move-backward! ustra-fl))
 
1335
  (assert-uim-equal 0
 
1336
                    '(ustr-cursor-pos ustra-fl))
 
1337
 
 
1338
  (uim-eval '(ustr-cursor-move-backward! ustra-fl))
 
1339
  (assert-uim-equal 0
 
1340
                    '(ustr-cursor-pos ustra-fl))
 
1341
  ;; start from end of string
 
1342
  (assert-uim-equal 5
 
1343
                    '(ustr-cursor-pos ustra-f))
 
1344
  (uim-eval '(ustr-cursor-move-backward! ustra-f))
 
1345
  (assert-uim-equal 4
 
1346
                    '(ustr-cursor-pos ustra-f)))
 
1347
 
 
1348
(define (test-ustr-cursor-move-forward!)
 
1349
  (assert-uim-equal 3
 
1350
                    '(ustr-cursor-pos ustra-fl))
 
1351
 
 
1352
  (uim-eval '(ustr-cursor-move-forward! ustra-fl))
 
1353
  (assert-uim-equal 4
 
1354
                    '(ustr-cursor-pos ustra-fl))
 
1355
 
 
1356
  (uim-eval '(ustr-cursor-move-forward! ustra-fl))
 
1357
  (assert-uim-equal 5
 
1358
                    '(ustr-cursor-pos ustra-fl))
 
1359
 
 
1360
  (uim-eval '(ustr-cursor-move-forward! ustra-fl))
 
1361
  (assert-uim-equal 5
 
1362
                    '(ustr-cursor-pos ustra-fl))
 
1363
 
 
1364
  ;; start from beginning of string
 
1365
  (assert-uim-equal 0
 
1366
                    '(ustr-cursor-pos ustra-l))
 
1367
  (uim-eval '(ustr-cursor-move-forward! ustra-l))
 
1368
  (assert-uim-equal 1
 
1369
                    '(ustr-cursor-pos ustra-l)))
 
1370
 
 
1371
(define (test-ustr-cursor-move-beginning!)
 
1372
  (assert-uim-equal 3
 
1373
                    '(ustr-cursor-pos ustra-fl))
 
1374
 
 
1375
  (uim-eval '(ustr-cursor-move-beginning! ustra-fl))
 
1376
  (assert-uim-equal 0
 
1377
                    '(ustr-cursor-pos ustra-fl))
 
1378
 
 
1379
  (uim-eval '(ustr-cursor-move-beginning! ustra-fl))
 
1380
  (assert-uim-equal 0
 
1381
                    '(ustr-cursor-pos ustra-fl))
 
1382
 
 
1383
  ;; start from end of string
 
1384
  (assert-uim-equal 5
 
1385
                    '(ustr-cursor-pos ustra-f))
 
1386
  (uim-eval '(ustr-cursor-move-beginning! ustra-f))
 
1387
  (assert-uim-equal 0
 
1388
                    '(ustr-cursor-pos ustra-f)))
 
1389
 
 
1390
(define (test-ustr-cursor-move-end!)
 
1391
  (assert-uim-equal 3
 
1392
                    '(ustr-cursor-pos ustra-fl))
 
1393
 
 
1394
  (uim-eval '(ustr-cursor-move-end! ustra-fl))
 
1395
  (assert-uim-equal 5
 
1396
                    '(ustr-cursor-pos ustra-fl))
 
1397
 
 
1398
  (uim-eval '(ustr-cursor-move-end! ustra-fl))
 
1399
  (assert-uim-equal 5
 
1400
                    '(ustr-cursor-pos ustra-fl))
 
1401
 
 
1402
  ;; start from beginning of string
 
1403
  (assert-uim-equal 0
 
1404
                    '(ustr-cursor-pos ustra-l))
 
1405
  (uim-eval '(ustr-cursor-move-end! ustra-l))
 
1406
  (assert-uim-equal 5
 
1407
                    '(ustr-cursor-pos ustra-l)))
 
1408
 
 
1409
(define (test-ustr-cursor-frontside)
 
1410
  ;; former-latter
 
1411
  (assert-uim-equal '("l" . "L")
 
1412
                    '(ustr-cursor-frontside ustr-fl))
 
1413
  (assert-uim-equal '("ご" "ゴ" "ゴ")
 
1414
                    '(ustr-cursor-frontside ustrj-fl))
 
1415
  (assert-uim-equal "l"
 
1416
                    '(ustr-cursor-frontside ustra-fl))
 
1417
  ;; former
 
1418
  (assert-uim-error '(ustr-cursor-frontside ustr-f))
 
1419
  (assert-uim-error '(ustr-cursor-frontside ustrj-f))
 
1420
  (assert-uim-error '(ustr-cursor-frontside ustra-f))
 
1421
  ;; latter
 
1422
  (assert-uim-equal '("h" . "H")
 
1423
                    '(ustr-cursor-frontside ustr-l))
 
1424
  (assert-uim-equal '("に" "ニ" "ニ")
 
1425
                    '(ustr-cursor-frontside ustrj-l))
 
1426
  (assert-uim-equal "h"
 
1427
                    '(ustr-cursor-frontside ustra-l))
 
1428
  ;; empty
 
1429
  (assert-uim-error '(ustr-cursor-frontside ustre)))
 
1430
 
 
1431
(define (test-ustr-cursor-backside)
 
1432
  ;; former-latter
 
1433
  (assert-uim-equal '("l" . "L")
 
1434
                    '(ustr-cursor-backside ustr-fl))
 
1435
  (assert-uim-equal '("ん" "ン" "ン")
 
1436
                    '(ustr-cursor-backside ustrj-fl))
 
1437
  (assert-uim-equal "l"
 
1438
                    '(ustr-cursor-backside ustra-fl))
 
1439
  ;; former
 
1440
  (assert-uim-equal '("o" . "O")
 
1441
                    '(ustr-cursor-backside ustr-f))
 
1442
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1443
                    '(ustr-cursor-backside ustrj-f))
 
1444
  (assert-uim-equal "o"
 
1445
                    '(ustr-cursor-backside ustra-f))
 
1446
  ;; latter
 
1447
  (assert-uim-error '(ustr-cursor-backside ustr-l))
 
1448
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1449
  (assert-uim-error '(ustr-cursor-backside ustra-l))
 
1450
  ;; empty
 
1451
  (assert-uim-error '(ustr-cursor-backside ustre)))
 
1452
 
 
1453
(define (test-ustr-cursor-delete-frontside!)
 
1454
  ;; former-latter
 
1455
  (assert-uim-equal '("ご" "ゴ" "ゴ")
 
1456
                    '(ustr-cursor-frontside ustrj-fl))
 
1457
  (assert-uim-equal 5
 
1458
                    '(ustr-length ustrj-fl))
 
1459
  (assert-uim-equal 3
 
1460
                    '(ustr-cursor-pos ustrj-fl))
 
1461
  (assert-uim-true  '(ustr-cursor-delete-frontside! ustrj-fl))
 
1462
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1463
                    '(ustr-cursor-frontside ustrj-fl))
 
1464
  (assert-uim-equal 4
 
1465
                    '(ustr-length ustrj-fl))
 
1466
  (assert-uim-equal 3
 
1467
                    '(ustr-cursor-pos ustrj-fl))
 
1468
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1469
                      ("じゃ" "ジャ" "ジャ"))
 
1470
                    '(ustr-whole-seq ustrj-fl))
 
1471
  ;; former
 
1472
  (assert-uim-error '(ustr-cursor-frontside ustrj-f))
 
1473
  (assert-uim-equal 5
 
1474
                    '(ustr-length ustrj-f))
 
1475
  (assert-uim-equal 5
 
1476
                    '(ustr-cursor-pos ustrj-f))
 
1477
  (assert-uim-false '(ustr-cursor-delete-frontside! ustrj-f))
 
1478
  (assert-uim-error '(ustr-cursor-frontside ustrj-f))
 
1479
  (assert-uim-equal 5
 
1480
                    '(ustr-length ustrj-f))
 
1481
  (assert-uim-equal 5
 
1482
                    '(ustr-cursor-pos ustrj-f))
 
1483
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1484
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1485
                    '(ustr-whole-seq ustrj-f))
 
1486
  ;; latter
 
1487
  (assert-uim-equal '("に" "ニ" "ニ")
 
1488
                    '(ustr-cursor-frontside ustrj-l))
 
1489
  (assert-uim-equal 5
 
1490
                    '(ustr-length ustrj-l))
 
1491
  (assert-uim-equal 0
 
1492
                    '(ustr-cursor-pos ustrj-l))
 
1493
  (assert-uim-true  '(ustr-cursor-delete-frontside! ustrj-l))
 
1494
  (assert-uim-equal '("ほ" "ホ" "ホ")
 
1495
                    '(ustr-cursor-frontside ustrj-l))
 
1496
  (assert-uim-equal 4
 
1497
                    '(ustr-length ustrj-l))
 
1498
  (assert-uim-equal 0
 
1499
                    '(ustr-cursor-pos ustrj-l))
 
1500
  (assert-uim-equal '(("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1501
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1502
                    '(ustr-whole-seq ustrj-l))
 
1503
  ;; empty
 
1504
  (assert-uim-error '(ustr-cursor-frontside ustre))
 
1505
  (assert-uim-equal 0
 
1506
                    '(ustr-length ustre))
 
1507
  (assert-uim-equal 0
 
1508
                    '(ustr-cursor-pos ustre))
 
1509
  (assert-uim-false '(ustr-cursor-delete-frontside! ustre))
 
1510
  (assert-uim-error '(ustr-cursor-frontside ustre))
 
1511
  (assert-uim-equal 0
 
1512
                    '(ustr-length ustre))
 
1513
  (assert-uim-equal 0
 
1514
                    '(ustr-cursor-pos ustre)))
 
1515
 
 
1516
(define (test-ustr-cursor-delete-backside!)
 
1517
  ;; former-latter
 
1518
  (assert-uim-equal '("ん" "ン" "ン")
 
1519
                    '(ustr-cursor-backside ustrj-fl))
 
1520
  (assert-uim-equal 5
 
1521
                    '(ustr-length ustrj-fl))
 
1522
  (assert-uim-equal 3
 
1523
                    '(ustr-cursor-pos ustrj-fl))
 
1524
  (assert-uim-true  '(ustr-cursor-delete-backside! ustrj-fl))
 
1525
  (assert-uim-equal '("ほ" "ホ" "ホ")
 
1526
                    '(ustr-cursor-backside ustrj-fl))
 
1527
  (assert-uim-equal 4
 
1528
                    '(ustr-length ustrj-fl))
 
1529
  (assert-uim-equal 2
 
1530
                    '(ustr-cursor-pos ustrj-fl))
 
1531
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ")
 
1532
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1533
                    '(ustr-whole-seq ustrj-fl))
 
1534
  ;; former
 
1535
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1536
                    '(ustr-cursor-backside ustrj-f))
 
1537
  (assert-uim-equal 5
 
1538
                    '(ustr-length ustrj-f))
 
1539
  (assert-uim-equal 5
 
1540
                    '(ustr-cursor-pos ustrj-f))
 
1541
  (assert-uim-true  '(ustr-cursor-delete-backside! ustrj-f))
 
1542
  (assert-uim-equal '("ご" "ゴ" "ゴ")
 
1543
                    '(ustr-cursor-backside ustrj-f))
 
1544
  (assert-uim-equal 4
 
1545
                    '(ustr-length ustrj-f))
 
1546
  (assert-uim-equal 4
 
1547
                    '(ustr-cursor-pos ustrj-f))
 
1548
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1549
                      ("ご" "ゴ" "ゴ"))
 
1550
                    '(ustr-whole-seq ustrj-f))
 
1551
  ;; latter
 
1552
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1553
  (assert-uim-equal 5
 
1554
                    '(ustr-length ustrj-l))
 
1555
  (assert-uim-equal 0
 
1556
                    '(ustr-cursor-pos ustrj-l))
 
1557
  (assert-uim-false '(ustr-cursor-delete-backside! ustrj-l))
 
1558
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1559
  (assert-uim-equal 5
 
1560
                    '(ustr-length ustrj-l))
 
1561
  (assert-uim-equal 0
 
1562
                    '(ustr-cursor-pos ustrj-l))
 
1563
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1564
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1565
                    '(ustr-whole-seq ustrj-l))
 
1566
  ;; empty
 
1567
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1568
  (assert-uim-equal 0
 
1569
                    '(ustr-length ustre))
 
1570
  (assert-uim-false '(ustr-cursor-delete-backside! ustre))
 
1571
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1572
  (assert-uim-equal 0
 
1573
                    '(ustr-length ustre)))
 
1574
 
 
1575
(define (test-ustr-insert-elem!)
 
1576
  ;; former-latter
 
1577
  (assert-uim-equal '("ん" "ン" "ン")
 
1578
                    '(ustr-cursor-backside ustrj-fl))
 
1579
  (assert-uim-equal 5
 
1580
                    '(ustr-length ustrj-fl))
 
1581
  (assert-uim-equal 3
 
1582
                    '(ustr-cursor-pos ustrj-fl))
 
1583
  (uim-eval '(ustr-insert-elem! ustrj-fl '("んー" "ンー" "ンー")))
 
1584
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1585
                    '(ustr-cursor-backside ustrj-fl))
 
1586
  (assert-uim-equal 6
 
1587
                    '(ustr-length ustrj-fl))
 
1588
  (assert-uim-equal 4
 
1589
                    '(ustr-cursor-pos ustrj-fl))
 
1590
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1591
                      ("んー" "ンー" "ンー")
 
1592
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1593
                    '(ustr-whole-seq ustrj-fl))
 
1594
  ;; former
 
1595
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1596
                    '(ustr-cursor-backside ustrj-f))
 
1597
  (assert-uim-equal 5
 
1598
                    '(ustr-length ustrj-f))
 
1599
  (assert-uim-equal 5
 
1600
                    '(ustr-cursor-pos ustrj-f))
 
1601
  (uim-eval '(ustr-insert-elem! ustrj-f '("んー" "ンー" "ンー")))
 
1602
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1603
                    '(ustr-cursor-backside ustrj-f))
 
1604
  (assert-uim-equal 6
 
1605
                    '(ustr-length ustrj-f))
 
1606
  (assert-uim-equal 6
 
1607
                    '(ustr-cursor-pos ustrj-f))
 
1608
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1609
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ") ("んー" "ンー" "ンー"))
 
1610
                    '(ustr-whole-seq ustrj-f))
 
1611
  ;; latter
 
1612
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1613
  (assert-uim-equal 5
 
1614
                    '(ustr-length ustrj-l))
 
1615
  (assert-uim-equal 0
 
1616
                    '(ustr-cursor-pos ustrj-l))
 
1617
  (uim-eval '(ustr-insert-elem! ustrj-l '("んー" "ンー" "ンー")))
 
1618
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1619
                    '(ustr-cursor-backside ustrj-l))
 
1620
  (assert-uim-equal 6
 
1621
                    '(ustr-length ustrj-l))
 
1622
  (assert-uim-equal 1
 
1623
                    '(ustr-cursor-pos ustrj-l))
 
1624
  (assert-uim-equal '(("んー" "ンー" "ンー")
 
1625
                      ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1626
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1627
                    '(ustr-whole-seq ustrj-l))
 
1628
  ;; empty
 
1629
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1630
  (assert-uim-equal 0
 
1631
                    '(ustr-length ustre))
 
1632
  (uim-eval '(ustr-insert-elem! ustre '("んー" "ンー" "ンー")))
 
1633
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1634
                    '(ustr-cursor-backside ustre))
 
1635
  (assert-uim-equal 1
 
1636
                    '(ustr-length ustre))
 
1637
  (assert-uim-equal '(("んー" "ンー" "ンー"))
 
1638
                    '(ustr-whole-seq ustre)))
 
1639
 
 
1640
(define (test-ustr-cursor-set-frontside!)
 
1641
  ;; former-latter
 
1642
  (assert-uim-equal '("ご" "ゴ" "ゴ")
 
1643
                    '(ustr-cursor-frontside ustrj-fl))
 
1644
  (assert-uim-equal 5
 
1645
                    '(ustr-length ustrj-fl))
 
1646
  (assert-uim-equal 3
 
1647
                    '(ustr-cursor-pos ustrj-fl))
 
1648
  (assert-true (uim-bool '(ustr-cursor-set-frontside! ustrj-fl
 
1649
                                                      '("んー" "ンー" "ンー"))))
 
1650
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1651
                    '(ustr-cursor-frontside ustrj-fl))
 
1652
  (assert-uim-equal 5
 
1653
                    '(ustr-length ustrj-fl))
 
1654
  (assert-uim-equal 3
 
1655
                    '(ustr-cursor-pos ustrj-fl))
 
1656
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1657
                      ("んー" "ンー" "ンー") ("じゃ" "ジャ" "ジャ"))
 
1658
                    '(ustr-whole-seq ustrj-fl))
 
1659
  ;; former
 
1660
  (assert-uim-error '(ustr-cursor-frontside ustrj-f))
 
1661
  (assert-uim-equal 5
 
1662
                    '(ustr-length ustrj-f))
 
1663
  (assert-uim-equal 5
 
1664
                    '(ustr-cursor-pos ustrj-f))
 
1665
  (assert-false (uim-bool '(ustr-cursor-set-frontside! ustrj-f
 
1666
                                                       '("んー" "ンー" "ンー"))))
 
1667
  (assert-uim-equal 5
 
1668
                    '(ustr-length ustrj-f))
 
1669
  (assert-uim-equal 5
 
1670
                    '(ustr-cursor-pos ustrj-f))
 
1671
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1672
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1673
                    '(ustr-whole-seq ustrj-f))
 
1674
  ;; latter
 
1675
  (assert-uim-equal '("に" "ニ" "ニ")
 
1676
                    '(ustr-cursor-frontside ustrj-l))
 
1677
  (assert-uim-equal 5
 
1678
                    '(ustr-length ustrj-l))
 
1679
  (assert-uim-equal 0
 
1680
                    '(ustr-cursor-pos ustrj-l))
 
1681
  (assert-true  (uim-bool '(ustr-cursor-set-frontside! ustrj-l
 
1682
                                                       '("んー" "ンー" "ンー"))))
 
1683
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1684
                    '(ustr-cursor-frontside ustrj-l))
 
1685
  (assert-uim-equal 5
 
1686
                    '(ustr-length ustrj-l))
 
1687
  (assert-uim-equal 0
 
1688
                    '(ustr-cursor-pos ustrj-l))
 
1689
  (assert-uim-equal '(("んー" "ンー" "ンー") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1690
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1691
                    '(ustr-whole-seq ustrj-l))
 
1692
  ;; empty
 
1693
  (assert-uim-error '(ustr-cursor-frontside ustre))
 
1694
  (assert-uim-equal 0
 
1695
                    '(ustr-length ustre))
 
1696
  (assert-false (uim-bool '(ustr-cursor-set-frontside! ustre
 
1697
                                                       '("んー" "ンー" "ンー"))))
 
1698
  (assert-uim-error '(ustr-cursor-frontside ustre))
 
1699
  (assert-uim-equal 0
 
1700
                    '(ustr-length ustre))
 
1701
  (assert-uim-equal '()
 
1702
                    '(ustr-whole-seq ustre)))
 
1703
 
 
1704
(define (test-ustr-cursor-set-backside!)
 
1705
  ;; former-latter
 
1706
  (assert-uim-equal '("ん" "ン" "ン")
 
1707
                    '(ustr-cursor-backside ustrj-fl))
 
1708
  (assert-uim-equal 5
 
1709
                    '(ustr-length ustrj-fl))
 
1710
  (assert-uim-equal 3
 
1711
                    '(ustr-cursor-pos ustrj-fl))
 
1712
  (assert-true  (uim-bool '(ustr-cursor-set-backside! ustrj-fl
 
1713
                                                      '("んー" "ンー" "ンー"))))
 
1714
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1715
                    '(ustr-cursor-backside ustrj-fl))
 
1716
  (assert-uim-equal 5
 
1717
                    '(ustr-length ustrj-fl))
 
1718
  (assert-uim-equal 3
 
1719
                    '(ustr-cursor-pos ustrj-fl))
 
1720
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("んー" "ンー" "ンー")
 
1721
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1722
                    '(ustr-whole-seq ustrj-fl))
 
1723
  ;; former
 
1724
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1725
                    '(ustr-cursor-backside ustrj-f))
 
1726
  (assert-uim-equal 5
 
1727
                    '(ustr-length ustrj-f))
 
1728
  (assert-uim-equal 5
 
1729
                    '(ustr-cursor-pos ustrj-f))
 
1730
  (assert-true  (uim-bool '(ustr-cursor-set-backside! ustrj-f
 
1731
                                                      '("んー" "ンー" "ンー"))))
 
1732
  (assert-uim-equal '("んー" "ンー" "ンー")
 
1733
                    '(ustr-cursor-backside ustrj-f))
 
1734
  (assert-uim-equal 5
 
1735
                    '(ustr-length ustrj-f))
 
1736
  (assert-uim-equal 5
 
1737
                    '(ustr-cursor-pos ustrj-f))
 
1738
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1739
                      ("ご" "ゴ" "ゴ") ("んー" "ンー" "ンー"))
 
1740
                    '(ustr-whole-seq ustrj-f))
 
1741
  ;; latter
 
1742
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1743
  (assert-uim-equal 5
 
1744
                    '(ustr-length ustrj-l))
 
1745
  (assert-uim-equal 0
 
1746
                    '(ustr-cursor-pos ustrj-l))
 
1747
  (assert-false (uim-bool '(ustr-cursor-set-backside! ustrj-l
 
1748
                                                      '("んー" "ンー" "ンー"))))
 
1749
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1750
  (assert-uim-equal 5
 
1751
                    '(ustr-length ustrj-l))
 
1752
  (assert-uim-equal 0
 
1753
                    '(ustr-cursor-pos ustrj-l))
 
1754
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1755
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1756
                    '(ustr-whole-seq ustrj-l))
 
1757
  ;; empty
 
1758
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1759
  (assert-uim-equal 0
 
1760
                    '(ustr-length ustre))
 
1761
  (assert-false (uim-bool '(ustr-cursor-set-backside! ustre
 
1762
                                                      '("んー" "ンー" "ンー"))))
 
1763
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1764
  (assert-uim-equal 0
 
1765
                    '(ustr-length ustre))
 
1766
  (assert-uim-equal '()
 
1767
                    '(ustr-whole-seq ustre)))
 
1768
 
 
1769
(define (test-ustr-insert-seq!)
 
1770
  ;; former-latter
 
1771
  (assert-uim-equal '("ん" "ン" "ン")
 
1772
                    '(ustr-cursor-backside ustrj-fl))
 
1773
  (assert-uim-equal 5
 
1774
                    '(ustr-length ustrj-fl))
 
1775
  (assert-uim-equal 3
 
1776
                    '(ustr-cursor-pos ustrj-fl))
 
1777
  (uim-eval '(ustr-insert-seq! ustrj-fl '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
1778
                                          ("よ" "ヨ" "ヨ"))))
 
1779
  (assert-uim-equal '("よ" "ヨ" "ヨ")
 
1780
                    '(ustr-cursor-backside ustrj-fl))
 
1781
  (assert-uim-equal 8
 
1782
                    '(ustr-length ustrj-fl))
 
1783
  (assert-uim-equal 6
 
1784
                    '(ustr-cursor-pos ustrj-fl))
 
1785
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1786
                      ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
 
1787
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1788
                    '(ustr-whole-seq ustrj-fl))
 
1789
  ;; former
 
1790
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1791
                    '(ustr-cursor-backside ustrj-f))
 
1792
  (assert-uim-equal 5
 
1793
                    '(ustr-length ustrj-f))
 
1794
  (assert-uim-equal 5
 
1795
                    '(ustr-cursor-pos ustrj-f))
 
1796
  (uim-eval '(ustr-insert-seq! ustrj-f '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
1797
                                         ("よ" "ヨ" "ヨ"))))
 
1798
  (assert-uim-equal '("よ" "ヨ" "ヨ")
 
1799
                    '(ustr-cursor-backside ustrj-f))
 
1800
  (assert-uim-equal 8
 
1801
                    '(ustr-length ustrj-f))
 
1802
  (assert-uim-equal 8
 
1803
                    '(ustr-cursor-pos ustrj-f))
 
1804
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1805
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ")
 
1806
                      ("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
 
1807
                    '(ustr-whole-seq ustrj-f))
 
1808
  ;; latter
 
1809
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1810
  (assert-uim-equal 5
 
1811
                    '(ustr-length ustrj-l))
 
1812
  (assert-uim-equal 0
 
1813
                    '(ustr-cursor-pos ustrj-l))
 
1814
  (uim-eval '(ustr-insert-seq! ustrj-l '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
1815
                                         ("よ" "ヨ" "ヨ"))))
 
1816
  (assert-uim-equal '("よ" "ヨ" "ヨ")
 
1817
                    '(ustr-cursor-backside ustrj-l))
 
1818
  (assert-uim-equal 8
 
1819
                    '(ustr-length ustrj-l))
 
1820
  (assert-uim-equal 3
 
1821
                    '(ustr-cursor-pos ustrj-l))
 
1822
  (assert-uim-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ")
 
1823
                      ("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1824
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1825
                    '(ustr-whole-seq ustrj-l))
 
1826
  ;; empty
 
1827
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1828
  (assert-uim-equal 0
 
1829
                    '(ustr-length ustre))
 
1830
  (assert-uim-equal 0
 
1831
                    '(ustr-cursor-pos ustre))
 
1832
  (uim-eval '(ustr-insert-seq! ustre '(("んー" "ンー" "ンー") ("か" "カ" "カ")
 
1833
                                       ("よ" "ヨ" "ヨ"))))
 
1834
  (assert-uim-equal '("よ" "ヨ" "ヨ")
 
1835
                    '(ustr-cursor-backside ustre))
 
1836
  (assert-uim-equal 3
 
1837
                    '(ustr-length ustre))
 
1838
  (assert-uim-equal 3
 
1839
                    '(ustr-cursor-pos ustre))
 
1840
  (assert-uim-equal '(("んー" "ンー" "ンー") ("か" "カ" "カ") ("よ" "ヨ" "ヨ"))
 
1841
                    '(ustr-whole-seq ustre)))
 
1842
 
 
1843
(define (test-ustr-insert-seq!-#2)
 
1844
  ;; former-latter
 
1845
  (assert-uim-equal '("ん" "ン" "ン")
 
1846
                    '(ustr-cursor-backside ustrj-fl))
 
1847
  (assert-uim-equal 5
 
1848
                    '(ustr-length ustrj-fl))
 
1849
  (assert-uim-equal 3
 
1850
                    '(ustr-cursor-pos ustrj-fl))
 
1851
  (uim-eval '(ustr-insert-seq! ustrj-fl ()))
 
1852
  (assert-uim-equal '("ん" "ン" "ン")
 
1853
                    '(ustr-cursor-backside ustrj-fl))
 
1854
  (assert-uim-equal 5
 
1855
                    '(ustr-length ustrj-fl))
 
1856
  (assert-uim-equal 3
 
1857
                    '(ustr-cursor-pos ustrj-fl))
 
1858
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1859
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1860
                    '(ustr-whole-seq ustrj-fl))
 
1861
  ;; former
 
1862
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1863
                    '(ustr-cursor-backside ustrj-f))
 
1864
  (assert-uim-equal 5
 
1865
                    '(ustr-length ustrj-f))
 
1866
  (assert-uim-equal 5
 
1867
                    '(ustr-cursor-pos ustrj-f))
 
1868
  (uim-eval '(ustr-insert-seq! ustrj-f ()))
 
1869
  (assert-uim-equal '("じゃ" "ジャ" "ジャ")
 
1870
                    '(ustr-cursor-backside ustrj-f))
 
1871
  (assert-uim-equal 5
 
1872
                    '(ustr-length ustrj-f))
 
1873
  (assert-uim-equal 5
 
1874
                    '(ustr-cursor-pos ustrj-f))
 
1875
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1876
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1877
                    '(ustr-whole-seq ustrj-f))
 
1878
  ;; latter
 
1879
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1880
  (assert-uim-equal 5
 
1881
                    '(ustr-length ustrj-l))
 
1882
  (assert-uim-equal 0
 
1883
                    '(ustr-cursor-pos ustrj-l))
 
1884
  (uim-eval '(ustr-insert-seq! ustrj-l ()))
 
1885
  (assert-uim-error '(ustr-cursor-backside ustrj-l))
 
1886
  (assert-uim-equal 5
 
1887
                    '(ustr-length ustrj-l))
 
1888
  (assert-uim-equal 0
 
1889
                    '(ustr-cursor-pos ustrj-l))
 
1890
  (assert-uim-equal '(("に" "ニ" "ニ") ("ほ" "ホ" "ホ") ("ん" "ン" "ン")
 
1891
                      ("ご" "ゴ" "ゴ") ("じゃ" "ジャ" "ジャ"))
 
1892
                    '(ustr-whole-seq ustrj-l))
 
1893
  ;; empty
 
1894
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1895
  (assert-uim-equal 0
 
1896
                    '(ustr-length ustre))
 
1897
  (assert-uim-equal 0
 
1898
                    '(ustr-cursor-pos ustre))
 
1899
  (uim-eval '(ustr-insert-seq! ustre ()))
 
1900
  (assert-uim-error '(ustr-cursor-backside ustre))
 
1901
  (assert-uim-equal 0
 
1902
                    '(ustr-length ustre))
 
1903
  (assert-uim-equal 0
 
1904
                    '(ustr-cursor-pos ustre)))
 
1905
 
 
1906
(provide "test/test-ustr")