1 | ;; -*- coding:euc-jp -*- |
---|
2 | ;; |
---|
3 | ;; dictionary-independent tests for mecab module |
---|
4 | ;; |
---|
5 | |
---|
6 | (use gauche.test) |
---|
7 | |
---|
8 | (test-start "mecab: dictionary-independent tests") |
---|
9 | (use text.mecab) |
---|
10 | (test-module 'text.mecab) |
---|
11 | |
---|
12 | ;; |
---|
13 | ;; write-object / ctor |
---|
14 | ;; |
---|
15 | (define-macro (displayed-string obj) |
---|
16 | `(with-output-to-string (lambda () (display ,obj)))) |
---|
17 | |
---|
18 | (test-section "write-object (display)") |
---|
19 | (let1 m (mecab-new '()) |
---|
20 | (test* "(mecab-new '())" "#<mecab ()>" (displayed-string m)) |
---|
21 | (mecab-destroy m)) |
---|
22 | (let1 m (mecab-new '("-O" "chasen")) |
---|
23 | (test* "(mecab-new '(\"-O\" \"chasen\"))" "#<mecab ((output-format-type chasen))>" (displayed-string m)) |
---|
24 | (mecab-destroy m)) |
---|
25 | (let1 m (mecab-new2 "") |
---|
26 | (test* "(mecab-new2 \"\")" "#<mecab ()>" (displayed-string m)) |
---|
27 | (mecab-destroy m)) |
---|
28 | (let1 m (mecab-new2 "-Ochasen") |
---|
29 | (test* "(mecab-new2 \"-Ochasen\")" "#<mecab ((output-format-type chasen))>" (displayed-string m)) |
---|
30 | (mecab-destroy m)) |
---|
31 | (let1 m (mecab-new2 "-O chasen") |
---|
32 | (test* "(mecab-new2 \"-O chasen\")" "#<mecab ((output-format-type chasen))>" (displayed-string m)) |
---|
33 | (mecab-destroy m)) |
---|
34 | |
---|
35 | (test-section "reader-ctor") |
---|
36 | (let1 m #,(mecab "") ;; with reader-ctor |
---|
37 | (test* "#,(mecab \"\") : mecab?" #t (mecab? m)) |
---|
38 | (test* "#,(mecab \"\") : options" '() (mecab-options m)) |
---|
39 | (mecab-destroy m)) |
---|
40 | (let1 m #,(mecab "-Ochasen") ;; with reader-ctor |
---|
41 | (test* "#,(mecab \"-Ochasen\") : mecab?" #t (mecab? m)) |
---|
42 | (test* "#,(mecab \"-Ochasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
43 | (mecab-destroy m)) |
---|
44 | (let1 m #,(mecab :O chasen :l 1) ;; with reader-ctor |
---|
45 | (test* "#,(mecab :O chasen :l 1) : mecab?" #t (mecab? m)) |
---|
46 | (test* "#,(mecab :O chasen :l 1) : mecab-options" '((output-format-type chasen) (lattice-level 1)) (mecab-options m)) |
---|
47 | (mecab-destroy m)) |
---|
48 | |
---|
49 | ;; |
---|
50 | ;; mecab?, mecab-node?, mecab-dictionary-info? |
---|
51 | ;; |
---|
52 | (let* ([m (mecab-new2 "")] |
---|
53 | [node (mecab-sparse-tonode m "")] |
---|
54 | [dinfo (mecab-dictionary-info m)]) |
---|
55 | (test-section "mecab?, mecab-node?, mecab-dictionary-info?") |
---|
56 | |
---|
57 | (test* "is-a? m <mecab>" #t (is-a? m <mecab>)) |
---|
58 | (test* "is-a? node <mecab>" #t (is-a? node <mecab-node>)) |
---|
59 | (test* "is-a? dinfo <mecab>" #t (is-a? dinfo <mecab-dictionary-info>)) |
---|
60 | |
---|
61 | (test* "mecab? m" #t (mecab? m)) |
---|
62 | (test* "mecab? node" #f (mecab? node)) |
---|
63 | (test* "mecab? dinfo" #f (mecab? dinfo)) |
---|
64 | |
---|
65 | (test* "mecab-node? m" #f (mecab-node? m)) |
---|
66 | (test* "mecab-node? node" #t (mecab-node? node)) |
---|
67 | (test* "mecab-node? dinfo" #f (mecab-node? dinfo)) |
---|
68 | |
---|
69 | (test* "mecab-dictionary-info? m" #f (mecab-dictionary-info? m)) |
---|
70 | (test* "mecab-dictionary-info? node" #f (mecab-dictionary-info? node)) |
---|
71 | (test* "mecab-dictionary-info? dinfo" #t (mecab-dictionary-info? dinfo)) |
---|
72 | |
---|
73 | (mecab-destroy m)) |
---|
74 | |
---|
75 | ;; mecab, mecab-options |
---|
76 | (test-section "mecab-options") |
---|
77 | (let1 m (mecab-new '()) |
---|
78 | (test* "(mecab-new '())" '() (mecab-options m)) |
---|
79 | (mecab-destroy m)) |
---|
80 | (let1 m (mecab-new '("-O" "chasen")) |
---|
81 | (test* "(mecab-new '(\"-O\" \"chasen\"))" '((output-format-type chasen)) (mecab-options m)) |
---|
82 | (mecab-destroy m)) |
---|
83 | (let1 m (mecab-new2 "") |
---|
84 | (test* "(mecab-new2 \"\"" '() (mecab-options m)) |
---|
85 | (mecab-destroy m)) |
---|
86 | (let1 m (mecab-new2 "-Ochasen") |
---|
87 | (test* "mecab?" #t (mecab? m)) |
---|
88 | (test* "(mecab-new2 \"-Ochasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
89 | (mecab-destroy m)) |
---|
90 | (let1 m (mecab-new2 "-O chasen") |
---|
91 | (test* "mecab?" #t (mecab? m)) |
---|
92 | (test* "(mecab-new2 \"-O chasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
93 | (mecab-destroy m)) |
---|
94 | (let1 m (mecab-new2 "--output-format-type chasen") |
---|
95 | (test* "mecab?" #t (mecab? m)) |
---|
96 | (test* "(mecab-new2 \"--output-format-type chasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
97 | (mecab-destroy m)) |
---|
98 | (let1 m (mecab-new2 "--output-format-type=chasen") |
---|
99 | (test* "mecab?" #t (mecab? m)) |
---|
100 | (test* "(mecab-new2 \"--output-format-type=chasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
101 | (mecab-destroy m)) |
---|
102 | (let1 m (mecab "") |
---|
103 | (test* "(mecab \"\") : mecab?" #t (mecab? m)) |
---|
104 | (test* "(mecab \"\") : options" '() (mecab-options m)) |
---|
105 | (mecab-destroy m)) |
---|
106 | (let1 m (mecab "-Ochasen") |
---|
107 | (test* "(mecab \"-Ochasen\") : mecab?" #t (mecab? m)) |
---|
108 | (test* "(mecab \"-Ochasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
109 | (mecab-destroy m)) |
---|
110 | (let1 m (mecab "-O chasen") |
---|
111 | (test* "(mecab \"-O chasen\") : mecab?" #t (mecab? m)) |
---|
112 | (test* "(mecab \"-O chasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
113 | (mecab-destroy m)) |
---|
114 | (let1 m (mecab "-O" "chasen") |
---|
115 | (test* "(mecab \"-O\" \"chasen\") : mecab?" #t (mecab? m)) |
---|
116 | (test* "(mecab \"-O\" \"chasen\") : options" '((output-format-type chasen)) (mecab-options m)) |
---|
117 | (mecab-destroy m)) |
---|
118 | (let1 m (mecab :O 'chasen :l 1) |
---|
119 | (test* "(mecab :O chasen :l 1) : mecab?" #t (mecab? m)) |
---|
120 | (test* "(mecab :O chasen :l 1) : mecab-options" '((output-format-type chasen) (lattice-level 1)) (mecab-options m)) |
---|
121 | (mecab-destroy m)) |
---|
122 | |
---|
123 | ;; |
---|
124 | ;; APIs |
---|
125 | ;; |
---|
126 | (test-section "mecab-new") |
---|
127 | (let1 m (mecab-new '()) |
---|
128 | (test* "is-a? <mecab>" #t (is-a? m <mecab>)) |
---|
129 | (test* "mecab?" #t (mecab? m)) |
---|
130 | |
---|
131 | (test-section "mecab-destroy") |
---|
132 | (test* "not destroyed yet" #f (mecab-destroyed? m)) |
---|
133 | (mecab-destroy m) |
---|
134 | (test* "destroyed" #t (mecab-destroyed? m)) |
---|
135 | ) |
---|
136 | |
---|
137 | (test-section "mecab-new2") |
---|
138 | (let1 m (mecab-new2 "") |
---|
139 | (test* "is-a? <mecab>" #t (is-a? m <mecab>)) |
---|
140 | (test* "mecab?" #t (mecab? m)) |
---|
141 | (test* "options" '() (mecab-options m)) |
---|
142 | (mecab-destroy m)) |
---|
143 | |
---|
144 | (test-section "mecab-version") |
---|
145 | (test* "mecab-version" 1 |
---|
146 | (rxmatch-num-matches |
---|
147 | (#/^[0-9]+\.[0-9]+[.0-9A-Za-z]*$/ (mecab-version)))) |
---|
148 | |
---|
149 | (test-section "mecab-strerror") |
---|
150 | (mecab-new2 "") |
---|
151 | (test* "at mecab-new2 (ok)" "" (mecab-strerror #f)) |
---|
152 | |
---|
153 | (mecab-new2 "-d //") ;; => "tagger.cpp(149) [load_dictionary_resource(param)] param.cpp(71) [ifs] no such file or directory: //dicrc" |
---|
154 | (test* "at mecab-new (err)" #f (string=? "" (mecab-strerror #f))) |
---|
155 | (test* "no such file or directory" #f (not (#/no such file or directory/ (mecab-strerror #f)))) |
---|
156 | |
---|
157 | (let1 m (mecab-new2 "") |
---|
158 | (mecab-sparse-tostr m "��Ĥ���") |
---|
159 | (test* "noerr" "" (mecab-strerror m)) |
---|
160 | (mecab-destroy m)) |
---|
161 | |
---|
162 | (let1 m (mecab-new2 "") |
---|
163 | (test-section "mecab-get-partial / mecab-set-partial") |
---|
164 | (test* "default partial mode [0|1]" #t |
---|
165 | (and (memq (mecab-get-partial m) '(0 1)) #t)) |
---|
166 | (mecab-set-partial m 1) |
---|
167 | (test* "set to 1" 1 (mecab-get-partial m)) |
---|
168 | (mecab-set-partial m 0) |
---|
169 | (test* "set to 0" 0 (mecab-get-partial m)) |
---|
170 | |
---|
171 | (test-section "mecab-get-theta / mecab-set-theta") |
---|
172 | (let1 theta (mecab-get-theta m) |
---|
173 | (test* "default partial mode [0..1]" #t (and (number? theta) (<= 0.0 theta 1.0)))) |
---|
174 | (mecab-set-theta m 1.0) |
---|
175 | (test* "set to 1.0" 1.0 (mecab-get-theta m)) |
---|
176 | (mecab-set-theta m 0.5) |
---|
177 | (test* "set to 0.5" 0.5 (mecab-get-theta m)) |
---|
178 | |
---|
179 | (test-section "mecab-get-lattice-level / mecab-set-lattice-level") |
---|
180 | (test* "default lattice-level [0|1|2]" #t |
---|
181 | (and (memq (mecab-get-lattice-level m) '(0 1 2)) #t)) |
---|
182 | (mecab-set-lattice-level m 1) |
---|
183 | (test* "set to 1" 1 (mecab-get-lattice-level m)) |
---|
184 | (mecab-set-lattice-level m 2) |
---|
185 | (test* "set to 2" 2 (mecab-get-lattice-level m)) |
---|
186 | (mecab-set-lattice-level m 0) |
---|
187 | (test* "set to 0" 0 (mecab-get-lattice-level m)) |
---|
188 | |
---|
189 | (test-section "mecab-get-all-morphs / mecab-set-all-morphs") |
---|
190 | (test* "default all-morphs [0|1]" #t |
---|
191 | (and (memq (mecab-get-all-morphs m) '(0 1)) #t)) |
---|
192 | (mecab-set-all-morphs m 1) |
---|
193 | (test* "set to 1" 1 (mecab-get-all-morphs m)) |
---|
194 | (mecab-set-all-morphs m 0) |
---|
195 | (test* "set to 0" 0 (mecab-get-all-morphs m)) |
---|
196 | ) |
---|
197 | |
---|
198 | (test-end) |
---|