#!/bin/sh # Test suite for mp. # Usage: [FAILFAST=1] tests [pattern] # Example: tests "obj*" run() { [ "$filter" ] && case $1 in ($filter) ;; (*) return; esac out=$(./mp -v str=1 "$2" 2>&1) [ "$out" = "$3" ] && pass=$((pass + 1)) && return printf "%s FAIL\nWant: '%s'\n Got: '%s'\n" "$1" "$3" "$out" fail=$((fail + 1)) return 1 } [ "$FAILFAST" ] && set -e pass=0 fail=0 filter="$1" trap 'echo "$pass passed, $fail failed"; exit $((fail != 0))' EXIT run basic_1 '' '' run basic_2 'null' 'null' run basic_3 'true' 'true' run basic_4 'false' 'false' run number_1 '12' '12' run string_1 '"hello"' '"hello"' run string_2 '"hello \"world\""' '"hello \"world\""' run string_3 '""' '""' run array_1 '[]' '[]' run array_2 '[null]' '[null]' run array_3 '[true,false]' '[true,false]' run object_1 '{}' '{}' run object_2 '{"":false}' '{"":false}' run object_3 '{"":false,"1": true}' '{"":false,"1":true}' run object_4 '{ }' '{}' run object_5 '{ }' '{}' run object_6 '{"id": 1}' '{"id":1}'