summaryrefslogtreecommitdiff
path: root/tests
blob: 8e5d20b51fbc5f6e0efd97d70ace67de4b6613a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/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 basic1 'parse_string\nformat' ''
run basic2 'parse_string null\nformat' 'null'
run basic3 'parse_string true\nformat' 'true'
run basic4 'parse_string false\nformat' 'false'
run num1 'parse_string 12\nformat' '12'
run str1 'parse_string "hello"\nformat' '"hello"'
run arr1 'parse_string []\nformat' '[]'
run arr2 'parse_string [null]\nformat' '[null]'
run arr3 'parse_string [true,false]\nformat' '[true,false]'
run obj1 'parse_string {}\nformat' '{}'