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

(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)