Skip to content

Commit 4f821f5

Browse files
committed
tests of JSON.dump
1 parent 451aefe commit 4f821f5

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

test/dump.data

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/int 12345678
2+
/str "json"
3+
/x y z "spaces"
4+
/sub/a "struct"
5+
/sub/b 12345
6+
/sub/b 54321
7+
/sub/c 1.23
8+
/sub/d/e/f/g 54321
9+
/bool false
10+
/empty null
11+
/empty ""
12+
/array/0 "A"
13+
/array/1 "B"
14+
/array/2 "C"
15+
/array/3/0 "D"
16+
/array/3/1/0 "E"
17+
/array/3/1/1 "F"

test/dump.t

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env bash
2+
3+
source test/setup
4+
5+
use Test::More tests 21
6+
use JSON
7+
8+
dbg() {
9+
: diag "DBG: $1=${!1}"
10+
}
11+
12+
test_dump() {
13+
JSON.style "$1"
14+
ok $? "JSON.style succeeded"
15+
16+
json1="$(JSON.dump < test/dump.data)"
17+
dbg json1
18+
ok $? "JSON.dump succeeded"
19+
20+
[ -n "$json1" ]
21+
ok $? "dumped result has content"
22+
23+
JSON.load "$json1" tree1
24+
dbg tree1
25+
ok $? "dumped json can be loaded"
26+
27+
json2="$(echo "$tree1" | JSON.dump)"
28+
dbg json2
29+
is "$json2" "$json1" "dump | load | dump produces same result as dump"
30+
31+
is "$(grep -o : <<<"$json1" | wc -l)" \
32+
"$(grep -oE '/[^/ ]*' test/dump.data | sort -u | grep -cvE '/[0-9]*$')" \
33+
"dumped result contains correct number of keys"
34+
35+
like "$json1" '"x y z": *"spaces"' "keys with spaces work correctly"
36+
}
37+
38+
test_dump normal
39+
test_dump minimal
40+
test_dump pretty

0 commit comments

Comments
 (0)