X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/35a7d633d3f16c1e0539af6ca5d8e7482926cd93..9daf4fcdae88f72af60aeb0c7722841af02233d4:/lunaix-os/tests/units/device-tree/test-inheritence.c diff --git a/lunaix-os/tests/units/device-tree/test-inheritence.c b/lunaix-os/tests/units/device-tree/test-inheritence.c new file mode 100644 index 0000000..36c299e --- /dev/null +++ b/lunaix-os/tests/units/device-tree/test-inheritence.c @@ -0,0 +1,66 @@ +#include "common.h" +#include +#include + +static inline struct dtn* +get_node(struct dtn* parent, const char* name) +{ + struct dtn_iter it; + struct dtn* node; + + dt_begin_find_byname(&it, parent, name); + + node = (struct dtn*)it.matched; + expect_notnull(node); + + return node; +} + + +void +run_test(int argc, const char* argv[]) +{ + + if(!my_load_dtb()) { + printf("failed to load dtb\n"); + _exit(1); + } + + struct dt_context* ctx; + struct dtn* node; + + ctx = dt_main_context(); + + begin_testcase("root"); + + node = ctx->root; + expect_int(node->base.addr_c, 1); + expect_int(node->base.sz_c, 2); + expect_int(node->base.intr_c, 0); + end_testcase(); + + begin_testcase("level-1 child"); + + node = get_node(node, "child@1"); + expect_int(node->base.addr_c, 1); + expect_int(node->base.sz_c, 2); + expect_int(node->base.intr_c, 3); + end_testcase(); + + begin_testcase("level-2 child"); + + node = get_node(node, "child@2"); + expect_int(node->base.addr_c, 4); + expect_int(node->base.sz_c, 2); + expect_int(node->base.intr_c, 3); + end_testcase(); + + begin_testcase("level-3 child"); + + node = get_node(node, "child@3"); + expect_int(node->base.addr_c, 4); + expect_int(node->base.sz_c, 0); + expect_int(node->base.intr_c, 0); + end_testcase(); + +} \ No newline at end of file