From 440b4e988f39ecb7371fe36fd85f96a0eef23465 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Mon, 17 Nov 2025 10:10:40 -0700 Subject: [PATCH] tests: shunit2: add dump and setters coverage MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Exercise json_dump and json_add_* functions. Signed-off-by: Philip Prindeville Link: https://github.com/openwrt/libubox/pull/35 Signed-off-by: Álvaro Fernández Rojas --- tests/shunit2/tests.sh | 147 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) diff --git a/tests/shunit2/tests.sh b/tests/shunit2/tests.sh index bb02fcd..c24f634 100755 --- a/tests/shunit2/tests.sh +++ b/tests/shunit2/tests.sh @@ -1,3 +1,5 @@ +#!/bin/bash + JSON_SCRIPT=tests.json JSON_SCRIPT_BIN=${TEST_JSON_SCRIPT=:-./json_script-example} FILE_STDOUT=tests.stdout @@ -305,4 +307,149 @@ test_jshn_append_no_leading_space() { assertEquals "first second" "$var" } +test_jshn_dump() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + assertEquals '{ }' "$(json_dump)" + + set -u +} + +test_jshn_add_string() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_string "name" "joe" + + assertEquals '{ "name": "joe" }' "$(json_dump)" + + set -u +} + +test_jshn_add_int() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_int "number" 1 + + assertEquals '{ "number": 1 }' "$(json_dump)" + + set -u +} + +test_jshn_add_boolean() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_boolean "done" false + + assertEquals '{ "done": false }' "$(json_dump)" + + set -u +} + +test_jshn_add_double() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_double "power" 1.605 + + assertEquals '{ "power": 1.605 }' "$(json_dump)" + + set -u +} + +test_jshn_add_null() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_null "reference" + + assertEquals '{ "reference": null }' "$(json_dump)" + + set -u +} + +test_jshn_add_object() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_object "inventory" + + json_add_int "apples" 61 + json_add_int "pears" 42 + json_add_int "melons" 5 + + json_close_object # inventory + + assertEquals '{ "inventory": { "apples": 61, "pears": 42, "melons": 5 } }' "$(json_dump)" + + set -u +} + +test_jshn_add_array() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_array "interfaces" + + json_add_string "" "eth0" + json_add_string "" "eth1" + json_add_string "" "eth2" + + json_close_array # interfaces + + assertEquals '{ "interfaces": [ "eth0", "eth1", "eth2" ] }' "$(json_dump)" + + set -u +} + +test_jshn_add_multi() { + JSON_PREFIX="${JSON_PREFIX:-}" + . ../../sh/jshn.sh + + set +u + + json_init + + json_add_fields "name:string=joe" "age:int=42" "veteran:boolean=false" + + assertEquals '{ "name": "joe", "age": 42, "veteran": false }' "$(json_dump)" + + set -u +} + . ./shunit2/shunit2 -- 2.30.2