#!/bin/sh # Test suite for mp. run() { [ "$filter" ] && case $1 in ($filter) ;; (*) return; esac out=$(echo "$2" | ./mp 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 'parse_string\nformat' '' run basic_2 'parse_string null\nformat' 'null' run basic_3 'parse_string true\nformat' 'true' run basic_4 'parse_string false\nformat' 'false' run number_1 'parse_string 12\nformat' '12' run string_1 'parse_string "hello"\nformat' '"hello"' run array_1 'parse_string []\nformat' '[]' run array_2 'parse_string [null]\nformat' '[null]' run array_3 'parse_string [true,false]\nformat' '[true,false]' run object_1 'parse_string {}\nformat' '{}'