comparison src/testdir/test_gui.vim @ 10879:1fce74a5a628 v8.0.0329

patch 8.0.0329: xfontset and guifontwide are not tested commit https://github.com/vim/vim/commit/10434674821939222bf552d15d93e0132d13badc Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 12 19:59:08 2017 +0100 patch 8.0.0329: xfontset and guifontwide are not tested Problem: Xfontset and guifontwide are not tested. Solution: Add tests. (Kazunobu Kuriyama)
author Christian Brabandt <cb@256bit.org>
date Sun, 12 Feb 2017 20:00:04 +0100
parents 20d71d305d1c
children 310834b0256a
comparison
equal deleted inserted replaced
10878:cd7433f8778b 10879:1fce74a5a628
129 if skipped 129 if skipped
130 throw "Skipped: Test not implemented yet for this GUI" 130 throw "Skipped: Test not implemented yet for this GUI"
131 endif 131 endif
132 endfunc 132 endfunc
133 133
134 func Test_set_guifontset()
135 let skipped = 0
136
137 if has('xfontset')
138 let l:ctype_saved = v:ctype
139
140 " For UTF-8 locales, XCreateFontSet(3) is likely to fail in constructing a
141 " fontset automatically from one or two simple XLFDs because it requires
142 " the host system to have a fairly comprehensive collection of fixed-width
143 " fonts with various sizes and registries/encodings in order to get the
144 " job done. To make the test meaningful for a wide variety of hosts, we
145 " confine ourselves to the following locale for which X11 historically has
146 " the fonts to use with.
147 language ctype ja_JP.eucJP
148
149 " Since XCreateFontSet(3) is very sensitive to locale, fonts must be
150 " chosen meticulously.
151 let l:font_head = '-misc-fixed-medium-r-normal--14'
152
153 let l:font_aw70 = l:font_head . '-130-75-75-c-70'
154 let l:font_aw140 = l:font_head . '-130-75-75-c-140'
155
156 let l:font_jisx0201 = l:font_aw70 . '-jisx0201.1976-0'
157 let l:font_jisx0208 = l:font_aw140 . '-jisx0208.1983-0'
158
159 " Full XLFDs
160 let l:fontset_name = join([ l:font_jisx0208, l:font_jisx0201 ], ',')
161 exec 'set guifontset=' . l:fontset_name
162 call assert_equal(l:fontset_name, &guifontset)
163
164 " XLFDs w/o CharSetRegistry and CharSetEncoding
165 let l:fontset_name = join([ l:font_aw140, l:font_aw70 ], ',')
166 exec 'set guifontset=' . l:fontset_name
167 call assert_equal(l:fontset_name, &guifontset)
168
169 " Singleton
170 let l:fontset_name = l:font_head . '-*'
171 exec 'set guifontset=' . l:fontset_name
172 call assert_equal(l:fontset_name, &guifontset)
173
174 " Aliases
175 let l:fontset_name = 'k14,r14'
176 exec 'set guifontset=' . l:fontset_name
177 call assert_equal(l:fontset_name, &guifontset)
178
179 exec 'language ctype' l:ctype_saved
180
181 else
182 let skipped = 1
183 endif
184
185 if skipped
186 throw "Skipped: Not supported by this GUI"
187 endif
188 endfunc
189
190 func Test_set_guifontwide()
191 let skipped = 0
192
193 if has('gui_gtk')
194 let l:guifont_saved = &guifont
195 let l:guifontwide_saved = &guifontwide
196
197 let l:fc_match = exepath('fc-match')
198 if l:fc_match != ''
199 let &guifont = system('fc-match -f "%{family[0]} %{size}" monospace:size=10')
200 let l:wide = system('fc-match -f "%{family[0]} %{size}" monospace:size=10:lang=ja')
201 exec 'set guifontwide=' . fnameescape(l:wide)
202 call assert_equal(l:wide, &guifontwide)
203 else
204 let skipped = 3
205 endif
206
207 let &guifontwide = l:guifontwide_saved
208 let &guifont = l:guifont_saved
209
210 elseif has('gui_athena') || has('gui_motif')
211 " guifontwide is premised upon the xfontset feature.
212 if has('xfontset')
213 let l:encoding_saved = &encoding
214 let l:guifont_saved = &guifont
215 let l:guifontset_saved = &guifontset
216 let l:guifontwide_saved = &guifontwide
217
218 let l:nfont = '-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1'
219 let l:wfont = '-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1'
220
221 set encoding=utf-8
222
223 " Case 1: guifontset is empty
224 set guifontset=
225
226 " Case 1-1: Automatic selection
227 set guifontwide=
228 exec 'set guifont=' . l:nfont
229 call assert_equal(l:wfont, &guifontwide)
230
231 " Case 1-2: Manual selection
232 exec 'set guifontwide=' . l:wfont
233 exec 'set guifont=' . l:nfont
234 call assert_equal(l:wfont, &guifontwide)
235
236 " Case 2: guifontset is invalid
237 try
238 set guifontset=-*-notexist-*
239 call assert_false(1, "'set guifontset=notexist' should have failed")
240 catch
241 call assert_exception('E598')
242 endtry
243 " Set it to an invalid value brutally for preparation.
244 let &guifontset = '-*-notexist-*'
245
246 " Case 2-1: Automatic selection
247 set guifontwide=
248 exec 'set guifont=' . l:nfont
249 call assert_equal(l:wfont, &guifontwide)
250
251 " Case 2-2: Manual selection
252 exec 'set guifontwide=' . l:wfont
253 exec 'set guifont=' . l:nfont
254 call assert_equal(l:wfont, &guifontwide)
255
256 let &guifontwide = l:guifontwide_saved
257 let &guifontset = l:guifontset_saved
258 let &guifont = l:guifont_saved
259 let &encoding = l:encoding_saved
260 else
261 let skipped = 2
262 endif
263 else
264 let skipped = 1
265 endif
266
267 if skipped == 1
268 throw "Skipped: Test not implemented yet for this GUI"
269 elseif skipped == 2
270 throw "Skipped: Not supported by this GUI"
271 elseif skipped == 3
272 throw "Skipped: Test not supported by the environment"
273 endif
274 endfunc
275
134 func Test_getwinpos() 276 func Test_getwinpos()
135 call assert_match('Window position: X \d\+, Y \d\+', execute('winpos')) 277 call assert_match('Window position: X \d\+, Y \d\+', execute('winpos'))
136 call assert_true(getwinposx() >= 0) 278 call assert_true(getwinposx() >= 0)
137 call assert_true(getwinposy() >= 0) 279 call assert_true(getwinposy() >= 0)
138 endfunc 280 endfunc