remove move end transaction

This commit is contained in:
Olof hagsand 2020-04-03 08:47:48 +02:00
parent 662d6b0a3f
commit d2531421f2
5 changed files with 206 additions and 77 deletions

199
test/test_json_null.sh Executable file
View file

@ -0,0 +1,199 @@
#!/usr/bin/env bash
# Test: JSON empty/null values. See RFC7951
# tests include:
# - parsing in XML, output in JSON
# - parsing in JSON, output in JSON
# - parsing in JSON, output in XML?
#
# Magic line must be first in script (see README.md)
s="$_" ; . ./lib.sh || if [ "$s" = $0 ]; then exit 0; else return 0; fi
: ${clixon_util_json:=clixon_util_json}
: ${clixon_util_xml:=clixon_util_xml}
fyang=$dir/json.yang
cat <<EOF > $fyang
module json{
prefix j;
namespace "urn:example:clixon";
container leafs{
leaf a{
type int32;
}
leaf b{
type string;
}
leaf c{
type boolean;
}
leaf d{
type empty;
}
}
container leaf-lists{
leaf-list a{
type empty;
}
leaf-list b{
type string;
}
}
container containers{
presence true;
container a{
presence true;
leaf b {
type empty;
}
}
}
container anys{
anydata a;
anyxml b;
}
}
EOF
new "test params: -y $fyang"
# Leafs
XML='<leafs xmlns="urn:example:clixon"><a>0</a><b></b><c>false</c><d></d></leafs>'
JSON='{"json:leafs":{"a":0,"b":"","c":false,"d":[null]}}'
new "leafs xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "leafs json to json"
expecteofx "$clixon_util_xml -ovJjy $fyang" 0 "$JSON" "$JSON"
new "leafs json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# Leaf-lists single
XML='<leaf-lists xmlns="urn:example:clixon"><a></a><b></b></leaf-lists>'
JSON='{"json:leaf-lists":{"a":[null],"b":""}}'
new "leaf-list single xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "leaf-list single json to json"
expecteofx "$clixon_util_xml -ovjJy $fyang" 0 "$JSON" "$JSON"
new "leaf-list single json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# Leaf-lists multiple
XML='<leaf-lists xmlns="urn:example:clixon"><a></a><a></a><b></b><b></b><b>null</b></leaf-lists>'
JSON='{"json:leaf-lists":{"a":[[null],[null]],"b":["","","null"]}}'
new "leaf-list multiple xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "leaf-list multiple json to json"
expecteofx "$clixon_util_xml -ovjJy $fyang" 0 "$JSON" "$JSON"
new "leaf-list multiple json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# Empty container
XML='<containers xmlns="urn:example:clixon"><a/></containers>'
JSON='{"json:containers":{"a":{}}}'
new "empty container xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "empty container json to json"
expecteofx "$clixon_util_xml -ovjJy $fyang" 0 "$JSON" "$JSON"
new "empty container json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# Empty container whitespace
XML='<containers xmlns="urn:example:clixon"><a> </a></containers>'
JSON='{"json:containers":{"a":{}}}'
new "empty container whitespace xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
# container empty leaf
XML='<containers xmlns="urn:example:clixon"><a><b></b></a></containers>'
JSON='{"json:containers":{"a":{"b":[null]}}}'
new "container empty leaf xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "container empty leaf json to json"
expecteofx "$clixon_util_xml -ovjJy $fyang" 0 "$JSON" "$JSON"
new "container empty leaf json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# anydata
# An anydata instance is encoded in the same way as a container, as a name/object pair
XML='<anys xmlns="urn:example:clixon"><a/></anys>'
JSON='{"json:anys":{"a":{}}}'
new "anydata xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "anydata json to json"
expecteofx "$clixon_util_xml -ovjJy $fyang" 0 "$JSON" "$JSON"
new "anydata json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# anydata
XML='<anys xmlns="urn:example:clixon"><a><c/><d/></a></anys>'
JSON='{"json:anys":{"a":{"c":{},"d":{}}}}'
new "anydata w empty node xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "anydata w empty node json to json"
expecteofx "$clixon_util_xml -ovjJy $fyang" 0 "$JSON" "$JSON"
new "anydata w empty node json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# Anyxml
XML='<anys xmlns="urn:example:clixon"><b/></anys>'
JSON='{"json:anys":{"b":{}}}'
new "anyxml xml to json"
expecteofx "$clixon_util_xml -ovjy $fyang" 0 "$XML" "$JSON"
new "anyxml json to json"
expecteofx "$clixon_util_xml -ovjJy $fyang" 0 "$JSON" "$JSON"
new "anyxml json to xml"
expecteofx "$clixon_util_xml -ovJy $fyang" 0 "$JSON" "$XML"
# JSON wrong in?
# XXX: maybe this should give error?
JSON='{"json:leafs":{"b":null}}'
JSON2='{"json:leafs":{"b":""}}'
new "leafs null in json to json"
expecteofx "$clixon_util_xml -ovJjy $fyang" 0 "$JSON" "$JSON2"
# XXX: maybe this should give error?
JSON='{"json:leafs":{"b":[null]}}'
JSON2='{"json:leafs":{"b":""}}'
new "leafs [null] in json to json"
expecteofx "$clixon_util_xml -ovJjy $fyang" 0 "$JSON" "$JSON2"
# XXX: maybe this should give error?
JSON='{"json:leafs":{"d":null}}'
JSON2='{"json:leafs":{"d":[null]}}'
new "leafs null in json to json"
expecteofx "$clixon_util_xml -ovJjy $fyang" 0 "$JSON" "$JSON2"
JSON='{"json:leafs":{"d":""}}'
JSON2='{"json:leafs":{"d":[null]}}'
new "leafs \"\" in json to json should give error"
expecteofx "$clixon_util_xml -ovJjy $fyang" 255 "$JSON" "" 2> /dev/null
rm -rf $dir
# unset conditional parameters
unset clixon_util_json
unset clixon_util_xml