tests: shunit2: add dump and setters coverage
authorPhilip Prindeville <[email protected]>
Mon, 17 Nov 2025 17:10:40 +0000 (10:10 -0700)
committerÁlvaro Fernández Rojas <[email protected]>
Mon, 17 Nov 2025 18:07:04 +0000 (19:07 +0100)
Exercise json_dump and json_add_* functions.

Signed-off-by: Philip Prindeville <[email protected]>
Link: https://github.com/openwrt/libubox/pull/35
Signed-off-by: Álvaro Fernández Rojas <[email protected]>
tests/shunit2/tests.sh

index bb02fcd8ffdc7cf0c6729886c9341f6d400ea54d..c24f634ee8080f85d6916716832fb528c6b72e3e 100755 (executable)
@@ -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