summaryrefslogtreecommitdiff
path: root/tests
blob: e416f3f34fe08765f25f2ed8964fb82d59f66efd (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 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' '{}'