Unit testing framework and devicetree framework refactoring (#50)
[lunaix-os.git] / lunaix-os / tests / units / device-tree / test-inheritence.c
1 #include "common.h"
2 #include <testing/basic.h>
3 #include <unistd.h>
4
5 static inline struct dtn* 
6 get_node(struct dtn* parent, const char* name)
7 {
8     struct dtn_iter it;
9     struct dtn* node;
10     
11     dt_begin_find_byname(&it, parent, name);
12     
13     node = (struct dtn*)it.matched;
14     expect_notnull(node);
15
16     return node;
17 }
18
19
20 void
21 run_test(int argc, const char* argv[])
22 {
23
24     if(!my_load_dtb()) {
25         printf("failed to load dtb\n");
26         _exit(1);
27     }
28
29     struct dt_context* ctx;
30     struct dtn* node;
31
32     ctx = dt_main_context();
33
34     begin_testcase("root");
35
36     node = ctx->root;
37     expect_int(node->base.addr_c, 1);
38     expect_int(node->base.sz_c, 2);
39     expect_int(node->base.intr_c, 0);
40     end_testcase();
41
42     begin_testcase("level-1 child");
43
44     node = get_node(node, "child@1");
45     expect_int(node->base.addr_c, 1);
46     expect_int(node->base.sz_c, 2);
47     expect_int(node->base.intr_c, 3);
48     end_testcase();
49
50     begin_testcase("level-2 child");
51
52     node = get_node(node, "child@2");
53     expect_int(node->base.addr_c, 4);
54     expect_int(node->base.sz_c, 2);
55     expect_int(node->base.intr_c, 3);
56     end_testcase();
57
58     begin_testcase("level-3 child");
59
60     node = get_node(node, "child@3");
61     expect_int(node->base.addr_c, 4);
62     expect_int(node->base.sz_c, 0);
63     expect_int(node->base.intr_c, 0);
64     end_testcase();
65
66 }