post-scarcity/unit-tests/memberp.sh

107 lines
2.2 KiB
Bash

#!/bin/bash
result=0
expected='t'
output=`target/psse <<EOF
(progn
(set! nil? (lambda (o) (= (type o) "NIL ")))
(set! member?
(lambda
(item collection)
(cond
((nil? collection) nil)
((= item (car collection)) t)
(t (member? item (cdr collection))))))
(member? 1 '(1 2 3 4)))
EOF`
actual=`echo $output | tail -1`
echo -n "$?: (member? 1 '(1 2 3 4))... "
if [ "${expected}" = "${actual}" ]
then
echo "OK"
else
echo "Fail: expected '${expected}', got '${actual}'"
result=`echo "${result} + 1" | bc`
fi
expected='t'
output=`target/psse <<EOF
(progn
(set! nil? (lambda (o) (= (type o) "NIL ")))
(set! member?
(lambda
(item collection)
(cond
((nil? collection) nil)
((= item (car collection)) t)
(t (member? item (cdr collection))))))
(member? 4 '(1 2 3 4)))
EOF`
actual=`echo $output | tail -1`
echo -n "$?: (member? 4 '(1 2 3 4))... "
if [ "${expected}" = "${actual}" ]
then
echo "OK"
else
echo "Fail: expected '${expected}', got '${actual}'"
result=`echo "${result} + 1" | bc`
fi
expected='nil'
output=`target/psse <<EOF
(progn
(set! nil? (lambda (o) (= (type o) "NIL ")))
(set! member?
(lambda
(item collection)
(cond
((nil? collection) nil)
((= item (car collection)) t)
(t (member? item (cdr collection))))))
(member? 5 '(1 2 3 4)))
EOF`
actual=`echo $output | tail -1`
echo -n "$?: (member? 5 '(1 2 3 4))... "
if [ "${expected}" = "${actual}" ]
then
echo "OK"
else
echo "Fail: expected '${expected}', got '${actual}'"
result=`echo "${result} + 1" | bc`
fi
expected='nil'
output=`target/psse -s100<<EOF
(progn
(set! nil? (lambda (o) (= (type o) "NIL ")))
(set! member?
(lambda
(item collection)
(print (list "in member?: " 'item item 'collection collection))
(cond
((nil? collection) nil)
((= item (car collection)) t)
(t (member? item (cdr collection))))))
(member? 5 '(1 2 3 4)))
EOF`
actual=`echo $output | tail -1`
echo -n "$?: (member? 5 '(1 2 3 4)) with stack limit... "
if [ "${expected}" = "${actual}" ]
then
echo "OK"
else
echo "Fail: expected '${expected}', got '${actual}'"
result=`echo "${result} + 1" | bc`
fi
exit $result