diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2017-10-29 22:56:54 +0100 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2017-10-30 09:00:11 +0100 |
commit | cc392f089007873734ae2fbfb384df7acb4fe3c6 (patch) | |
tree | bd2aad0462bfd6afbe858ecbeab69005e005e88f | |
parent | bba26a5291c8343101e0296b0e478deb4c9b60b0 (diff) | |
download | dtc-cc392f089007873734ae2fbfb384df7acb4fe3c6.zip dtc-cc392f089007873734ae2fbfb384df7acb4fe3c6.tar.gz dtc-cc392f089007873734ae2fbfb384df7acb4fe3c6.tar.bz2 |
tests: Check non-matching cases for fdt_node_check_compatible()
The current tests for fdt_node_check_compatible() test that it returns true
on several matching cases, but don't test that it actually returns false on
some non-matching cases, which isn't great coverage. Add some basic tests
to address that.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | tests/node_check_compatible.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/node_check_compatible.c b/tests/node_check_compatible.c index 4bdf091..486f9c6 100644 --- a/tests/node_check_compatible.c +++ b/tests/node_check_compatible.c @@ -45,6 +45,23 @@ static void check_compatible(const void *fdt, const char *path, FAIL("%s is not compatible with \"%s\"", path, compat); } +static void check_not_compatible(const void *fdt, const char *path, + const char *compat) +{ + int offset, err; + + offset = fdt_path_offset(fdt, path); + if (offset < 0) + FAIL("fdt_path_offset(%s): %s", path, fdt_strerror(offset)); + + err = fdt_node_check_compatible(fdt, offset, compat); + if (err < 0) + FAIL("fdt_node_check_compatible(%s): %s", path, + fdt_strerror(err)); + if (err == 0) + FAIL("%s is incorrectly compatible with \"%s\"", path, compat); +} + int main(int argc, char *argv[]) { void *fdt; @@ -55,8 +72,10 @@ int main(int argc, char *argv[]) check_compatible(fdt, "/", "test_tree1"); check_compatible(fdt, "/subnode@1/subsubnode", "subsubnode1"); check_compatible(fdt, "/subnode@1/subsubnode", "subsubnode"); + check_not_compatible(fdt, "/subnode@1/subsubnode", "subsubnode2"); check_compatible(fdt, "/subnode@2/subsubnode", "subsubnode2"); check_compatible(fdt, "/subnode@2/subsubnode", "subsubnode"); + check_not_compatible(fdt, "/subnode@2/subsubnode", "subsubnode1"); PASS(); } |