[PATCH v2 10/41] dm: core: Add tests for stringlist functions

Simon Glass sjg at chromium.org
Sun Oct 24 01:26:04 CEST 2021


These functions currently lack tests so add some. The error handling
differs betwee livetree and flattree at present, so only check the error
codes with livetree.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

(no changes since v1)

 arch/sandbox/dts/test.dts |  1 +
 test/dm/ofnode.c          | 76 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 77 insertions(+)

diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index e27d106466b..07a5118babe 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -207,6 +207,7 @@
 		test4-gpios = <&gpio_a 14>, <&gpio_b 4 1 3 2 1>;
 		test5-gpios = <&gpio_a 19>;
 
+		bool-value;
 		int-value = <1234>;
 		uint-value = <(-1234)>;
 		int64-value = /bits/ 64 <0x1111222233334444>;
diff --git a/test/dm/ofnode.c b/test/dm/ofnode.c
index 49efabe871c..537028ca8fc 100644
--- a/test/dm/ofnode.c
+++ b/test/dm/ofnode.c
@@ -333,3 +333,79 @@ static int dm_test_ofnode_conf(struct unit_test_state *uts)
 	return 0;
 }
 DM_TEST(dm_test_ofnode_conf, 0);
+
+static int dm_test_ofnode_string(struct unit_test_state *uts)
+{
+	const char *out;
+	ofnode node;
+
+	node = ofnode_path("/a-test");
+	ut_assert(ofnode_valid(node));
+
+	/* single string */
+	ut_asserteq(1, ofnode_read_string_count(node, "str-value"));
+	ut_assertok(ofnode_read_string_index(node, "str-value", 0, &out));
+	ut_asserteq_str("test string", out);
+	ut_asserteq(0, ofnode_stringlist_search(node, "str-value",
+						"test string"));
+
+	/* list of strings */
+	ut_asserteq(5, ofnode_read_string_count(node, "mux-control-names"));
+	ut_assertok(ofnode_read_string_index(node, "mux-control-names", 0,
+					     &out));
+	ut_asserteq_str("mux0", out);
+	ut_asserteq(0, ofnode_stringlist_search(node, "mux-control-names",
+						"mux0"));
+
+	ut_assertok(ofnode_read_string_index(node, "mux-control-names", 4,
+					     &out));
+	ut_asserteq_str("mux4", out);
+	ut_asserteq(4, ofnode_stringlist_search(node, "mux-control-names",
+						"mux4"));
+
+	return 0;
+}
+DM_TEST(dm_test_ofnode_string, 0);
+
+static int dm_test_ofnode_string_err(struct unit_test_state *uts)
+{
+	const char *out;
+	ofnode node;
+
+	/*
+	 * Test error codes only on livetree, as they are different with
+	 * flattree
+	 */
+	node = ofnode_path("/a-test");
+	ut_assert(ofnode_valid(node));
+
+	/* non-existent property */
+	ut_asserteq(-EINVAL, ofnode_read_string_count(node, "missing"));
+	ut_asserteq(-EINVAL, ofnode_read_string_index(node, "missing", 0,
+						      &out));
+
+	/* empty property */
+	ut_asserteq(-ENODATA, ofnode_read_string_count(node, "bool-value"));
+	ut_asserteq(-ENODATA, ofnode_read_string_index(node, "bool-value", 0,
+						       &out));
+
+	/* badly formatted string list */
+	ut_asserteq(-EILSEQ, ofnode_read_string_count(node, "int64-value"));
+	ut_asserteq(-EILSEQ, ofnode_read_string_index(node, "int64-value", 0,
+						       &out));
+
+	/* out of range / not found */
+	ut_asserteq(-ENODATA, ofnode_read_string_index(node, "str-value", 1,
+						       &out));
+	ut_asserteq(-ENODATA, ofnode_stringlist_search(node, "str-value",
+						       "other"));
+
+	/* negative value for index is not allowed, so don't test for that */
+
+	ut_asserteq(-ENODATA, ofnode_read_string_index(node,
+						       "mux-control-names", 5,
+						       &out));
+
+	return 0;
+}
+DM_TEST(dm_test_ofnode_string_err, UT_TESTF_LIVE_TREE);
-- 
2.33.0.1079.g6e70778dc9-goog



More information about the U-Boot mailing list