@@ -313,6 +313,119 @@ myReverse xs = revAcc [] xs where
313
313
(delete-directory mock-directory-name t )
314
314
(idris-quit))))
315
315
316
+ (ert-deftest idris-test-idris-make-lemma ()
317
+ " Test `idris-make-lemma' replacing a hole with a metavariable lemma."
318
+ (cl-flet ((idris-load-file-sync-stub () nil )
319
+ (idris-eval-stub (&optional &rest args)
320
+ '((:metavariable-lemma
321
+ (:replace-metavariable " closeDistance_rhs s1 s2" )
322
+ (:definition-type " closeDistance_rhs : String -> String -> IO Bool" )))))
323
+ (advice-add 'idris-load-file-sync :override #'idris-load-file-sync-stub )
324
+ (advice-add 'idris-eval :override #'idris-eval-stub )
325
+ (unwind-protect
326
+ (progn
327
+ (with-temp-buffer
328
+ (insert " closeDistance : String -> String -> IO Bool
329
+ closeDistance s1 s2 = ?closeDistance_rhs" )
330
+ (goto-char (point-min ))
331
+ (re-search-forward " closeDistance_rh" )
332
+ (funcall-interactively 'idris-make-lemma )
333
+ (should (string= " closeDistance_rhs : String -> String -> IO Bool
334
+
335
+ closeDistance : String -> String -> IO Bool
336
+ closeDistance s1 s2 = closeDistance_rhs s1 s2"
337
+ (buffer-substring-no-properties (point-min ) (point-max )))))
338
+
339
+ (with-temp-buffer
340
+ (insert " something_else
341
+
342
+ closeDistance : String -> String -> IO Bool
343
+ closeDistance s1 s2 = ?closeDistance_rhs" )
344
+ (goto-char (point-min ))
345
+ (re-search-forward " closeDistance_rh" )
346
+ (funcall-interactively 'idris-make-lemma )
347
+ (should (string= " something_else
348
+
349
+ closeDistance_rhs : String -> String -> IO Bool
350
+
351
+ closeDistance : String -> String -> IO Bool
352
+ closeDistance s1 s2 = closeDistance_rhs s1 s2"
353
+ (buffer-substring-no-properties (point-min ) (point-max )))))
354
+
355
+ (with-temp-buffer
356
+ (insert " something_else
357
+
358
+ closeDistance : String -> String -> IO Bool
359
+ closeDistance s1 s2 = ?closeDistance_rhs" )
360
+ (goto-char (point-min ))
361
+ (re-search-forward " closeDistance_rh" )
362
+ (funcall-interactively 'idris-make-lemma )
363
+ (should (string= " something_else
364
+
365
+ closeDistance_rhs : String -> String -> IO Bool
366
+
367
+ closeDistance : String -> String -> IO Bool
368
+ closeDistance s1 s2 = closeDistance_rhs s1 s2"
369
+ (buffer-substring-no-properties (point-min ) (point-max )))))
370
+
371
+ (with-temp-buffer
372
+ (insert " ||| Check if two strings are close enough to be similar,
373
+ ||| using the namespace distance criteria.
374
+ closeDistance : String -> String -> IO Bool
375
+ closeDistance s1 s2 = ?closeDistance_rhs" )
376
+ (goto-char (point-min ))
377
+ (re-search-forward " closeDistance_rh" )
378
+ (funcall-interactively 'idris-make-lemma )
379
+ (should (string= " closeDistance_rhs : String -> String -> IO Bool
380
+
381
+ ||| Check if two strings are close enough to be similar,
382
+ ||| using the namespace distance criteria.
383
+ closeDistance : String -> String -> IO Bool
384
+ closeDistance s1 s2 = closeDistance_rhs s1 s2"
385
+ (buffer-substring-no-properties (point-min ) (point-max )))))
386
+
387
+ (with-temp-buffer
388
+ (insert " something_else
389
+
390
+ ||| Check if two strings are close enough to be similar,
391
+ ||| using the namespace distance criteria.
392
+ closeDistance : String -> String -> IO Bool
393
+ closeDistance s1 s2 = ?closeDistance_rhs" )
394
+ (goto-char (point-min ))
395
+ (re-search-forward " closeDistance_rh" )
396
+ (funcall-interactively 'idris-make-lemma )
397
+ ; ; (message "%s" (buffer-substring-no-properties (point-min) (point-max)))
398
+ (should (string= " something_else
399
+
400
+ closeDistance_rhs : String -> String -> IO Bool
401
+
402
+ ||| Check if two strings are close enough to be similar,
403
+ ||| using the namespace distance criteria.
404
+ closeDistance : String -> String -> IO Bool
405
+ closeDistance s1 s2 = closeDistance_rhs s1 s2"
406
+ (buffer-substring-no-properties (point-min ) (point-max )))))
407
+
408
+ (with-temp-buffer
409
+ (insert " something else
410
+
411
+ -- some inline comment
412
+ closeDistance : String -> String -> IO Bool
413
+ closeDistance s1 s2 = ?closeDistance_rhs" )
414
+ (goto-char (point-min ))
415
+ (re-search-forward " closeDistance_rh" )
416
+ (funcall-interactively 'idris-make-lemma )
417
+ (should (string= " something else
418
+
419
+ closeDistance_rhs : String -> String -> IO Bool
420
+
421
+ -- some inline comment
422
+ closeDistance : String -> String -> IO Bool
423
+ closeDistance s1 s2 = closeDistance_rhs s1 s2"
424
+ (buffer-substring-no-properties (point-min ) (point-max ))))))
425
+
426
+ (advice-remove 'idris-load-file-sync #'idris-load-file-sync-stub )
427
+ (advice-remove 'idris-eval #'idris-eval-stub ))))
428
+
316
429
; ; Tests by Yasuhiko Watanabe
317
430
; ; https://github.com/idris-hackers/idris-mode/pull/537/files
318
431
(idris-ert-command-action " test-data/CaseSplit.idr" idris-case-split idris-test-eq-buffer)
0 commit comments