-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscalai-test.el
30 lines (26 loc) · 1.13 KB
/
scalai-test.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(require 'scalai)
(require 'dash)
(require 'cl-macs)
(defun scalai--read-test-case-file (file-name)
(with-temp-buffer
(insert-file-contents file-name)
(let ((sep-case "//===================================================\n")
(sep-params "//==>\n")
(content (buffer-substring-no-properties (point-min) (point-max)))
(test-cases nil))
(->> (split-string content sep-case)
(-map (lambda (test-case)
(let ((params (split-string test-case sep-params)))
(list
:in (replace-regexp-in-string "\n$" "" (car params))
:out (replace-regexp-in-string "\n$" "" (cadr params))))))))))
(defun scalai-test (fn test-file-name)
(let ((test-cases (scalai--read-test-case-file test-file-name)))
(-each
test-cases
(lambda (coll)
(let ((in (plist-get coll :in))
(out (plist-get coll :out)))
(cl-assert (string= (funcall fn in) out) t))))))
(scalai-test #'scalai--args-to-sep-line "scalai-test-cases.scala")
(scalai-test #'scalai--concat-imports "scalai-imports-test-cases.scala")