3
;;; Copyright (c) 2003-2005 uim Project http://uim.freedesktop.org/
5
;;; All rights reserved.
7
;;; Redistribution and use in source and binary forms, with or without
8
;;; modification, are permitted provided that the following conditions
10
;;; 1. Redistributions of source code must retain the above copyright
11
;;; notice, this list of conditions and the following disclaimer.
12
;;; 2. Redistributions in binary form must reproduce the above copyright
13
;;; notice, this list of conditions and the following disclaimer in the
14
;;; documentation and/or other materials provided with the distribution.
15
;;; 3. Neither the name of authors nor the names of its contributors
16
;;; may be used to endorse or promote products derived from this software
17
;;; without specific prior written permission.
19
;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
20
;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
;;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
23
;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25
;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28
;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32
;; This file is tested with revision 389 of new repository
36
(require "test/uim-test-utils")
38
(define-uim-test-case "testcase action"
43
(require "load-action.scm")
45
(require "japanese.scm")
46
(require-module "anthy")
48
(set! widget-proto-list ())
51
(define test-type-hiragana 0)
52
(define test-type-katakana 1)
53
(define test-type-hankana 2)
55
(define test-input-rule-roma 0)
56
(define test-input-rule-kana 1)
57
(define test-input-rule-azik 2)
59
(define context-rec-spec
60
'((id #f) ;; must be first member
63
(define-record 'context context-rec-spec)
65
(define-record 'test-context
71
(list 'kana-mode test-type-hiragana)
73
(list 'input-rule test-input-rule-roma))))
75
(register-action 'action_test_hiragana
82
(and (test-context-on tc)
83
(= (test-context-kana-mode tc)
86
(test-context-set-on! tc #t)
87
(test-context-set-kana-mode! tc test-type-hiragana)
88
(set! test-activated 'action_test_hiragana)))
90
(register-action 'action_test_katakana
97
(and (test-context-on tc)
98
(= (test-context-kana-mode tc)
101
(test-context-set-on! tc #t)
102
(test-context-set-kana-mode! tc test-type-katakana)
103
(set! test-activated 'action_test_katakana)))
105
(register-action 'action_test_hankana
112
(and (test-context-on tc)
113
(= (test-context-kana-mode tc)
116
(test-context-set-on! tc #t)
117
(test-context-set-kana-mode! tc test-type-hankana)
118
(set! test-activated 'action_test_hankana)))
120
(register-action 'action_test_direct
127
(and (not (test-context-on tc))
128
(not (test-context-wide-latin tc))))
130
(test-context-set-on! tc #f)
131
(test-context-set-wide-latin! tc #f)
132
(set! test-activated 'action_test_direct)))
134
(register-action 'action_test_zenkaku
141
(and (not (test-context-on tc))
142
(test-context-wide-latin tc)))
144
(test-context-set-on! tc #f)
145
(test-context-set-wide-latin! tc #t)
146
(set! test-activated 'action_test_zenkaku)))
148
(register-action 'action_test_alt_direct
155
(and (not (test-context-on tc))
156
(not (test-context-wide-latin tc))))
158
(test-context-set-on! tc #f)
159
(test-context-set-wide-latin! tc #f)
160
(set! test-activated 'action_test_alt_direct)))
162
(register-action 'action_test_roma
169
(= (test-context-input-rule tc)
170
test-input-rule-roma))
172
(rk-context-set-rule! (test-context-rkc tc)
174
(test-context-set-input-rule! tc test-input-rule-roma)
175
(set! test-activated 'action_test_roma)))
177
(register-action 'action_test_kana
184
(= (test-context-input-rule tc)
185
test-input-rule-kana))
187
(rk-context-set-rule! (test-context-rkc tc)
188
ja-kana-hiragana-rule)
189
(test-context-set-input-rule! tc test-input-rule-kana)
190
(set! test-activated 'action_test_kana)))
193
'widget_test_input_mode
194
(activity-indicator-new '(action_test_hiragana
198
action_test_zenkaku))
199
(actions-new '(action_test_hiragana
203
action_test_zenkaku)))
206
'widget_test_kana_input_method
207
(activity-indicator-new '(action_test_roma
209
(actions-new '(action_test_roma
219
(indicator-new (lambda (owner)
220
fallback-indication))
221
#f) ;; has no actions
223
(define tc (test-context-new))
224
(begin (test-context-set-rkc! tc (rk-context-new ja-rk-rule #t #f))
227
(define test-prop-label #f)
228
(define im-update-prop-label
229
(lambda (context message)
230
(set! test-prop-label message)))
231
(define test-prop-list #f)
232
(define im-update-prop-list
233
(lambda (context message)
234
(set! test-prop-list message)))
236
(define test-mode-list ())
237
(define test-updated-mode-list ())
238
(define im-clear-mode-list
240
(set! test-mode-list ())))
241
(define im-update-mode-list
243
(set! test-updated-mode-list test-mode-list)))
244
(define im-pushback-mode-list
245
(lambda (context label)
246
(set! test-mode-list (append test-mode-list
248
(define test-updated-mode #f)
249
(define im-update-mode
250
(lambda (context mode)
251
(set! test-updated-mode mode)))
253
(define test-widget-conf #f)
254
(define test-widget-state #f)
255
(define test-activated #f)))))
257
("test indicator-new"
259
(define test-indicator (indicator-new (lambda ()
265
(assert-false (uim-bool '(indicator-id test-indicator)))
266
(assert-false (uim-bool '(indicator-activity-pred test-indicator)))
267
(assert-false (uim-bool '(indicator-handler test-indicator))))
269
("test register-action"
270
(uim '(set! action-list ()))
272
(uim '(length action-list)))
273
(uim '(register-action 'action_test_hiragana
280
(and (test-context-on tc)
281
(= (test-context-kana-mode tc)
282
test-type-hiragana)))
284
(test-context-set-on! tc #t)
285
(test-context-set-kana-mode! tc test-type-hiragana))))
287
(uim '(length action-list)))
288
(assert-equal 'action_test_hiragana
289
(uim '(caar action-list)))
290
(uim '(register-action 'action_test_katakana
297
(and (test-context-on tc)
298
(= (test-context-kana-mode tc)
299
test-type-katakana)))
301
(test-context-set-on! tc #t)
302
(test-context-set-kana-mode! tc test-type-katakana))))
304
(uim '(length action-list)))
305
(assert-equal 'action_test_katakana
306
(uim '(caar action-list)))
307
(uim '(register-action 'action_test_hankana
314
(and (test-context-on tc)
315
(= (test-context-kana-mode tc)
318
(test-context-set-on! tc #t)
319
(test-context-set-kana-mode! tc test-type-hankana))))
321
(uim '(length action-list)))
322
(assert-equal 'action_test_hankana
323
(uim '(caar action-list))))
326
(assert-equal 'action_test_hiragana
327
(uim '(action-id (fetch-action 'action_test_hiragana))))
328
(assert-equal 'action_test_katakana
329
(uim '(action-id (fetch-action 'action_test_katakana))))
330
(assert-equal 'action_test_hankana
331
(uim '(action-id (fetch-action 'action_test_hankana)))))
333
("test action-active?"
334
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_hiragana)
336
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_katakana)
338
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_hankana)
340
(assert-true (uim-bool '(action-active? (fetch-action 'action_test_direct)
342
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_zenkaku)
344
(uim '(test-context-set-wide-latin! tc #t))
345
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_hiragana)
347
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_katakana)
349
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_hankana)
351
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_direct)
353
(assert-true (uim-bool '(action-active? (fetch-action 'action_test_zenkaku)
355
(uim '(test-context-set-on! tc #t))
356
(assert-true (uim-bool '(action-active? (fetch-action 'action_test_hiragana)
358
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_katakana)
360
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_hankana)
362
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_direct)
364
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_zenkaku)
366
(uim '(test-context-set-kana-mode! tc test-type-katakana))
367
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_hiragana)
369
(assert-true (uim-bool '(action-active? (fetch-action 'action_test_katakana)
371
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_hankana)
373
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_direct)
375
(assert-false (uim-bool '(action-active? (fetch-action 'action_test_zenkaku)
378
("test action-indicate"
379
(assert-equal '(figure_ja_hiragana
383
(uim '(action-indicate (fetch-action 'action_test_hiragana)
385
(assert-equal '(figure_ja_katakana
389
(uim '(action-indicate (fetch-action 'action_test_katakana)
391
(assert-equal '(figure_ja_kana
395
(uim '(action-indicate (fetch-action 'action_test_kana)
398
(assert-equal (uim 'fallback-indication)
399
(uim '(action-indicate #f tc)))
400
;; no indication handler
401
(assert-equal (uim 'fallback-indication)
402
(uim '(action-indicate (action-new) tc))))
405
(assert-equal '(action_test_katakana
407
action_test_hiragana)
408
(uim '(map action-id (actions-new '(action_test_katakana
410
action_test_hiragana)))))
411
(assert-equal (uim ''(action_test_katakana
413
action_test_hiragana))
414
(uim '(map action-id (actions-new '(action_test_katakana
417
action_test_hiragana)))))
419
(uim '(map action-id (actions-new ())))))
421
("test activity-indicator-new"
422
(uim '(define indicator (activity-indicator-new '(action_test_hiragana
426
action_test_zenkaku))))
427
(assert-equal '(figure_ja_direct
431
(uim '(action-indicate indicator tc)))
432
(uim '(test-context-set-wide-latin! tc #t))
433
(assert-equal '(figure_ja_zenkaku
437
(uim '(action-indicate indicator tc)))
438
(uim '(test-context-set-on! tc #t))
439
(assert-equal '(figure_ja_hiragana
443
(uim '(action-indicate indicator tc)))
444
(uim '(test-context-set-kana-mode! tc test-type-katakana))
445
(assert-equal '(figure_ja_katakana
449
(uim '(action-indicate indicator tc)))
451
(uim '(define test-type-invalid 100))
452
(uim '(test-context-set-kana-mode! tc test-type-invalid))
453
(assert-equal '(figure_unknown
457
(uim '(action-indicate indicator tc))))
459
("test register-widget"
460
(uim '(set! widget-proto-list ()))
462
(uim '(length widget-proto-list)))
465
'widget_test_input_mode
466
(indicator-new (lambda (tc)
467
fallback-indication))
468
(actions-new '(action_test_hiragana
472
action_test_zenkaku)))
475
(uim '(length widget-proto-list)))
476
(assert-equal 'widget_test_input_mode
477
(uim '(caar widget-proto-list)))
480
'widget_test_input_mode
481
(indicator-new (lambda (tc)
482
fallback-indication))
483
(actions-new '(action_test_direct)))
486
(uim '(length widget-proto-list)))
487
(assert-equal 'widget_test_input_mode
488
(uim '(caar widget-proto-list)))
491
'widget_test_kana_input_method
492
(indicator-new (lambda (tc)
493
fallback-indication))
494
(actions-new '(action_test_roma
498
(uim '(length widget-proto-list)))
499
(assert-equal 'widget_test_kana_input_method
500
(uim '(caar widget-proto-list)))
501
(assert-equal 'widget_test_input_mode
502
(uim '(car (cadr widget-proto-list)))))
505
(assert-false (uim-bool '(widget-new 'widget_test_nonexistent tc)))
506
;; widget_test_input_mode
507
(assert-true (uim-bool '(and (define test-input-mode
508
(widget-new 'widget_test_input_mode tc))
510
(assert-equal 'widget_test_input_mode
511
(uim '(widget-id test-input-mode)))
512
(assert-equal 'action_test_direct
513
(uim '(action-id (widget-activity test-input-mode))))
514
;; widget_test_input_mode with default value
515
(uim '(define default-widget_test_input_mode 'action_test_hiragana))
516
(assert-true (uim-bool '(and (define test-input-mode
517
(widget-new 'widget_test_input_mode tc))
519
(assert-equal 'action_test_hiragana
520
(uim '(action-id (widget-activity test-input-mode))))
521
;; widget_test_input_mode with default value #2
522
(uim '(define default-widget_test_input_mode 'action_test_katakana))
523
(assert-true (uim-bool '(and (define test-input-mode
524
(widget-new 'widget_test_input_mode tc))
526
(assert-equal 'action_test_katakana
527
(uim '(action-id (widget-activity test-input-mode))))
528
;; widget_test_input_mode with default value #3
529
(uim '(define default-widget_test_input_mode 'action_test_zenkaku))
530
(assert-true (uim-bool '(and (define test-input-mode
531
(widget-new 'widget_test_input_mode tc))
533
(assert-equal 'action_test_zenkaku
534
(uim '(action-id (widget-activity test-input-mode))))
536
;; widget_test_input_mode with invalid default value
537
(uim '(define default-widget_test_input_mode 'action_nonexistent))
538
(assert-true (uim-bool '(and (define test-input-mode
539
(widget-new 'widget_test_input_mode tc))
541
(assert-equal 'action_test_zenkaku
542
(uim '(action-id (widget-activity test-input-mode))))
544
;; widget_test_kana_input_method
545
(assert-true (uim-bool '(and (define test-kana-input-method
546
(widget-new 'widget_test_kana_input_method tc))
548
(assert-equal 'action_test_roma
549
(uim '(action-id (widget-activity test-kana-input-method))))
550
;; widget_test_kana_input_method with default value
551
(uim '(define default-widget_test_kana_input_method 'action_test_kana))
552
(assert-true (uim-bool '(and (define test-kana-input-method
553
(widget-new 'widget_test_kana_input_method tc))
555
(assert-equal 'action_test_kana
556
(uim '(action-id (widget-activity test-kana-input-method))))
557
;; widget_test_kana_input_method with invalid default value
558
(uim '(define default-widget_test_kana_input_method 'action_nonexistent))
559
(assert-true (uim-bool '(and (define test-kana-input-method
560
(widget-new 'widget_test_kana_input_method tc))
562
(assert-equal 'action_test_kana
563
(uim '(action-id (widget-activity test-kana-input-method)))))
566
("test widget-activity"
567
;;; widget_test_input_mode
568
(assert-true (uim-bool '(and (define test-input-mode
569
(widget-new 'widget_test_input_mode tc))
571
;; action_test_direct (initial activity)
572
(assert-false (uim-bool '(test-context-on tc)))
573
(assert-false (uim-bool '(test-context-wide-latin tc)))
574
(assert-equal (uim 'test-type-hiragana)
575
(uim '(test-context-kana-mode tc)))
576
(assert-equal 'action_test_direct
577
(uim '(action-id (widget-activity test-input-mode))))
578
;; action_test_direct -> action_test_hiragana
579
(uim '(test-context-set-wide-latin! tc #t))
580
(uim '(test-context-set-on! tc #t))
581
(assert-equal (uim 'test-type-hiragana)
582
(uim '(test-context-kana-mode tc)))
583
(assert-equal 'action_test_hiragana
584
(uim '(action-id (widget-activity test-input-mode))))
585
;; action_test_hiragana -> action_test_katakana
586
(uim '(test-context-set-wide-latin! tc #f))
587
(uim '(test-context-set-kana-mode! tc test-type-katakana))
588
(assert-true (uim-bool '(test-context-on tc)))
589
(assert-false (uim-bool '(test-context-wide-latin tc)))
590
(assert-equal (uim 'test-type-katakana)
591
(uim '(test-context-kana-mode tc)))
592
(assert-equal 'action_test_katakana
593
(uim '(action-id (widget-activity test-input-mode))))
594
;; action_test_katakana -> action_test_hankana
595
(uim '(test-context-set-kana-mode! tc test-type-hankana))
596
(assert-true (uim-bool '(test-context-on tc)))
597
(assert-false (uim-bool '(test-context-wide-latin tc)))
598
(assert-equal (uim 'test-type-hankana)
599
(uim '(test-context-kana-mode tc)))
600
(assert-equal 'action_test_hankana
601
(uim '(action-id (widget-activity test-input-mode))))
602
;; action_test_hankana -> action_test_direct
603
(uim '(test-context-set-on! tc #f))
604
(assert-false (uim-bool '(test-context-on tc)))
605
(assert-false (uim-bool '(test-context-wide-latin tc)))
606
(assert-equal (uim 'test-type-hankana)
607
(uim '(test-context-kana-mode tc)))
608
(assert-equal 'action_test_direct
609
(uim '(action-id (widget-activity test-input-mode))))
610
;; action_test_direct -> invalid
611
(uim '(define test-type-invalid 100))
612
(uim '(test-context-set-on! tc #t))
613
(uim '(test-context-set-kana-mode! tc test-type-invalid))
614
(assert-true (uim-bool '(test-context-on tc)))
615
(assert-false (uim-bool '(test-context-wide-latin tc)))
616
(assert-equal (uim 'test-type-invalid)
617
(uim '(test-context-kana-mode tc)))
618
(assert-false (uim-bool '(widget-activity test-input-mode)))
620
;;; duplicate activity
623
'widget_test_invalid_input_mode
624
(indicator-new (lambda (owner)
625
fallback-indication))
626
(actions-new '(action_test_hiragana
630
action_test_alt_direct
631
action_test_zenkaku)))
632
(context-init-widgets! tc '(widget_test_invalid_input_mode
633
widget_test_kana_input_method))
634
(define test-invalid-input-mode
635
(widget-new 'widget_test_invalid_input_mode tc))
637
;; action_test_direct and action_test_alt_direct are conflicted
638
(assert-false (uim-bool '(widget-activity test-invalid-input-mode)))
639
;; conflicted -> action_test_hiragana
640
(assert-true (uim-bool '(widget-activate! test-invalid-input-mode
641
'action_test_hiragana)))
642
(assert-equal 'action_test_hiragana
643
(uim '(action-id (widget-activity test-invalid-input-mode))))
644
;; action_test_hiragana -> action_test_katakana
645
(assert-true (uim-bool '(widget-activate! test-invalid-input-mode
646
'action_test_katakana)))
647
(assert-equal 'action_test_katakana
648
(uim '(action-id (widget-activity test-invalid-input-mode))))
651
("test widget-activate!"
652
;;; widget_test_input_mode
653
(assert-true (uim-bool '(and (define test-input-mode
654
(widget-new 'widget_test_input_mode tc))
656
;; action_test_direct (initial activity)
657
(assert-false (uim-bool '(test-context-on tc)))
658
(assert-false (uim-bool '(test-context-wide-latin tc)))
659
(assert-equal (uim 'test-type-hiragana)
660
(uim '(test-context-kana-mode tc)))
661
(assert-equal 'action_test_direct
662
(uim '(action-id (widget-activity test-input-mode))))
663
;; action_test_direct -> action_test_hiragana
664
(assert-true (uim-bool '(widget-activate! test-input-mode
665
'action_test_hiragana)))
666
(assert-true (uim-bool '(test-context-on tc)))
667
(assert-false (uim-bool '(test-context-wide-latin tc)))
668
(assert-equal (uim 'test-type-hiragana)
669
(uim '(test-context-kana-mode tc)))
670
(assert-equal 'action_test_hiragana
671
(uim '(action-id (widget-activity test-input-mode))))
672
;; action_test_hiragana -> action_test_katakana
673
(assert-true (uim-bool '(widget-activate! test-input-mode
674
'action_test_katakana)))
675
(assert-true (uim-bool '(test-context-on tc)))
676
(assert-false (uim-bool '(test-context-wide-latin tc)))
677
(assert-equal (uim 'test-type-katakana)
678
(uim '(test-context-kana-mode tc)))
679
(assert-equal 'action_test_katakana
680
(uim '(action-id (widget-activity test-input-mode))))
681
;; action_test_katakana -> action_test_hankana
682
(assert-true (uim-bool '(widget-activate! test-input-mode
683
'action_test_hankana)))
684
(assert-true (uim-bool '(test-context-on tc)))
685
(assert-false (uim-bool '(test-context-wide-latin tc)))
686
(assert-equal (uim 'test-type-hankana)
687
(uim '(test-context-kana-mode tc)))
688
(assert-equal 'action_test_hankana
689
(uim '(action-id (widget-activity test-input-mode))))
690
;; action_test_hankana -> action_test_zenkaku
691
(assert-true (uim-bool '(widget-activate! test-input-mode
692
'action_test_zenkaku)))
693
(assert-false (uim-bool '(test-context-on tc)))
694
(assert-true (uim-bool '(test-context-wide-latin tc)))
695
(assert-equal (uim 'test-type-hankana)
696
(uim '(test-context-kana-mode tc)))
697
(assert-equal 'action_test_zenkaku
698
(uim '(action-id (widget-activity test-input-mode))))
699
;; action_test_zenkaku -> action_test_direct
700
(assert-true (uim-bool '(widget-activate! test-input-mode
701
'action_test_direct)))
702
(assert-false (uim-bool '(test-context-on tc)))
703
(assert-false (uim-bool '(test-context-wide-latin tc)))
704
(assert-equal (uim 'test-type-hankana)
705
(uim '(test-context-kana-mode tc)))
706
(assert-equal 'action_test_direct
707
(uim '(action-id (widget-activity test-input-mode))))
708
;; action_test_direct -> invalid
709
(assert-false (uim-bool '(widget-activate! test-input-mode
710
'action_nonexistent)))
711
(assert-false (uim-bool '(test-context-on tc)))
712
(assert-false (uim-bool '(test-context-wide-latin tc)))
713
(assert-equal (uim 'test-type-hankana)
714
(uim '(test-context-kana-mode tc)))
715
(assert-equal 'action_test_direct
716
(uim '(action-id (widget-activity test-input-mode)))))
718
("test widget-configuration"
719
;;; widget_test_input_mode
720
(assert-true (uim-bool '(and (define test-input-mode
721
(widget-new 'widget_test_input_mode tc))
723
(assert-equal '(action_unknown
744
(uim '(widget-configuration test-input-mode)))
745
;;; widget_test_kana_input_method
746
(assert-true (uim-bool '(and (define test-kana-input-method
747
(widget-new 'widget_test_kana_input_method tc))
749
(assert-equal '(action_unknown
758
(uim '(widget-configuration test-kana-input-method)))
760
(assert-true (uim-bool '(and (define test-null
761
(widget-new 'widget_test_null tc))
763
(assert-equal '(action_unknown)
764
(uim '(widget-configuration test-null))))
767
;;; widget_test_input_mode
768
(assert-true (uim-bool '(and (define test-input-mode
769
(widget-new 'widget_test_input_mode tc))
771
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_direct)
776
(widget-state test-input-mode))))
777
(assert-true (uim-bool '(widget-activate! test-input-mode
778
'action_test_katakana)))
779
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
784
(widget-state test-input-mode))))
785
(assert-false (uim-bool '(widget-activate! test-input-mode
786
'action_nonexistent)))
787
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
792
(widget-state test-input-mode))))
793
;;; widget_test_kana_input_method
794
(assert-true (uim-bool '(and (define test-kana-input-method
795
(widget-new 'widget_test_kana_input_method tc))
797
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_roma)
802
(widget-state test-kana-input-method))))
804
(assert-true (uim-bool '(and (define test-null
805
(widget-new 'widget_test_null tc))
807
(assert-true (uim-bool '(equal? (list #f
812
(widget-state test-null)))))
814
("test widget-update-configuration!"
815
;;; widget_test_input_mode
816
(assert-true (uim-bool '(and (define test-input-mode
817
(widget-new 'widget_test_input_mode tc))
819
(assert-equal '(action_unknown
840
(uim '(widget-configuration test-input-mode)))
841
(assert-false (uim-bool '(widget-prev-config test-input-mode)))
842
(assert-true (uim-bool '(widget-update-configuration! test-input-mode)))
843
(assert-equal '(action_unknown
864
(uim '(widget-configuration test-input-mode)))
865
(assert-equal '(action_unknown
886
(uim '(widget-prev-config test-input-mode)))
887
(assert-false (uim-bool '(widget-update-configuration! test-input-mode)))
888
(assert-equal '(action_unknown
909
(uim '(widget-prev-config test-input-mode)))
911
(assert-true (uim-bool '(and (define test-null
912
(widget-new 'widget_test_null tc))
914
(assert-equal '(action_unknown)
915
(uim '(widget-configuration test-null)))
916
(assert-false (uim-bool '(widget-prev-config test-null)))
917
;; initial update (widget_test_null with fallback-indication)
918
(assert-true (uim-bool '(widget-update-configuration! test-null)))
920
(assert-false (uim-bool '(widget-update-configuration! test-null))))
922
("test widget-update-state!"
923
;;; widget_test_input_mode
924
(assert-true (uim-bool '(and (define test-input-mode
925
(widget-new 'widget_test_input_mode tc))
928
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_direct)
933
(widget-state test-input-mode))))
934
(assert-false (uim-bool '(widget-prev-state test-input-mode)))
936
(assert-true (uim-bool '(widget-update-state! test-input-mode)))
937
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_direct)
942
(widget-state test-input-mode))))
943
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_direct)
948
(widget-prev-state test-input-mode))))
949
;; action_test_direct -> action_test_katakana
950
(assert-true (uim-bool '(widget-activate! test-input-mode
951
'action_test_katakana)))
952
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
957
(widget-state test-input-mode))))
958
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_direct)
963
(widget-prev-state test-input-mode))))
964
(assert-true (uim-bool '(widget-update-state! test-input-mode)))
965
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
970
(widget-state test-input-mode))))
971
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
976
(widget-prev-state test-input-mode))))
977
;; action_test_katakana -> action_test_katakana
978
(assert-false (uim-bool '(widget-update-state! test-input-mode)))
979
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
984
(widget-state test-input-mode))))
985
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
990
(widget-prev-state test-input-mode))))
991
;; invalid activation
992
(assert-false (uim-bool '(widget-activate! test-input-mode
993
'action_nonexistent)))
994
(assert-false (uim-bool '(widget-update-state! test-input-mode)))
995
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
1000
(widget-state test-input-mode))))
1001
(assert-true (uim-bool '(equal? (list (fetch-action 'action_test_katakana)
1002
'(figure_ja_katakana
1006
(widget-prev-state test-input-mode))))
1007
;;; widget_test_null
1008
(assert-true (uim-bool '(and (define test-null
1009
(widget-new 'widget_test_null tc))
1013
(assert-true (uim-bool '(equal? (list #f
1018
(widget-state test-null))))
1019
(assert-false (uim-bool '(widget-prev-state test-null)))
1021
(assert-true (uim-bool '(widget-update-state! test-null)))
1022
(assert-true (uim-bool '(equal? (list #f
1027
(widget-state test-null))))
1028
(assert-true (uim-bool '(equal? (list #f
1033
(widget-prev-state test-null))))
1034
;; subsequent update
1035
(assert-false (uim-bool '(widget-update-state! test-null)))
1036
(assert-true (uim-bool '(equal? (list #f
1041
(widget-state test-null))))
1042
(assert-true (uim-bool '(equal? (list #f
1047
(widget-prev-state test-null)))))
1049
("test widget-debug-message"
1050
(assert-true (uim-bool '(and (define test-input-mode
1051
(widget-new 'widget_test_input_mode tc))
1053
(assert-equal "something in somewhere. debug widget_test_input_mode."
1054
(uim '(widget-debug-message test-input-mode
1058
("test indication-compose-label"
1059
(assert-equal "あ\tひらがな\n"
1060
(uim '(indication-compose-label
1061
(action-indicate (fetch-action 'action_test_hiragana)
1063
(assert-equal "ア\tカタカナ\n"
1064
(uim '(indication-compose-label
1065
(action-indicate (fetch-action 'action_test_katakana)
1067
(assert-equal "ア\t半角カタカナ\n"
1068
(uim '(indication-compose-label
1069
(action-indicate (fetch-action 'action_test_hankana)
1071
(assert-equal "a\t直接入力\n"
1072
(uim '(indication-compose-label
1073
(action-indicate (fetch-action 'action_test_direct)
1075
(assert-equal "A\t全角英数\n"
1076
(uim '(indication-compose-label
1077
(action-indicate (fetch-action 'action_test_zenkaku)
1079
(assert-equal "R\tローマ字\n"
1080
(uim '(indication-compose-label
1081
(action-indicate (fetch-action 'action_test_roma)
1083
(assert-equal "か\tかな\n"
1084
(uim '(indication-compose-label
1085
(action-indicate (fetch-action 'action_test_kana)
1088
("test indication-compose-branch"
1089
(assert-equal "branch\tあ\tひらがな\n"
1090
(uim '(indication-compose-branch
1091
(action-indicate (fetch-action 'action_test_hiragana)
1093
(assert-equal "branch\tア\tカタカナ\n"
1094
(uim '(indication-compose-branch
1095
(action-indicate (fetch-action 'action_test_katakana)
1097
(assert-equal "branch\tア\t半角カタカナ\n"
1098
(uim '(indication-compose-branch
1099
(action-indicate (fetch-action 'action_test_hankana)
1101
(assert-equal "branch\ta\t直接入力\n"
1102
(uim '(indication-compose-branch
1103
(action-indicate (fetch-action 'action_test_direct)
1105
(assert-equal "branch\tA\t全角英数\n"
1106
(uim '(indication-compose-branch
1107
(action-indicate (fetch-action 'action_test_zenkaku)
1109
(assert-equal "branch\tR\tローマ字\n"
1110
(uim '(indication-compose-branch
1111
(action-indicate (fetch-action 'action_test_roma)
1113
(assert-equal "branch\tか\tかな\n"
1114
(uim '(indication-compose-branch
1115
(action-indicate (fetch-action 'action_test_kana)
1118
("test indication-compose-leaf"
1120
(assert-equal "leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1121
(uim '(indication-compose-leaf
1122
(action-indicate (fetch-action 'action_test_hiragana)
1124
'action_test_hiragana
1126
(assert-equal "leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t\n"
1127
(uim '(indication-compose-leaf
1128
(action-indicate (fetch-action 'action_test_katakana)
1130
'action_test_katakana
1132
(assert-equal "leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1133
(uim '(indication-compose-leaf
1134
(action-indicate (fetch-action 'action_test_hankana)
1136
'action_test_hankana
1138
(assert-equal "leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1139
(uim '(indication-compose-leaf
1140
(action-indicate (fetch-action 'action_test_direct)
1144
(assert-equal "leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n"
1145
(uim '(indication-compose-leaf
1146
(action-indicate (fetch-action 'action_test_zenkaku)
1148
'action_test_zenkaku
1150
(assert-equal "leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t\n"
1151
(uim '(indication-compose-leaf
1152
(action-indicate (fetch-action 'action_test_roma)
1156
(assert-equal "leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n"
1157
(uim '(indication-compose-leaf
1158
(action-indicate (fetch-action 'action_test_kana)
1163
(assert-equal "leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t*\n"
1164
(uim '(indication-compose-leaf
1165
(action-indicate (fetch-action 'action_test_hiragana)
1167
'action_test_hiragana
1169
(assert-equal "leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t*\n"
1170
(uim '(indication-compose-leaf
1171
(action-indicate (fetch-action 'action_test_katakana)
1173
'action_test_katakana
1175
(assert-equal "leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t*\n"
1176
(uim '(indication-compose-leaf
1177
(action-indicate (fetch-action 'action_test_hankana)
1179
'action_test_hankana
1181
(assert-equal "leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t*\n"
1182
(uim '(indication-compose-leaf
1183
(action-indicate (fetch-action 'action_test_direct)
1187
(assert-equal "leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t*\n"
1188
(uim '(indication-compose-leaf
1189
(action-indicate (fetch-action 'action_test_zenkaku)
1191
'action_test_zenkaku
1193
(assert-equal "leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1194
(uim '(indication-compose-leaf
1195
(action-indicate (fetch-action 'action_test_roma)
1199
(assert-equal "leaf\tか\tかな\tかな入力モード\taction_test_kana\t*\n"
1200
(uim '(indication-compose-leaf
1201
(action-indicate (fetch-action 'action_test_kana)
1206
("test widget-compose-live-branch"
1207
;; widget_test_input_mode
1208
(assert-true (uim-bool '(and (define test-input-mode
1209
(widget-new 'widget_test_input_mode tc))
1211
(assert-equal (string-append
1213
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1214
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t\n"
1215
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1216
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t*\n"
1217
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n")
1218
(uim '(widget-compose-live-branch test-input-mode)))
1219
(assert-true (uim-bool '(widget-activate! test-input-mode
1220
'action_test_zenkaku)))
1221
(assert-equal (string-append
1223
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1224
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t\n"
1225
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1226
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1227
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t*\n")
1228
(uim '(widget-compose-live-branch test-input-mode)))
1229
;;; prop_test_kana_input_method
1230
(assert-true (uim-bool '(and (define test-kana-input-method
1231
(widget-new 'widget_test_kana_input_method tc))
1233
(assert-equal (string-append
1235
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1236
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n")
1237
(uim '(widget-compose-live-branch test-kana-input-method)))
1238
(assert-true (uim-bool '(widget-activate! test-kana-input-method
1239
'action_test_kana)))
1240
(assert-equal (string-append
1242
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t\n"
1243
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t*\n")
1244
(uim '(widget-compose-live-branch test-kana-input-method))))
1246
("test context-init-widgets!"
1248
(define context-propagate-widget-configuration
1250
(set! test-widget-conf (context-widgets context))))
1254
(context-init-widgets! tc '(widget_test_input_mode
1255
widget_test_kana_input_method))
1257
(assert-equal '(widget_test_input_mode
1258
widget_test_kana_input_method)
1259
(uim '(map widget-id test-widget-conf)))
1260
;; contains a non-existent widget
1262
(context-init-widgets! tc '(widget_test_input_mode
1263
widget_test_nonexistent
1264
widget_test_kana_input_method))
1266
(assert-equal '(widget_test_input_mode
1267
widget_test_kana_input_method)
1268
(uim '(map widget-id test-widget-conf)))
1271
(context-init-widgets! tc ())
1273
(assert-equal '(widget_fallback)
1274
(uim '(map widget-id test-widget-conf)))
1277
(context-init-widgets! tc '(widget_test_null))
1279
(assert-equal '(widget_test_null)
1280
(uim '(map widget-id test-widget-conf))))
1282
("test context-update-widgets"
1284
(define context-propagate-widget-configuration
1286
(set! test-widget-conf (context-widgets context))))
1287
(define context-propagate-widget-states
1289
(set! test-widget-state (context-widgets context))))
1291
;;; 2 widgets + non-existent widget
1293
(context-init-widgets! tc '(widget_test_input_mode
1294
widget_test_nonexistent
1295
widget_test_kana_input_method))
1299
(define test-widget-conf #f)
1300
(define test-widget-state #f)))
1302
(context-update-widgets tc)
1304
(assert-equal '(widget_test_input_mode
1305
widget_test_kana_input_method)
1306
(uim '(map widget-id test-widget-conf)))
1307
(assert-equal '(widget_test_input_mode
1308
widget_test_kana_input_method)
1309
(uim '(map widget-id test-widget-state)))
1312
(define test-widget-conf #f)
1313
(define test-widget-state #f)))
1315
(context-update-widgets tc)
1317
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1318
(assert-false (uim-bool '(map widget-id test-widget-state)))
1319
;; duplicate update #2
1321
(define test-widget-conf #f)
1322
(define test-widget-state #f)))
1324
(context-update-widgets tc)
1326
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1327
(assert-false (uim-bool '(map widget-id test-widget-state)))
1330
(define test-widget-conf #f)
1331
(define test-widget-state #f)))
1332
(assert-true (uim-bool '(widget-activate! (assq 'widget_test_input_mode
1333
(context-widgets tc))
1334
'action_test_katakana)))
1336
(context-update-widgets tc)
1338
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1339
(assert-equal '(widget_test_input_mode
1340
widget_test_kana_input_method)
1341
(uim '(map widget-id test-widget-state)))
1342
;; duplicate state update
1344
(define test-widget-conf #f)
1345
(define test-widget-state #f)))
1347
(context-update-widgets tc)
1349
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1350
(assert-false (uim-bool '(map widget-id test-widget-state)))
1351
;; configuration update
1353
(define test-widget-conf #f)
1354
(define test-widget-state #f)))
1356
(register-action 'action_test_alt_hiragana
1358
'(figure_ja_hiragana
1359
"ひ" ;; differs from action_test_hiragana
1363
(and (test-context-on tc)
1364
(= (test-context-kana-mode tc)
1365
test-type-hiragana)))
1367
(test-context-set-on! tc #t)
1368
(test-context-set-kana-mode! tc test-type-hiragana)))
1371
(for-each (lambda (widget)
1372
(if (eq? (widget-id widget)
1373
'widget_test_input_mode)
1374
(widget-set-actions!
1376
(actions-new '(action_test_alt_hiragana
1377
action_test_katakana
1380
action_test_zenkaku)))))
1381
(context-widgets tc))
1384
(context-update-widgets tc)
1386
(assert-equal '(widget_test_input_mode
1387
widget_test_kana_input_method)
1388
(uim '(map widget-id test-widget-conf)))
1389
(assert-false (uim-bool '(map widget-id test-widget-state)))
1390
;; duplicate configuration update
1392
(define test-widget-conf #f)
1393
(define test-widget-state #f)))
1395
(context-update-widgets tc)
1397
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1398
(assert-false (uim-bool '(map widget-id test-widget-state)))
1399
;; configuration & state update
1401
(define test-widget-conf #f)
1402
(define test-widget-state #f)))
1404
(context-init-widgets! tc '(widget_test_input_mode))
1407
(context-update-widgets tc)
1409
(assert-equal '(widget_test_input_mode)
1410
(uim '(map widget-id test-widget-conf)))
1411
(assert-equal '(widget_test_input_mode)
1412
(uim '(map widget-id test-widget-state)))
1413
;; duplicate configuration & state update
1415
(define test-widget-conf #f)
1416
(define test-widget-state #f)))
1418
(context-update-widgets tc)
1420
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1421
(assert-false (uim-bool '(map widget-id test-widget-state)))
1422
;; The framework can't detect the configuration information
1423
;; invalidation when violently reconfigured by
1424
;; context-set-widgets!.
1426
(define test-widget-conf #f)
1427
(define test-widget-state #f)))
1429
(context-set-widgets!
1431
(filter (lambda (widget)
1432
(not (eq? (widget-id widget)
1433
'widget_test_kana_input_method)))
1434
(context-widgets tc)))
1437
(context-update-widgets tc)
1439
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1440
(assert-false (uim-bool '(map widget-id test-widget-state)))
1444
(context-init-widgets! tc ())
1446
;; initial update (widget_fallback)
1448
(define test-widget-conf #f)
1449
(define test-widget-state #f)))
1451
(context-update-widgets tc)
1453
(assert-equal '(widget_fallback)
1454
(uim '(map widget-id test-widget-conf)))
1455
(assert-equal '(widget_fallback)
1456
(uim '(map widget-id test-widget-state)))
1457
;; subsequent update
1459
(define test-widget-conf #f)
1460
(define test-widget-state #f)))
1462
(context-update-widgets tc)
1464
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1465
(assert-false (uim-bool '(map widget-id test-widget-state)))
1469
(context-init-widgets! tc '(widget_test_null))
1471
;; initial update (widget_test_null with fallback-indication)
1473
(define test-widget-conf #f)
1474
(define test-widget-state #f)))
1476
(context-update-widgets tc)
1478
(assert-equal '(widget_test_null)
1479
(uim '(map widget-id test-widget-conf)))
1480
(assert-equal '(widget_test_null)
1481
(uim '(map widget-id test-widget-state)))
1482
;; subsequent update
1484
(define test-widget-conf #f)
1485
(define test-widget-state #f)))
1487
(context-update-widgets tc)
1489
(assert-false (uim-bool '(map widget-id test-widget-conf)))
1490
(assert-false (uim-bool '(map widget-id test-widget-state))))
1492
("test context-propagate-prop-label-update"
1495
(context-init-widgets! tc '(widget_test_input_mode
1496
widget_test_kana_input_method))
1498
(uim '(context-propagate-prop-label-update tc))
1499
(assert-equal (string-append "a\t直接入力\n"
1501
(uim 'test-prop-label))
1502
;; 2 widgets (updated state)
1503
(assert-true (uim-bool '(widget-activate! (assq 'widget_test_input_mode
1504
(context-widgets tc))
1505
'action_test_katakana)))
1506
(uim '(context-propagate-prop-label-update tc))
1507
(assert-equal (string-append "ア\tカタカナ\n"
1509
(uim 'test-prop-label))
1510
;; 2 widgets with non-existent
1512
(context-init-widgets! tc '(widget_test_kana_input_method
1513
widget_test_nonexistent
1514
widget_test_input_mode))
1516
(uim '(context-propagate-prop-label-update tc))
1517
(assert-equal (string-append "R\tローマ字\n"
1519
(uim 'test-prop-label))
1522
(context-init-widgets! tc ())
1524
(uim '(context-propagate-prop-label-update tc))
1525
(assert-equal "?\tunknown\n"
1526
(uim 'test-prop-label))
1529
(context-init-widgets! tc '(widget_test_null))
1531
(uim '(context-propagate-prop-label-update tc))
1532
(assert-equal "?\tunknown\n"
1533
(uim 'test-prop-label)))
1535
("test context-propagate-prop-list-update"
1537
(define test-prop-list #f)
1538
(define im-update-prop-list
1539
(lambda (context message)
1540
(set! test-prop-list message)))))
1543
(context-init-widgets! tc '(widget_test_input_mode
1544
widget_test_kana_input_method))
1546
(uim '(context-propagate-prop-list-update tc))
1547
(assert-equal (string-append
1549
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1550
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t\n"
1551
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1552
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t*\n"
1553
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n"
1555
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1556
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n")
1557
(uim 'test-prop-list))
1558
;; 2 widgets (updated state)
1559
(assert-true (uim-bool '(widget-activate! (assq 'widget_test_input_mode
1560
(context-widgets tc))
1561
'action_test_katakana)))
1562
(uim '(context-propagate-prop-list-update tc))
1563
(assert-equal (string-append
1565
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1566
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t*\n"
1567
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1568
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1569
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n"
1571
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1572
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n")
1573
(uim 'test-prop-list))
1574
;; 2 widgets with non-existent
1576
(context-init-widgets! tc '(widget_test_kana_input_method
1577
widget_test_nonexistent
1578
widget_test_input_mode))
1580
(uim '(context-propagate-prop-list-update tc))
1581
(assert-equal (string-append
1583
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1584
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n"
1586
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1587
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t*\n"
1588
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1589
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1590
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n")
1591
(uim 'test-prop-list))
1594
(context-init-widgets! tc ())
1596
(uim '(context-propagate-prop-list-update tc))
1597
(assert-equal "branch\t?\tunknown\n"
1598
(uim 'test-prop-list))
1601
(context-init-widgets! tc '(widget_test_null))
1603
(uim '(context-propagate-prop-list-update tc))
1604
(assert-equal "branch\t?\tunknown\n"
1605
(uim 'test-prop-list)))
1607
;; TODO: context-update-mode
1608
("test context-propagate-widget-states"
1611
(context-init-widgets! tc '(widget_test_input_mode
1612
widget_test_kana_input_method))
1616
(context-propagate-widget-states tc)
1618
(assert-equal (string-append
1620
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1621
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t\n"
1622
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1623
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t*\n"
1624
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n"
1626
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1627
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n")
1628
(uim 'test-prop-list))
1629
(assert-equal (string-append "a\t直接入力\n"
1631
(uim 'test-prop-label))
1633
(uim 'test-updated-mode))
1634
;; 2 widgets (updated state)
1635
(assert-true (uim-bool '(widget-activate! (assq 'widget_test_input_mode
1636
(context-widgets tc))
1637
'action_test_katakana)))
1639
(context-propagate-widget-states tc)
1641
(assert-equal (string-append
1643
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1644
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t*\n"
1645
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1646
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1647
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n"
1649
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1650
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n")
1651
(uim 'test-prop-list))
1652
(assert-equal (string-append "ア\tカタカナ\n"
1654
(uim 'test-prop-label))
1656
(uim 'test-updated-mode))
1657
;; 2 widgets with non-existent
1659
(context-init-widgets! tc '(widget_test_kana_input_method
1660
widget_test_nonexistent
1661
widget_test_input_mode))
1664
(context-propagate-widget-states tc)
1666
(assert-equal (string-append
1668
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1669
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n"
1671
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1672
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t*\n"
1673
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1674
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1675
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n")
1676
(uim 'test-prop-list))
1677
(assert-equal (string-append "R\tローマ字\n"
1679
(uim 'test-prop-label))
1681
(uim 'test-updated-mode))
1684
(context-init-widgets! tc ())
1687
(context-propagate-widget-states tc)
1689
(assert-equal "branch\t?\tunknown\n"
1690
(uim 'test-prop-list))
1691
(assert-equal "?\tunknown\n"
1692
(uim 'test-prop-label))
1694
(uim 'test-updated-mode))
1697
(context-init-widgets! tc '(widget_test_null))
1700
(context-propagate-widget-states tc)
1702
(assert-equal "branch\t?\tunknown\n"
1703
(uim 'test-prop-list))
1704
(assert-equal "?\tunknown\n"
1705
(uim 'test-prop-label))
1707
(uim 'test-updated-mode)))
1709
("test context-propagate-widget-configuration"
1712
(context-init-widgets! tc '(widget_test_input_mode
1713
widget_test_kana_input_method))
1717
(context-propagate-widget-configuration tc)
1719
(assert-equal (string-append
1721
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1722
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t\n"
1723
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1724
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t*\n"
1725
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n"
1727
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1728
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n")
1729
(uim 'test-prop-list))
1730
(assert-equal '("ひらがな"
1735
(uim 'test-mode-list))
1736
(assert-equal '("ひらがな"
1741
(uim 'test-updated-mode-list))
1743
(uim 'test-updated-mode))
1744
;; 2 widgets (updated state)
1745
(assert-true (uim-bool '(widget-activate! (assq 'widget_test_input_mode
1746
(context-widgets tc))
1747
'action_test_katakana)))
1749
(context-propagate-widget-configuration tc)
1751
(assert-equal (string-append
1753
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1754
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t*\n"
1755
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1756
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1757
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n"
1759
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1760
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n")
1761
(uim 'test-prop-list))
1762
(assert-equal '("ひらがな"
1767
(uim 'test-mode-list))
1768
(assert-equal '("ひらがな"
1773
(uim 'test-updated-mode-list))
1775
(uim 'test-updated-mode))
1776
;; 2 widgets with non-existent
1778
(context-init-widgets! tc '(widget_test_kana_input_method
1779
widget_test_nonexistent
1780
widget_test_input_mode))
1783
(context-propagate-widget-configuration tc)
1785
(assert-equal (string-append
1787
"leaf\tR\tローマ字\tローマ字入力モード\taction_test_roma\t*\n"
1788
"leaf\tか\tかな\tかな入力モード\taction_test_kana\t\n"
1790
"leaf\tあ\tひらがな\tひらがな入力モード\taction_test_hiragana\t\n"
1791
"leaf\tア\tカタカナ\tカタカナ入力モード\taction_test_katakana\t*\n"
1792
"leaf\tア\t半角カタカナ\t半角カタカナ入力モード\taction_test_hankana\t\n"
1793
"leaf\ta\t直接入力\t直接(無変換)入力モード\taction_test_direct\t\n"
1794
"leaf\tA\t全角英数\t全角英数入力モード\taction_test_zenkaku\t\n")
1795
(uim 'test-prop-list))
1796
(assert-equal '("ひらがな"
1801
(uim 'test-mode-list))
1802
(assert-equal '("ひらがな"
1807
(uim 'test-updated-mode-list))
1809
(uim 'test-updated-mode))
1812
(context-init-widgets! tc ())
1815
(context-propagate-widget-configuration tc)
1817
(assert-equal "branch\t?\tunknown\n"
1818
(uim 'test-prop-list))
1819
(assert-equal '("unknown")
1820
(uim 'test-mode-list))
1821
(assert-equal '("unknown")
1822
(uim 'test-updated-mode-list))
1824
(uim 'test-updated-mode))
1827
(context-init-widgets! tc '(widget_test_null))
1830
(context-propagate-widget-configuration tc)
1832
(assert-equal "branch\t?\tunknown\n"
1833
(uim 'test-prop-list))
1834
(assert-equal '("unknown")
1835
(uim 'test-mode-list))
1836
(assert-equal '("unknown")
1837
(uim 'test-updated-mode-list))
1839
(uim 'test-updated-mode)))
1841
("test context-prop-activate-handler"
1844
(context-init-widgets! tc '(widget_test_input_mode
1845
widget_test_kana_input_method))
1847
(uim '(set! test-activated #f))
1848
(assert-true (uim-bool '(and (context-prop-activate-handler
1850
"action_test_hiragana")
1852
(assert-equal 'action_test_hiragana
1853
(uim 'test-activated))
1854
(uim '(set! test-activated #f))
1855
(assert-true (uim-bool '(and (context-prop-activate-handler
1857
"action_test_zenkaku")
1859
(assert-equal 'action_test_zenkaku
1860
(uim 'test-activated))
1861
(uim '(set! test-activated #f))
1862
(assert-true (uim-bool '(and (context-prop-activate-handler
1866
(assert-equal 'action_test_kana
1867
(uim 'test-activated))
1868
(uim '(set! test-activated #f))
1869
(assert-true (uim-bool '(and (context-prop-activate-handler
1871
"action_test_direct")
1873
(assert-equal 'action_test_direct
1874
(uim 'test-activated))
1875
(uim '(set! test-activated #f))
1876
(assert-true (uim-bool '(and (context-prop-activate-handler
1878
"action_test_direct")
1880
(assert-equal 'action_test_direct
1881
(uim 'test-activated))
1882
(uim '(set! test-activated #f))
1883
(assert-false (uim-bool '(and (context-prop-activate-handler
1885
"action_test_nonexistent")
1887
(assert-false (uim-bool 'test-activated))
1890
(context-init-widgets! tc '(widget_test_kana_input_method))
1892
(uim '(set! test-activated #f))
1893
(assert-false (uim-bool '(and (context-prop-activate-handler
1895
"action_test_hiragana")
1897
(assert-false (uim-bool 'test-activated))
1898
(uim '(set! test-activated #f))
1899
(assert-false (uim-bool '(and (context-prop-activate-handler
1901
"action_test_zenkaku")
1903
(assert-false (uim-bool 'test-activated))
1904
(uim '(set! test-activated #f))
1905
(assert-true (uim-bool '(and (context-prop-activate-handler
1909
(assert-equal 'action_test_kana
1910
(uim 'test-activated))
1911
(uim '(set! test-activated #f))
1912
(assert-false (uim-bool '(and (context-prop-activate-handler
1914
"action_test_direct")
1916
(assert-false (uim-bool 'test-activated))
1917
(uim '(set! test-activated #f))
1918
(assert-false (uim-bool '(and (context-prop-activate-handler
1920
"action_test_direct")
1922
(assert-false (uim-bool 'test-activated))
1923
(uim '(set! test-activated #f))
1924
(assert-false (uim-bool '(and (context-prop-activate-handler
1926
"action_test_nonexistent")
1928
(assert-false (uim-bool 'test-activated))
1931
(context-init-widgets! tc ())
1933
(uim '(set! test-activated #f))
1934
(assert-false (uim-bool '(and (context-prop-activate-handler
1936
"action_test_hiragana")
1938
(assert-false (uim-bool 'test-activated))
1939
(uim '(set! test-activated #f))
1940
(assert-false (uim-bool '(and (context-prop-activate-handler
1944
(assert-false (uim-bool 'test-activated))
1945
(uim '(set! test-activated #f))
1946
(assert-false (uim-bool '(and (context-prop-activate-handler
1948
"action_test_direct")
1950
(assert-false (uim-bool 'test-activated))
1951
(uim '(set! test-activated #f))
1952
(assert-false (uim-bool '(and (context-prop-activate-handler
1954
"action_test_nonexistent")
1956
(assert-false (uim-bool 'test-activated))
1957
;; widget_test_null (no action handlers)
1959
(context-init-widgets! tc '(widget_test_null))
1961
(uim '(set! test-activated #f))
1962
(assert-false (uim-bool '(and (context-prop-activate-handler
1964
"action_test_hiragana")
1966
(assert-false (uim-bool 'test-activated))
1967
(uim '(set! test-activated #f))
1968
(assert-false (uim-bool '(and (context-prop-activate-handler
1972
(assert-false (uim-bool 'test-activated))
1973
(uim '(set! test-activated #f))
1974
(assert-false (uim-bool '(and (context-prop-activate-handler
1976
"action_test_direct")
1978
(assert-false (uim-bool 'test-activated))
1979
(uim '(set! test-activated #f))
1980
(assert-false (uim-bool '(and (context-prop-activate-handler
1982
"action_test_nonexistent")
1984
(assert-false (uim-bool 'test-activated)))
1986
("test context-find-mode-widget"
1988
(context-init-widgets! tc '(widget_test_input_mode
1989
widget_test_kana_input_method))
1991
(assert-equal 'widget_test_input_mode
1992
(uim '(widget-id (context-find-mode-widget tc))))
1994
(context-init-widgets! tc '(widget_test_kana_input_method
1995
widget_test_input_mode))
1997
(assert-equal 'widget_test_input_mode
1998
(uim '(widget-id (context-find-mode-widget tc))))
2000
(context-init-widgets! tc '(widget_test_kana_input_method
2001
widget_test_input_mode
2004
(assert-equal 'widget_test_input_mode
2005
(uim '(widget-id (context-find-mode-widget tc))))
2007
(context-init-widgets! tc '(widget_test_kana_input_method
2010
(assert-false (uim-bool '(context-find-mode-widget tc)))
2012
(context-init-widgets! tc ())
2014
(assert-false (uim-bool '(context-find-mode-widget tc))))
2016
("test widget-action-id->mode-value"
2018
(define mw (widget-new 'widget_test_input_mode tc))
2021
(uim '(widget-action-id->mode-value mw
2022
'action_test_hiragana)))
2024
(uim '(widget-action-id->mode-value mw
2025
'action_test_katakana)))
2027
(uim '(widget-action-id->mode-value mw
2028
'action_test_hankana)))
2030
(uim '(widget-action-id->mode-value mw
2031
'action_test_direct)))
2033
(uim '(widget-action-id->mode-value mw
2034
'action_test_zenkaku)))
2035
(assert-error (lambda ()
2036
(uim '(widget-action-id->mode-value mw 'action_test_nonexistent)))))
2038
("test widget-mode-value->action-id"
2040
(define mw (widget-new 'widget_test_input_mode tc))
2042
(assert-equal 'action_test_hiragana
2043
(uim '(widget-mode-value->action-id mw 0)))
2044
(assert-equal 'action_test_katakana
2045
(uim '(widget-mode-value->action-id mw 1)))
2046
(assert-equal 'action_test_hankana
2047
(uim '(widget-mode-value->action-id mw 2)))
2048
(assert-equal 'action_test_direct
2049
(uim '(widget-mode-value->action-id mw 3)))
2050
(assert-equal 'action_test_zenkaku
2051
(uim '(widget-mode-value->action-id mw 4)))
2052
(assert-false (uim-bool '(widget-mode-value->action-id mw 5)))
2053
(assert-false (uim-bool '(widget-mode-value->action-id mw -1))))
2055
("test context-current-mode"
2056
;;; widget_test_input_mode
2058
(context-init-widgets! tc '(widget_test_input_mode
2059
widget_test_kana_input_method))
2060
(define test-input-mode (context-find-mode-widget tc))
2062
;; action_test_direct (initial activity)
2064
(uim '(context-current-mode tc)))
2065
;; action_test_direct -> action_test_hiragana
2066
(assert-true (uim-bool '(widget-activate! test-input-mode
2067
'action_test_hiragana)))
2069
(uim '(context-current-mode tc)))
2070
;; action_test_hiragana -> action_test_katakana
2071
(assert-true (uim-bool '(widget-activate! test-input-mode
2072
'action_test_katakana)))
2074
(uim '(context-current-mode tc)))
2075
;; action_test_katakana -> action_test_hankana
2076
(assert-true (uim-bool '(widget-activate! test-input-mode
2077
'action_test_hankana)))
2079
(uim '(context-current-mode tc)))
2080
;; action_test_hankana -> action_test_zenkaku
2081
(assert-true (uim-bool '(widget-activate! test-input-mode
2082
'action_test_zenkaku)))
2084
(uim '(context-current-mode tc)))
2085
;; action_test_zenkaku -> action_test_direct
2086
(assert-true (uim-bool '(widget-activate! test-input-mode
2087
'action_test_direct)))
2089
(uim '(context-current-mode tc)))
2090
;; action_test_direct -> invalid
2091
(assert-false (uim-bool '(widget-activate! test-input-mode
2092
'action_nonexistent)))
2094
(uim '(context-current-mode tc)))
2095
(assert-error (lambda ()
2096
(uim '(context-current-mode #f))))
2100
(context-init-widgets! tc '(widget_test_null
2101
widget_test_kana_input_method))
2104
(uim '(context-current-mode tc)))
2105
(assert-error (lambda ()
2106
(uim '(context-current-mode #f))))
2111
'widget_test_dummy_input_mode
2112
(indicator-new (lambda (owner)
2113
fallback-indication))
2114
#f) ;; has no actions
2115
(context-init-widgets! tc '(widget_test_dummy_input_mode
2116
widget_test_kana_input_method))
2119
(uim '(context-current-mode tc)))
2120
(assert-error (lambda ()
2121
(uim '(context-current-mode #f))))
2123
;;; duplicate activity
2126
'widget_test_invalid_input_mode
2127
(indicator-new (lambda (owner)
2128
fallback-indication))
2129
(actions-new '(action_test_hiragana
2130
action_test_katakana
2133
action_test_alt_direct
2134
action_test_zenkaku)))
2135
(context-init-widgets! tc '(widget_test_invalid_input_mode
2136
widget_test_kana_input_method))
2138
;; context-current-mode returns 0 rather than 3 when
2139
;; action_test_direct and action_test_alt_direct are conflicted.
2141
(uim '(context-current-mode tc)))
2142
;; action_test_direct -> action_test_hiragana
2143
(assert-true (uim-bool '(widget-activate! test-input-mode
2144
'action_test_hiragana)))
2146
(uim '(context-current-mode tc)))
2147
;; action_test_hiragana -> action_test_katakana
2148
(assert-true (uim-bool '(widget-activate! test-input-mode
2149
'action_test_katakana)))
2151
(uim '(context-current-mode tc)))
2152
(assert-error (lambda ()
2153
(uim '(context-current-mode #f)))))
2155
("test context-update-mode"
2156
;;; widget_test_input_mode
2158
(define test-updated-mode #f)
2159
(define im-update-mode
2160
(lambda (context mode)
2161
(set! test-updated-mode mode)))
2162
(context-init-widgets! tc '(widget_test_input_mode
2163
widget_test_kana_input_method))
2164
(define test-input-mode (context-find-mode-widget tc))
2166
;; action_test_direct (initial activity)
2167
(uim '(context-update-mode tc))
2169
(uim 'test-updated-mode))
2170
;; action_test_direct -> action_test_hiragana
2171
(assert-true (uim-bool '(widget-activate! test-input-mode
2172
'action_test_hiragana)))
2173
(uim '(context-update-mode tc))
2175
(uim 'test-updated-mode))
2176
;; action_test_hiragana -> action_test_katakana
2177
(assert-true (uim-bool '(widget-activate! test-input-mode
2178
'action_test_katakana)))
2179
(uim '(context-update-mode tc))
2181
(uim 'test-updated-mode))
2182
;; action_test_katakana -> action_test_hankana
2183
(assert-true (uim-bool '(widget-activate! test-input-mode
2184
'action_test_hankana)))
2185
(uim '(context-update-mode tc))
2187
(uim 'test-updated-mode))
2188
;; action_test_hankana -> action_test_zenkaku
2189
(assert-true (uim-bool '(widget-activate! test-input-mode
2190
'action_test_zenkaku)))
2191
(uim '(context-update-mode tc))
2193
(uim 'test-updated-mode))
2194
;; action_test_zenkaku -> action_test_direct
2195
(assert-true (uim-bool '(widget-activate! test-input-mode
2196
'action_test_direct)))
2197
(uim '(context-update-mode tc))
2199
(uim 'test-updated-mode))
2200
;; action_test_direct -> invalid
2201
(assert-false (uim-bool '(widget-activate! test-input-mode
2202
'action_nonexistent)))
2203
(uim '(context-update-mode tc))
2205
(uim 'test-updated-mode))
2206
(assert-error (lambda ()
2207
(uim '(context-current-mode #f))))
2211
(context-init-widgets! tc '(widget_test_null
2212
widget_test_kana_input_method))
2214
(uim '(context-update-mode tc))
2216
(uim 'test-updated-mode))
2221
'widget_test_dummy_input_mode
2222
(indicator-new (lambda (owner)
2223
fallback-indication))
2224
#f) ;; has no actions
2225
(context-init-widgets! tc '(widget_test_dummy_input_mode
2226
widget_test_kana_input_method))
2228
(uim '(context-update-mode tc))
2230
(uim 'test-updated-mode))
2232
;;; duplicate activity
2235
'widget_test_invalid_input_mode
2236
(indicator-new (lambda (owner)
2237
fallback-indication))
2238
(actions-new '(action_test_hiragana
2239
action_test_katakana
2242
action_test_alt_direct
2243
action_test_zenkaku)))
2244
(context-init-widgets! tc '(widget_test_invalid_input_mode
2245
widget_test_kana_input_method))
2247
;; context-current-mode returns 0 rather than 3 when
2248
;; action_test_direct and action_test_alt_direct are conflicted.
2249
(uim '(context-update-mode tc))
2251
(uim 'test-updated-mode))
2252
;; action_test_direct -> action_test_hiragana
2253
(assert-true (uim-bool '(widget-activate! test-input-mode
2254
'action_test_hiragana)))
2255
(uim '(context-update-mode tc))
2257
(uim 'test-updated-mode))
2258
;; action_test_hiragana -> action_test_katakana
2259
(assert-true (uim-bool '(widget-activate! test-input-mode
2260
'action_test_katakana)))
2261
(uim '(context-update-mode tc))
2263
(uim 'test-updated-mode)))
2265
("test context-update-mode-list"
2267
(context-init-widgets! tc '(widget_test_input_mode
2268
widget_test_kana_input_method))
2269
(define test-input-mode (context-find-mode-widget tc))
2273
(context-update-mode-list tc)
2275
(assert-equal '("ひらがな"
2280
(uim 'test-mode-list))
2281
(assert-equal '("ひらがな"
2286
(uim 'test-updated-mode-list))
2288
(uim 'test-updated-mode))
2289
;; action_test_direct -> action_test_hankana
2290
(assert-true (uim-bool '(widget-activate! test-input-mode
2291
'action_test_hankana)))
2293
(context-update-mode-list tc)
2295
(assert-equal '("ひらがな"
2300
(uim 'test-mode-list))
2301
(assert-equal '("ひらがな"
2306
(uim 'test-updated-mode-list))
2308
(uim 'test-updated-mode))
2309
;; duplicate activity
2312
'widget_test_invalid_input_mode
2313
(indicator-new (lambda (owner)
2314
fallback-indication))
2315
(actions-new '(action_test_hiragana
2316
action_test_katakana
2319
action_test_alt_direct
2320
action_test_zenkaku)))
2321
(context-init-widgets! tc '(widget_test_invalid_input_mode
2322
widget_test_kana_input_method))
2324
(uim '(test-context-set-on! tc #f))
2326
(context-update-mode-list tc)
2328
(assert-equal '("ひらがな"
2334
(uim 'test-mode-list))
2335
(assert-equal '("ひらがな"
2341
(uim 'test-updated-mode-list))
2342
;; context-current-mode returns 0 rather than 3 when
2343
;; action_test_direct and action_test_alt_direct are conflicted.
2345
(uim 'test-updated-mode))
2350
'widget_test_dummy_input_mode
2351
(indicator-new (lambda (owner)
2352
fallback-indication))
2353
#f) ;; has no actions
2354
(context-init-widgets! tc '(widget_test_dummy_input_mode
2355
widget_test_kana_input_method))
2357
(assert-true (uim-bool '(widget-activate! test-input-mode
2358
'action_test_hankana)))
2360
(context-update-mode-list tc)
2363
(uim 'test-mode-list))
2365
(uim 'test-updated-mode-list))
2367
(uim 'test-updated-mode)))
2369
("test context-mode-handler"
2372
(context-init-widgets! tc '(widget_test_input_mode
2373
widget_test_kana_input_method))
2375
(uim '(set! test-activated #f))
2376
(assert-true (uim-bool '(and (context-mode-handler tc 0)
2378
(assert-equal 'action_test_hiragana
2379
(uim 'test-activated))
2380
(uim '(set! test-activated #f))
2381
(assert-true (uim-bool '(and (context-mode-handler tc 4)
2383
(assert-equal 'action_test_zenkaku
2384
(uim 'test-activated))
2385
(uim '(set! test-activated #f))
2386
(assert-true (uim-bool '(and (context-prop-activate-handler
2390
(assert-equal 'action_test_kana
2391
(uim 'test-activated))
2392
(uim '(set! test-activated #f))
2393
(assert-true (uim-bool '(and (context-mode-handler tc 3)
2395
(assert-equal 'action_test_direct
2396
(uim 'test-activated))
2397
(uim '(set! test-activated #f))
2398
(assert-true (uim-bool '(and (context-mode-handler tc 3)
2400
(assert-equal 'action_test_direct
2401
(uim 'test-activated))
2402
(uim '(set! test-activated #f))
2403
(assert-false (uim-bool '(and (context-mode-handler tc -1)
2405
(assert-false (uim-bool 'test-activated))
2408
(context-init-widgets! tc '(widget_test_kana_input_method))
2410
(uim '(set! test-activated #f))
2411
(assert-false (uim-bool '(and (context-mode-handler tc 0)
2413
(assert-false (uim-bool 'test-activated))
2414
(uim '(set! test-activated #f))
2415
(assert-false (uim-bool '(and (context-mode-handler tc 4)
2417
(assert-false (uim-bool 'test-activated))
2418
(uim '(set! test-activated #f))
2419
(assert-true (uim-bool '(and (context-prop-activate-handler
2423
(assert-equal 'action_test_kana
2424
(uim 'test-activated))
2425
(uim '(set! test-activated #f))
2426
(assert-false (uim-bool '(and (context-mode-handler tc 3)
2428
(assert-false (uim-bool 'test-activated))
2429
(uim '(set! test-activated #f))
2430
(assert-false (uim-bool '(and (context-mode-handler tc 3)
2432
(assert-false (uim-bool 'test-activated))
2433
(uim '(set! test-activated #f))
2434
(assert-false (uim-bool '(and (context-mode-handler tc -1)
2436
(assert-false (uim-bool 'test-activated))
2439
(context-init-widgets! tc ())
2441
(uim '(set! test-activated #f))
2442
(assert-false (uim-bool '(and (context-mode-handler tc 0)
2444
(assert-false (uim-bool 'test-activated))
2445
(uim '(set! test-activated #f))
2446
(assert-false (uim-bool '(and (context-prop-activate-handler
2450
(assert-false (uim-bool 'test-activated))
2451
(uim '(set! test-activated #f))
2452
(assert-false (uim-bool '(and (context-mode-handler tc 3)
2454
(assert-false (uim-bool 'test-activated))
2455
(uim '(set! test-activated #f))
2456
(assert-false (uim-bool '(and (context-mode-handler tc -1)
2458
(assert-false (uim-bool 'test-activated))
2459
;; widget_test_null (no action handlers)
2461
(context-init-widgets! tc '(widget_test_null))
2463
(uim '(set! test-activated #f))
2464
(assert-false (uim-bool '(and (context-mode-handler tc 0)
2466
(assert-false (uim-bool 'test-activated))
2467
(uim '(set! test-activated #f))
2468
(assert-false (uim-bool '(and (context-prop-activate-handler
2472
(assert-false (uim-bool 'test-activated))
2473
(uim '(set! test-activated #f))
2474
(assert-false (uim-bool '(and (context-mode-handler tc 3)
2476
(assert-false (uim-bool 'test-activated))
2477
(uim '(set! test-activated #f))
2478
(assert-false (uim-bool '(and (context-mode-handler tc -1)
2480
(assert-false (uim-bool 'test-activated))))