Skip to content

Commit 10a4952

Browse files
committed
Add tests for haskell-completions-grab-prefix function
1 parent a5ac0b4 commit 10a4952

File tree

1 file changed

+96
-23
lines changed

1 file changed

+96
-23
lines changed

tests/haskell-completions-tests.el

Lines changed: 96 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -98,31 +98,39 @@ within empty pragma comment {-# #-} and outside of it."
9898
(should (eql nil (haskell-completions-grab-pragma-prefix)))))
9999

100100
(ert-deftest haskell-completions-grab-pragma-name-prefix-test ()
101-
"Tests the function `haskell-completions-grab-pragma-prefix'
102-
for pragma names completions such as WARNING, LANGUAGE,
103-
DEPRECATED and etc."
101+
"Tests both `haskell-completions-grab-pragma-prefix' and
102+
`haskell-completions-grab-prefix' functions for pragma names
103+
completions such as WARNING, LANGUAGE, DEPRECATED and etc."
104104
(let ((expected (list 5 8 "LAN" 'haskell-completions-pragma-name-prefix)))
105105
(with-temp-buffer
106106
(haskell-mode)
107107
(goto-char (point-min))
108108
(insert "{-# LAN")
109109
(should (equal expected (haskell-completions-grab-pragma-prefix)))
110+
;; minimal prefix length
111+
(should (equal expected (haskell-completions-grab-prefix 3)))
112+
(should (eql nil (haskell-completions-grab-prefix 4)))
110113
(save-excursion (insert " #-}"))
111114
;; should work in case of closed comment, e.g. {-# LAN| #-}
112115
(should (equal expected (haskell-completions-grab-pragma-prefix)))
116+
(should (equal expected (haskell-completions-grab-prefix)))
113117
;; pragma function should work in the middle of word
114118
(backward-char)
115-
(should (not (equal expected (haskell-completions-grab-pragma-prefix)))))
119+
(should (not (equal expected (haskell-completions-grab-pragma-prefix))))
120+
;; but general function should not
121+
(should (eql nil (haskell-completions-grab-prefix))))
116122
(with-temp-buffer
117123
(haskell-mode)
118124
(goto-char (point-min))
119125
(insert "{-#\nLAN")
120126
;; should work for multiline case
121-
(should (equal expected (haskell-completions-grab-pragma-prefix))))))
127+
(should (equal expected (haskell-completions-grab-pragma-prefix)))
128+
(should (equal expected (haskell-completions-grab-prefix))))))
122129

123130
(ert-deftest haskell-completions-grab-ghc-options-prefix-test-01 ()
124-
"Tests the function `haskell-completions-grab-pragma-prefix'
125-
for GHC options prefixes."
131+
"Tests both `haskell-completions-grab-pragma-prefix' and
132+
`haskell-completions-grab-prefix' functions for GHC options
133+
prefixes."
126134
(let (expected)
127135
(with-temp-buffer
128136
(haskell-mode)
@@ -131,14 +139,17 @@ for GHC options prefixes."
131139
(list 5 16 "OPTIONS_GHC" 'haskell-completions-pragma-name-prefix))
132140
(insert "{-# OPTIONS_GHC")
133141
(should (equal expected (haskell-completions-grab-pragma-prefix)))
142+
(should (equal expected (haskell-completions-grab-prefix)))
134143
(insert " --opt1")
135144
(setq expected
136145
(list 17 23 "--opt1" 'haskell-completions-ghc-option-prefix))
137146
(should (equal expected (haskell-completions-grab-pragma-prefix)))
147+
(should (equal expected (haskell-completions-grab-prefix)))
138148
(insert " -XOpt-2")
139149
(setq expected
140150
(list 27 34 "-XOpt-2" 'haskell-completions-ghc-option-prefix))
141151
(should (equal expected (haskell-completions-grab-pragma-prefix)))
152+
(should (equal expected (haskell-completions-grab-prefix)))
142153
(save-excursion
143154
(insert "\n")
144155
(insert "\"new-line\"")
@@ -147,21 +158,32 @@ for GHC options prefixes."
147158
expected
148159
(list 35 45 "\"new-line\"" 'haskell-completions-ghc-option-prefix))
149160
(should (equal expected (haskell-completions-grab-pragma-prefix)))
150-
(insert " test ")
161+
(should (equal expected (haskell-completions-grab-prefix)))
162+
(insert " test")
163+
(setq expected
164+
(list 46 50 "test" 'haskell-completions-ghc-option-prefix))
165+
;; minimal prefix length
166+
(should (equal expected (haskell-completions-grab-prefix 4)))
167+
(should (eql nil (haskell-completions-grab-prefix 5)))
168+
(insert " ")
151169
(should (eql nil (haskell-completions-grab-pragma-prefix)))
170+
(should (eql nil (haskell-completions-grab-prefix)))
152171
(insert "#-}"))
153172
;; should work in case of closed comment, e.g. {-# OPTIONS_GHC xyz| #-}
154173
(setq expected
155174
(list 27 34 "-XOpt-2" 'haskell-completions-ghc-option-prefix))
156175
(should (equal expected (haskell-completions-grab-pragma-prefix)))
176+
(should (equal expected (haskell-completions-grab-prefix)))
157177
(backward-char)
158178
;; pragma function should work in the middle of word
159-
(should (not (eql nil (haskell-completions-grab-pragma-prefix)))))))
179+
(should (not (eql nil (haskell-completions-grab-pragma-prefix))))
180+
;; but general function should not
181+
(should (eql nil (haskell-completions-grab-prefix))))))
160182

161183
(ert-deftest haskell-completions-grab-ghc-options-prefix-test-02 ()
162-
"Tests the function `haskell-completions-grab-pragma-prefix'
163-
for GHC options prefixes. Same tests as above for obsolete
164-
OPTIONS pragma."
184+
"Tests both `haskell-completions-grab-pragma-prefix' and
185+
`haskell-completions-grab-prefix' functions for GHC options prefixes. Same
186+
tests as above for obsolete OPTIONS pragma."
165187
(let (expected)
166188
(with-temp-buffer
167189
(haskell-mode)
@@ -170,14 +192,17 @@ OPTIONS pragma."
170192
(setq expected
171193
(list 5 12 "OPTIONS" 'haskell-completions-pragma-name-prefix))
172194
(should (equal expected (haskell-completions-grab-pragma-prefix)))
195+
(should (equal expected (haskell-completions-grab-prefix)))
173196
(insert " --opt1")
174197
(setq expected
175198
(list 13 19 "--opt1" 'haskell-completions-ghc-option-prefix))
176199
(should (equal expected (haskell-completions-grab-pragma-prefix)))
200+
(should (equal expected (haskell-completions-grab-prefix)))
177201
(insert " -XOpt-2")
178202
(setq expected
179203
(list 23 30 "-XOpt-2" 'haskell-completions-ghc-option-prefix))
180204
(should (equal expected (haskell-completions-grab-pragma-prefix)))
205+
(should (equal expected (haskell-completions-grab-prefix)))
181206
(save-excursion
182207
(insert "\n")
183208
(insert "\"new-line\"")
@@ -186,20 +211,31 @@ OPTIONS pragma."
186211
expected
187212
(list 31 41 "\"new-line\"" 'haskell-completions-ghc-option-prefix))
188213
(should (equal expected (haskell-completions-grab-pragma-prefix)))
189-
(insert " test ")
214+
(should (equal expected (haskell-completions-grab-prefix)))
215+
(insert " test")
216+
;; minimal prefix length
217+
(setq expected
218+
(list 42 46 "test" 'haskell-completions-ghc-option-prefix))
219+
(should (equal expected (haskell-completions-grab-prefix 4)))
220+
(should (eql nil (haskell-completions-grab-prefix 5)))
221+
(insert " ")
190222
(should (eql nil (haskell-completions-grab-pragma-prefix)))
223+
(should (eql nil (haskell-completions-grab-prefix)))
191224
(insert "#-}"))
192225
;; should work in case of closed comment
193226
(setq expected
194227
(list 23 30 "-XOpt-2" 'haskell-completions-ghc-option-prefix))
195228
(should (equal expected (haskell-completions-grab-pragma-prefix)))
229+
(should (equal expected (haskell-completions-grab-prefix)))
196230
(backward-char)
197231
;; pragma function should work in the middle of word
198-
(should (not (eql nil (haskell-completions-grab-pragma-prefix)))))))
232+
(should (not (eql nil (haskell-completions-grab-pragma-prefix))))
233+
;; but general function should not
234+
(should (eql nil (haskell-completions-grab-prefix))))))
199235

200236
(ert-deftest haskell-completions-grab-language-extenstion-prefix-test ()
201-
"Tests both function `haskell-completions-grab-pragma-prefix'
202-
and function `haskell-completions-grab-prefix' for language
237+
"Tests both `haskell-completions-grab-pragma-prefix' and
238+
`haskell-completions-grab-prefix' functions for language
203239
extension prefixes."
204240
(let (expected)
205241
(with-temp-buffer
@@ -209,15 +245,18 @@ extension prefixes."
209245
(setq expected
210246
(list 5 13 "LANGUAGE" 'haskell-completions-pragma-name-prefix))
211247
(should (equal expected (haskell-completions-grab-pragma-prefix)))
248+
(should (equal expected (haskell-completions-grab-prefix)))
212249
(insert " Rec")
213250
(setq expected
214251
(list 14 17 "Rec" 'haskell-completions-language-extension-prefix))
215252
(should (equal expected (haskell-completions-grab-pragma-prefix)))
253+
(should (equal expected (haskell-completions-grab-prefix)))
216254
(insert ", -XOpt-2")
217255
(setq
218256
expected
219257
(list 22 29 "-XOpt-2" 'haskell-completions-language-extension-prefix))
220258
(should (equal expected (haskell-completions-grab-pragma-prefix)))
259+
(should (equal expected (haskell-completions-grab-prefix)))
221260
(insert ",\n")
222261
(insert "\"new-line\"")
223262
;; should handle multiline case
@@ -227,96 +266,130 @@ extension prefixes."
227266
"\"new-line\""
228267
'haskell-completions-language-extension-prefix))
229268
(should (equal expected (haskell-completions-grab-pragma-prefix)))
269+
(should (equal expected (haskell-completions-grab-prefix)))
230270
(insert " -test")
271+
;; minimal prefix length
272+
(setq expected
273+
(list 42 47 "-test" 'haskell-completions-language-extension-prefix))
274+
(should (equal expected (haskell-completions-grab-prefix 5)))
275+
(should (eql nil (haskell-completions-grab-prefix 6)))
231276
(save-excursion (insert " #-}"))
232277
;; should work in case of closed comment
233278
(setq expected
234279
(list 42 47 "-test" 'haskell-completions-language-extension-prefix))
235280
(should (equal expected (haskell-completions-grab-pragma-prefix)))
281+
(should (equal expected (haskell-completions-grab-prefix)))
236282
(backward-char)
237283
;; pragma function should work in the middle of the word
238-
(should (not (eql nil (haskell-completions-grab-pragma-prefix)))))))
284+
(should (not (eql nil (haskell-completions-grab-pragma-prefix))))
285+
;; but general function does not
286+
(should (eql nil (haskell-completions-grab-prefix))))))
287+
288+
239289
(ert-deftest haskell-completions-grab-identifier-prefix-test ()
240-
"Tests the function
241-
`haskell-completions-grab-identifier-prefix' for arbitrary
242-
haskell identifiers and module identifiers."
290+
"Tests both `haskell-completions-grab-identifier-prefix' and
291+
`haskell-completions-grab-prefix' functions for arbitrary haskell
292+
identifiers and module identifiers."
243293
(let (expected)
244294
(with-temp-buffer
245295
(haskell-mode)
246296
(should (eql nil (haskell-completions-grab-identifier-prefix)))
297+
(should (eql nil (haskell-completions-grab-prefix)))
247298
(insert "import")
248299
(setq expected (list 1 7 "import" 'haskell-completions-identifier-prefix))
249300
(should (equal expected (haskell-completions-grab-identifier-prefix)))
301+
(should (equal expected (haskell-completions-grab-prefix)))
250302
(insert " Da")
251303
(setq expected (list 8 10 "Da" 'haskell-completions-module-name-prefix))
252304
(should (equal expected (haskell-completions-grab-identifier-prefix)))
305+
(should (equal expected (haskell-completions-grab-prefix)))
306+
;; minimal length test
307+
(should (equal expected (haskell-completions-grab-prefix 2)))
308+
(should (eql nil (haskell-completions-grab-prefix 3)))
253309
(insert "ta.")
254310
(setq expected
255311
(list 8 13 "Data." 'haskell-completions-module-name-prefix))
256312
(should (equal expected (haskell-completions-grab-identifier-prefix)))
313+
(should (equal expected (haskell-completions-grab-prefix)))
257314
(insert "Text (pack")
258315
(setq expected (list 19 23 "pack" 'haskell-completions-identifier-prefix))
259316
(should (equal expected (haskell-completions-grab-identifier-prefix)))
317+
(should (equal expected (haskell-completions-grab-prefix)))
260318
(insert ")")
261319
;; should work when point is at punctuation
262320
(backward-char)
263321
(should (equal expected (haskell-completions-grab-identifier-prefix)))
322+
(should (equal expected (haskell-completions-grab-prefix)))
264323
(forward-char)
265324
;; but should not work after punctuation
266325
(should (eql nil (haskell-completions-grab-identifier-prefix)))
326+
(should (eql nil (haskell-completions-grab-prefix)))
267327
(insert "\n")
268328
(insert "import qualified Data.Text as T")
269329
(insert "\n\n")
270330
;; should not work at the beginning of a line
271331
(should (eql nil (haskell-completions-grab-identifier-prefix)))
332+
(should (eql nil (haskell-completions-grab-prefix)))
272333
(insert "main")
273334
(setq expected (list 58 62 "main" 'haskell-completions-identifier-prefix))
274335
(should (equal expected (haskell-completions-grab-identifier-prefix)))
336+
(should (equal expected (haskell-completions-grab-prefix)))
275337
(insert " :: IO")
276338
(setq expected (list 66 68 "IO" 'haskell-completions-identifier-prefix))
277339
(should (equal expected (haskell-completions-grab-identifier-prefix)))
340+
(should (equal expected (haskell-completions-grab-prefix)))
278341
(insert " ()\n")
279342
(insert "main")
280343
(save-excursion
281344
(insert " = putStrLn")
282345
(setq expected
283346
(list 79 87 "putStrLn" 'haskell-completions-identifier-prefix))
284347
(should (equal expected (haskell-completions-grab-identifier-prefix)))
348+
(should (equal expected (haskell-completions-grab-prefix)))
285349
(insert " (T.")
286350
(setq expected (list 89 91 "T." 'haskell-completions-identifier-prefix))
287351
(should (equal expected (haskell-completions-grab-identifier-prefix)))
352+
(should (equal expected (haskell-completions-grab-prefix)))
288353
(insert "unpack")
289354
(setq expected
290355
(list 89 97 "T.unpack" 'haskell-completions-identifier-prefix))
291356
(should (equal expected (haskell-completions-grab-identifier-prefix)))
357+
(should (equal expected (haskell-completions-grab-prefix)))
292358
(insert " (T.pack (\"Hello")
293359
(setq expected
294360
(list 108 113 "Hello" 'haskell-completions-general-prefix))
295361
(should (equal expected (haskell-completions-grab-identifier-prefix)))
362+
(should (equal expected (haskell-completions-grab-prefix)))
296363
(insert " World!\" :: String")
297364
(setq expected
298365
(list 125 131 "String" 'haskell-completions-identifier-prefix))
299366
(should (equal expected (haskell-completions-grab-identifier-prefix)))
367+
(should (equal expected (haskell-completions-grab-prefix)))
300368
(insert " -- Comment")
301369
(setq expected
302370
(list 135 142 "Comment" 'haskell-completions-general-prefix))
303-
(should (equal expected (haskell-completions-grab-identifier-prefix))))
371+
(should (equal expected (haskell-completions-grab-identifier-prefix)))
372+
(should (equal expected (haskell-completions-grab-prefix))))
304373
;; test in the middle of line
305374
(setq expected (list 72 76 "main" 'haskell-completions-identifier-prefix))
306375
(should (equal expected (haskell-completions-grab-identifier-prefix)))
376+
(should (equal expected (haskell-completions-grab-prefix)))
307377
(backward-char)
308378
(setq expected (list 72 75 "mai" 'haskell-completions-identifier-prefix))
309-
(should (equal expected (haskell-completions-grab-identifier-prefix))))
379+
(should (equal expected (haskell-completions-grab-identifier-prefix)))
380+
(should (equal nil (haskell-completions-grab-prefix))))
310381
;; qualified imports and "as indentifier" tests
311382
(with-temp-buffer
312383
(haskell-mode)
313384
(insert "import qualified Data.Text")
314385
(setq expected
315386
(list 18 27 "Data.Text" 'haskell-completions-module-name-prefix))
316387
(should (equal expected (haskell-completions-grab-identifier-prefix)))
388+
(should (equal expected (haskell-completions-grab-prefix)))
317389
(insert " as T")
318390
(setq expected (list 31 32 "T" 'haskell-completions-identifier-prefix))
319-
(should (equal expected (haskell-completions-grab-identifier-prefix))))))
391+
(should (equal expected (haskell-completions-grab-identifier-prefix)))
392+
(should (equal expected (haskell-completions-grab-prefix))))))
320393

321394

322395
(provide 'haskell-completions-tests)

0 commit comments

Comments
 (0)