emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/parseclj a83816010e 039/185: Refactor clj-parse-test.


From: ELPA Syncer
Subject: [nongnu] elpa/parseclj a83816010e 039/185: Refactor clj-parse-test.
Date: Tue, 28 Dec 2021 14:05:12 -0500 (EST)

branch: elpa/parseclj
commit a83816010e628d805c4c25d7a2a2c7a6d394394c
Author: Daniel Barreto <dbarreto@talpor.com>
Commit: Daniel Barreto <dbarreto@talpor.com>

    Refactor clj-parse-test.
    
    All tests are separated now.
---
 clj-parse-test.el | 253 ++++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 178 insertions(+), 75 deletions(-)

diff --git a/clj-parse-test.el b/clj-parse-test.el
index 90e385fad7..9fd41ab9a2 100644
--- a/clj-parse-test.el
+++ b/clj-parse-test.el
@@ -25,81 +25,184 @@
 (require 'clj-parse)
 (require 'ert)
 
-(ert-deftest clj-parse-test ()
-  (with-temp-buffer
-    (insert "(1 2 3)")
-    (goto-char 1)
-    (should (equal (clj-parse) '((1 2 3)))))
-
-  (with-temp-buffer
-    (insert "()")
-    (goto-char 1)
-    (should (equal (clj-parse) '(()))))
-
-  (with-temp-buffer
-    (insert "(1)")
-    (goto-char 1)
-    (should (equal (clj-parse) '((1)))))
-
-  (with-temp-buffer
-    (insert "(nil true false hello-world)")
-    (goto-char 1)
-    (should (equal (clj-parse) '((nil t nil hello-world)))))
-
-  (with-temp-buffer
-    (insert "clojure.string/join")
-    (goto-char 1)
-    (should (equal (clj-parse) '(clojure.string/join))))
-
-  (with-temp-buffer
-    (insert "((.9 abc (true) (hello)))")
-    (goto-char 1)
-    (should (equal (clj-parse) '(((0.9 abc (t) (hello)))))))
-
-  (with-temp-buffer
-    (insert "\"abc hello \\t\\\"x\"")
-    (goto-char 1)
-    (should (equal (clj-parse) '("abc hello \t\"x"))))
-
-  (with-temp-buffer
-    (insert "(\"---\\f---\\\"-'\\'-\\\\-\\r\\n\")")
-    (goto-char 1)
-    (should (equal (clj-parse) '(("---\f---\"-''-\\-\r\n")))))
-
-  (with-temp-buffer
-    (insert "(\\newline \\return \\space \\tab \\a \\b \\c \\u0078 \\o171)")
-    (goto-char 1)
-    (should (equal (clj-parse) '((?\n ?\r ?\ ?\t ?a ?b ?c ?x ?y)))))
-
-  (with-temp-buffer
-    (insert "\"\\u0078 \\o171\"")
-    (goto-char 1)
-    (should (equal (clj-parse) '("x y"))))
-
-  (with-temp-buffer
-    (insert ":foo-bar")
-    (goto-char 1)
-    (should (equal (clj-parse) '(:foo-bar))))
-
-  (with-temp-buffer
-    (insert "[123]")
-    (goto-char 1)
-    (should (equal (clj-parse) '([123]))))
-
-  (with-temp-buffer
-    (insert "{:count 123}")
-    (goto-char 1)
-    (should (equal (clj-parse) '(((:count . 123))))))
-
-  (with-temp-buffer
-    (insert "#{:x}")
-    (goto-char 1)
-    (should (equal (clj-parse) '((:x)))))
-
-  (with-temp-buffer
-    (insert "(10 #_11 12 #_#_ 13 14)")
-    (goto-char 1)
-    (should (equal (clj-parse) '((10 12))))))
+(defmacro clj-parse-deftest (name parse-to-fn test-string expected)
+  (declare (indent defun))
+  `(ert-deftest ,name ()
+     (with-temp-buffer
+       (insert ,test-string)
+       (goto-char 1)
+       (should (equal (,parse-to-fn) ,expected)))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; To Elisp code, ala edn.el
+
+(clj-parse-deftest clj-parse-to-elisp-simple-list
+  clj-parse-to-elisp
+  "(1 2 3)"
+  '((1 2 3)))
+
+(clj-parse-deftest clj-parse-to-elisp-empty-list
+  clj-parse-to-elisp
+  "()"
+  '(()))
+
+(clj-parse-deftest clj-parse-to-elisp-list-size-1
+  clj-parse-to-elisp
+  "(1)"
+  '((1)))
+
+(clj-parse-deftest clj-parse-to-elisp-leafs
+  clj-parse-to-elisp
+  "(nil true false hello-world)"
+  '((nil t nil hello-world)))
+
+(clj-parse-deftest clj-parse-to-elisp-qualified-symbol
+  clj-parse-to-elisp
+  "clojure.string/join"
+  '(clojure.string/join))
+
+(clj-parse-deftest clj-parse-to-elisp-nested-lists
+  clj-parse-to-elisp
+  "((.9 abc (true) (hello)))"
+  '(((0.9 abc (t) (hello)))))
+
+(clj-parse-deftest clj-parse-to-elisp-strings-1
+  clj-parse-to-elisp
+  "\"abc hello \\t\\\"x\""
+  '("abc hello \t\"x"))
+
+(clj-parse-deftest clj-parse-to-elisp-strings-2
+  clj-parse-to-elisp
+  "(\"---\\f---\\\"-'\\'-\\\\-\\r\\n\")"
+  '(("---\f---\"-''-\\-\r\n")))
+
+(clj-parse-deftest clj-parse-to-elisp-chars-1
+  clj-parse-to-elisp
+  "(\\newline \\return \\space \\tab \\a \\b \\c \\u0078 \\o171)"
+  '((?\n ?\r ?\ ?\t ?a ?b ?c ?x ?y)))
+
+(clj-parse-deftest clj-parse-to-elisp-chars-2
+  clj-parse-to-elisp
+  "\"\\u0078 \\o171\""
+  '("x y"))
+
+(clj-parse-deftest clj-parse-to-elisp-keywords
+  clj-parse-to-elisp
+  ":foo-bar"
+  '(:foo-bar))
+
+(clj-parse-deftest clj-parse-to-elisp-vector
+  clj-parse-to-elisp
+  "[123]"
+  '([123]))
+
+(clj-parse-deftest clj-parse-to-elisp-map
+  clj-parse-to-elisp
+  "{:count 123}"
+  '(((:count . 123))))
+
+(clj-parse-deftest clj-parse-to-elisp-set
+  clj-parse-to-elisp
+  "#{:x}"
+  '((:x)))
+
+(clj-parse-deftest clj-parse-to-elisp-discarded
+  clj-parse-to-elisp
+  "(10 #_11 12 #_#_ 13 14)"
+  '((10 12 14)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; To Clojure/EDN string
+
+(clj-parse-deftest clj-parse-to-string-simple-list
+  clj-parse-to-string
+  "(   1 2   3)"
+  "(1 2 3)")
+
+(clj-parse-deftest clj-parse-to-string-empty-list
+  clj-parse-to-string
+  "()"
+  "()")
+
+(clj-parse-deftest clj-parse-to-string-list-size-1
+  clj-parse-to-string
+  "(1)"
+  "(1)")
+
+(clj-parse-deftest clj-parse-to-string-leafs
+  clj-parse-to-string
+  "(nil true false hello-world)"
+  "(nil true false hello-world)")
+
+(clj-parse-deftest clj-parse-to-string-qualified-symbol
+  clj-parse-to-string
+  "clojure.string/join"
+  "clojure.string/join")
+
+(clj-parse-deftest clj-parse-to-string-nested-lists
+  clj-parse-to-string
+  "((.9 abc (true) (hello)))"
+  "((.9 abc (true) (hello)))")
+
+(clj-parse-deftest clj-parse-to-string-strings-1
+  clj-parse-to-string
+  "\"abc hello \\t\\\"x\""
+  "\"abc hello \\t\\\"x\"")
+
+(clj-parse-deftest clj-parse-to-string-strings-2
+  clj-parse-to-string
+  "(\"---\\f---\\\"-'\\'-\\\\-\\r\\n\")"
+  "(\"---\\f---\\\"-'\\'-\\\\-\\r\\n\")")
+
+(clj-parse-deftest clj-parse-to-string-chars-1
+  clj-parse-to-string
+  "(\\newline \\return \\space \\tab \\a \\b \\c \\u0078 \\o171)"
+  "(\\newline \\return \\space \\tab \\a \\b \\c \\u0078 \\o171)")
+
+(clj-parse-deftest clj-parse-to-string-chars-2
+  clj-parse-to-string
+  "\"\\u0078 \\o171\""
+  "\"\\u0078 \\o171\"")
+
+(clj-parse-deftest clj-parse-to-string-keywords
+  clj-parse-to-string
+  ":foo-bar"
+  ":foo-bar")
+
+(clj-parse-deftest clj-parse-to-string-vector
+  clj-parse-to-string
+  "[123]"
+  "[123]")
+
+(clj-parse-deftest clj-parse-to-string-map
+  clj-parse-to-string
+  "{:count 123}"
+  "{:count 123}")
+
+(clj-parse-deftest clj-parse-to-string-set
+  clj-parse-to-string
+  "#{:x}"
+  "#{:x}")
+
+(clj-parse-deftest clj-parse-to-string-discarded
+  clj-parse-to-string
+  "(10 #_11 12 #_#_ 13 14)"
+  "(10 12 14)")
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; AST
+
+(clj-parse-deftest clj-parse-ast-simple-list
+  clj-parse
+  "(1 2 3)"
+  '((type . :root)
+    (subnodes . (((type . :list)
+                  (subnodes . (((type . :number) (form . "1") (pos . 2))
+                               ((type . :number) (form . "2") (pos . 4))
+                               ((type . :number) (form . "3") (pos . 6)))))))))
 
 (provide 'clj-parse-test)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]