You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
720 B
25 lines
720 B
(require 'ert) |
|
|
|
(defun example-to-should (actual sym expected) |
|
(cond ((eq sym '=>) |
|
`(should (equal ,actual ,expected))) |
|
((eq sym '~>) |
|
`(should (approx-equal ,actual ,expected))) |
|
((eq sym '!!>) |
|
`(should-error (eval ',actual) :type ',expected)) |
|
(t |
|
(error "invalid test case: %S" `(,actual ,sym ,expected))))) |
|
|
|
|
|
(defmacro defexamples (cmd &rest examples) |
|
(let ((tests)) |
|
(while examples |
|
(push (example-to-should (pop examples) |
|
(pop examples) |
|
(pop examples)) |
|
tests)) |
|
`(ert-deftest ,cmd () ,@(nreverse tests)))) |
|
|
|
(defun def-example-group (&rest _)) ; ignore |
|
|
|
(provide 'examples-to-tests)
|
|
|