("print" :target)
("read" :both)
("compiler" :both)
- ("toplevel" :target)))
+ ("toplevel" :target)
+ ;; Tests
+ ("tests" :test)
+ ("eval" :test)
+ ("tests-report" :test)))
(defun source-pathname
(filename &key (directory '(:relative "src")) (type nil) (defaults filename))
(write-string (read-whole-file (source-pathname "prelude.js")) out)
(dolist (input *source*)
(when (member (cadr input) '(:target :both))
- (ls-compile-file (source-pathname (car input) :type "lisp") out)))))
+ (ls-compile-file (source-pathname (car input) :type "lisp") out))))
+ ;; Tests
+ (with-open-file (out "tests.js" :direction :output :if-exists :supersede)
+ (dolist (input *source*)
+ (when (member (cadr input) '(:test))
+ (ls-compile-file (source-pathname (car input)
+ :directory '(:relative "tests")
+ :type "lisp")
+ out)))))
--- /dev/null
+<!doctype html>
+<html>
+ <head>
+ <style>
+ /* The console container element */
+ body { background-color: black; font-size: 16px; font-family: Courier; overflow: hidden; padding: 0 0 0 0;}
+ #console {
+ position: absolute;
+ top: 0px;
+ bottom: 0px;
+ left: 0px;
+ right: 0px;
+ background-color:black;
+ }
+
+ .parents {
+ font-weight: bold;
+ }
+
+ /* The inner console element. */
+ .jqconsole {
+ padding: 10px;
+ }
+ /* The cursor. */
+ .jqconsole-cursor {
+ background-color: gray;
+ }
+ /* The cursor color when the console looses focus. */
+ .jqconsole-blurred .jqconsole-cursor {
+ background-color: #666;
+ }
+ /* The current prompt text color */
+ .jqconsole-prompt {
+ color: White;
+ }
+ /* The command history */
+ .jqconsole-old-prompt {
+ color: White;
+ font-weight: normal;
+ }
+ /* The text color when in input mode. */
+ .jqconsole-input {
+ color: White;
+ }
+ /* Previously entered input. */
+ .jqconsole-old-input {
+ color: White;
+ font-weight: normal;
+ }
+ /* The text color of the output. */
+ .jqconsole-output {
+ color: green;
+ }
+ .jqconsole-return, .jqconsole-header {
+ color: gray;
+ }
+ .jqconsole-error {
+ color: red;
+ }
+</style>
+ </head>
+ <body>
+ <div id="console"></div>
+ <script src="jquery.js" type="text/javascript" charset="utf-8"></script>
+ <script src="jqconsole.min.js" type="text/javascript" charset="utf-8"></script>
+ <script src="jscl.js" type="text/javascript"></script>
+ <script>
+ var jqconsole = $('#console').jqconsole();
+ lisp.write = function(str){
+ jqconsole.Write(str, 'jqconsole-output', false);
+ return str;
+ };
+ </script>
+ <script src="tests.js" type="text/javascript"></script>
+ </body>
+</html>
--- /dev/null
+(test (= (eval '(+ 1 2)) 3))
--- /dev/null
+(write-line "")
+(write-string "Finished. The execution took ")
+(write-string (prin1-to-string (- (get-universal-time) *timestaup*)))
+(write-line " seconds.")
+
+(cond
+ ((zerop *failed-tets*)
+ (write-string "All tests (")
+ (write-string (prin1-to-string *passed-tets*))
+ (write-line ") passed successfully"))
+ (t
+ (write-string (prin1-to-string *failed-tets*))
+ (write-string "/")
+ (write-string (prin1-to-string (+ *passed-tets* *failed-tets*)))
+ (write-line " failed.")))
--- /dev/null
+(defvar *passed-tets* 0)
+(defvar *failed-tets* 0)
+(defvar *timestaup* (get-universal-time))
+
+(defmacro test (condition)
+ `(cond
+ (,condition
+ (write-line ,(concat "Test `" (prin1-to-string condition) "' passed"))
+ (incf *passed-tets*))
+ (t
+ (write-line ,(concat "Test `" (prin1-to-string condition) "' failed."))
+ (incf *failed-tets*))))
+
+(write-line "Running tests...")
+(write-line "")