diff --git a/unit-tests/map.sh b/unit-tests/map.sh new file mode 100755 index 0000000..f40c321 --- /dev/null +++ b/unit-tests/map.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +##################################################################### +# Create an empty map using map notation +expected='{}' +actual=`echo "$expected" | target/psse | tail -1` + +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi + +##################################################################### +# Create an empty map using make-map +expected='{}' +actual=`echo "(make-map)" | target/psse | tail -1` + +echo -n "Empty map using (make-map): " +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi + +##################################################################### +# Create a map using map notation: order of keys in output is not +# significant at this stage, but in the long term should be sorted +# alphanumerically +expected='{:two 2, :one 1, :three 3}' +actual=`echo "{:one 1 :two 2 :three 3}" | target/psse | tail -1` + +echo -n "Map using map notation: " +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi + +##################################################################### +# Create a map using make-map: order of keys in output is not +# significant at this stage, but in the long term should be sorted +# alphanumerically +expected='{:two 2, :one 1, :three 3}' +actual=`echo "(make-map '((:one . 1)(:two . 2)(:three . 3)))" | target/psse | tail -1` + +echo -n "Map using (make-map): " +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi + +##################################################################### +# Keyword in function position +expected='2' +actual=`echo "(:two {:one 1 :two 2 :three 3})" | target/psse | tail -1` + +echo -n "Keyword in function position: " +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi + + +##################################################################### +# Map in function position +expected='2' +actual=`echo "({:one 1 :two 2 :three 3} :two)" | target/psse | tail -1` + +echo -n "Map in function position: " +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi