Meikel  Brandmeyer avatar Meikel Brandmeyer committed 3498bba

Added is?

Comments (0)

Files changed (2)

+#! /bin/sh
+#-
+# Copyright 2008 (c) Meikel Brandmeyer.
+# All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+in="$0.in"
+out="$0.out"
+exp="$0.exp"
+
+counter=1
+
+print_result() {
+	if [ $1 -ne 0 ]; then
+		printf "not "
+	fi
+	printf "ok %d - %s\n" $counter $2
+	counter=`expr $counter + 1`
+}
+
+try() {
+	cat >$in <<EOF
+(load-file "tap.clj")
+(clojure/refer 'tap)
+$1
+EOF
+
+	cat >$exp <<EOF
+$2
+EOF
+
+	java clojure.lang.Script $in >$out
+	cmp -s $exp $out
+	print_result $? $3
+}
+
+cleanup() {
+	rm -f $in $out $exp
+}
+
+trap cleanup 2 3 5 6 9 15
+
+echo 1..4
+
+try "(is? (- 1 1) 0)" "ok 1" "true w/o description"
+try "(is? (+ 1 1) 0)" "not ok 1
+# Expected: (+ 1 1)
+# to be:    0
+# but was:  2" "false w/o description"
+try "(is? (- 1 1) 0 \"success\")" "ok 1 - success" "true w/ description"
+try "(is? (+ 1 1) 0 \"failure\")" "not ok 1 - failure
+# Expected: (+ 1 1)
+# to be:    0
+# but was:  2" "false w/ description"
+
+
+cleanup
+
+# vim:ft=sh:
     (print " - ")
     (print (first desc)))
   (newline))
+
+(defmacro is? [actual exp & desc]
+  (let [tmp_e (gensym "is__")
+        tmp_a (gensym "is__")
+        tmp_r (gensym "is__")
+        tmp_es (gensym "is__")
+        tmp_as (gensym "is__")
+        tmp_rs (gensym "is__")]
+    `(let [~tmp_e ~exp
+           ~tmp_a ~actual
+           ~tmp_r (= ~tmp_e ~tmp_a)]
+       (if (nil? ~(first desc))
+         (ok? ~tmp_r)
+         (ok? ~tmp_r ~(first desc)))
+       (when-not ~tmp_r
+         (let [~tmp_es (print-str ~tmp_e)
+               ~tmp_as (print-str (quote ~actual))
+               ~tmp_rs (print-str ~tmp_a)]
+           (diag (.concat "Expected: " ~tmp_as))
+           (diag (.concat "to be:    " ~tmp_es))
+           (diag (.concat "but was:  " ~tmp_rs)))))))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.