git » jacl.git » commit 0b7bdd0

A nice deftest macro

author Alan Dipert
2020-02-24 16:04:03 UTC
committer Alan Dipert
2020-02-24 16:04:03 UTC
parent 82d98c45c83e6b2d2981bc153c3446149d2a60e3

A nice deftest macro

index.html +1 -0
jacl-tests.lisp +23 -37

diff --git a/index.html b/index.html
index 0fd7ee5..308d40e 100644
--- a/index.html
+++ b/index.html
@@ -19,6 +19,7 @@
     <script src="qunit-2.9.2.js"></script>
     <script type="text/javascript">
       QUnit.config.autostart = false;
+      QUnit.config.testTimeout = 100;
     </script>
   </head>
   <body>
diff --git a/jacl-tests.lisp b/jacl-tests.lisp
index 8c6994c..4b71d76 100644
--- a/jacl-tests.lisp
+++ b/jacl-tests.lisp
@@ -3,47 +3,33 @@
 (let* ((jpkg (jacl:\. (jacl:%js "Package") (|get| @"JACL"))))
   (jacl:\. *package* (|usePackage| jpkg)))
 
-(\. @|QUnit.config.testTimeout| (= 100))
-(\. @|QUnit.config.autoStart| (= js:+false+))
-
 (defun read1 (s)
   (\. (%new @|Reader| (%new @|StringStream| s)) (|read|)))
 
 (\. @|QUnit| (|module| @"Reader"))
 
-(defmacro deftest (name is &rest body)
-  `(\. @|QUnit| (|test|
-                 (\. ,name (|toString|))
-                 (lambda (,is)
-                   (declare (async))
-                   ,@body))))
-
-(deftest @"Integers" is
-  (\. is (|strictEqual| @@(read1 @"123 ") 123 @"single integer"))
-  (\. is (|strictEqual| @@(read1 @"+9912 ") 9912 @"integer with leading +"))
-  (\. is (|strictEqual| @@(read1 @"0 ") 0 @"zero"))
-  (\. is (|strictEqual| @@(read1 @"-32 ") -32 @"negative number"))
-  (\. is (|strictEqual| @@(read1 @"1. ") 1. @"number with trailing dot")))
-
-(deftest @"Symbols" is
-  (let ((sym @@(read1 @"somesym ")))
-    (\. is (|strictEqual| (\. sym |name|) @"SOMESYM" @"simple symbol name"))
-    ))
+(defvar *is*)
+
+(defmacro deftest (label &rest body)
+  (let ((is (gensym)))
+    `(\. @|QUnit| (|test| (\. ,label (|toString|))
+                   (lambda (,is)
+                     (declare (async))
+                     (let ((*is* ,is))
+                       ,@body))))))
+
+(defun assert= (x y label)
+  (\. *is* (|strictEqual| x y (\. label (|toString|)))))
+
+(deftest "Integers"
+  (assert= (await (read1 @"123 "))   123  "single integer")
+  (assert= (await (read1 @"+9912 ")) 9912 "integer with leading +")
+  (assert= (await (read1 @"0 "))     0    "zero")
+  (assert= (await (read1 @"-32 "))   -32  "negative number")
+  (assert= (await (read1 @"1. "))    1.   "number with trailing dot"))
+
+(deftest "Symbols"
+  (let ((sym (await (read1 @"somesym "))))
+    (assert= (\. sym |name|) @"SOMESYM" "simple symbol name")))
 
 (\. @|QUnit| (|start|))
-              
-
-
-
-;;(jacl:\. *package*
-;;         (|usePackage| (jacl:\. (jacl:%js "Package") (|get| ))))
-;;(let* ((x 1)
-;;       (y (1+ x)))
-;;  (jacl:\. (jacl:%js "console") (|log| x y)))
-;;(let* ((pkg (jacl:%js "Package"))
-;;       (jacl-pkg (jacl:\. pkg (|get| "JACL"))))
-;;  (jacl:\. (jacl:%js "console") (|log| jacl-pkg))
-;;  (jacl:\. *package* (|usePackage| jacl-pkg))
-;;  )
-;;
-;;(\. (%js "console") (|log| *package*))