blob: 82d763b5b44015bd6b01de7b1fee6c6482739eec [file] [log] [blame]
kasunath2ebe82f2023-01-31 13:59:22 -08001#include "bej_tree.h"
2
3#include <gmock/gmock-matchers.h>
4#include <gmock/gmock.h>
5#include <gtest/gtest.h>
6
7namespace libbej
8{
9
10TEST(BejTreeTest, InitSet)
11{
12 const char* name = "SomeProperty";
13 struct RedfishPropertyParent node;
14 bejTreeInitSet(&node, name);
15
16 EXPECT_THAT(node.nodeAttr.name, name);
17 EXPECT_THAT(node.nodeAttr.format.principalDataType, bejSet);
18 EXPECT_THAT(node.nodeAttr.format.deferredBinding, 0);
19 EXPECT_THAT(node.nodeAttr.format.readOnlyProperty, 0);
20 EXPECT_THAT(node.nodeAttr.format.nullableProperty, 0);
21 EXPECT_THAT(node.nodeAttr.sibling, nullptr);
22 EXPECT_THAT(node.nChildren, 0);
23 EXPECT_THAT(node.firstChild, nullptr);
24 EXPECT_THAT(node.lastChild, nullptr);
25}
26
27TEST(BejTreeTest, InitArray)
28{
29 const char* name = "SomeProperty";
30 struct RedfishPropertyParent node;
31 bejTreeInitArray(&node, name);
32
33 EXPECT_THAT(node.nodeAttr.name, name);
34 EXPECT_THAT(node.nodeAttr.format.principalDataType, bejArray);
35 EXPECT_THAT(node.nodeAttr.format.deferredBinding, 0);
36 EXPECT_THAT(node.nodeAttr.format.readOnlyProperty, 0);
37 EXPECT_THAT(node.nodeAttr.format.nullableProperty, 0);
38 EXPECT_THAT(node.nodeAttr.sibling, nullptr);
39 EXPECT_THAT(node.nChildren, 0);
40 EXPECT_THAT(node.firstChild, nullptr);
41 EXPECT_THAT(node.lastChild, nullptr);
42}
43
44TEST(BejTreeTest, InitAnnotatedProp)
45{
46 const char* name = "SomeProperty";
47 struct RedfishPropertyParent node;
48 bejTreeInitPropertyAnnotated(&node, name);
49
50 EXPECT_THAT(node.nodeAttr.name, name);
51 EXPECT_THAT(node.nodeAttr.format.principalDataType, bejPropertyAnnotation);
52 EXPECT_THAT(node.nodeAttr.format.deferredBinding, 0);
53 EXPECT_THAT(node.nodeAttr.format.readOnlyProperty, 0);
54 EXPECT_THAT(node.nodeAttr.format.nullableProperty, 0);
55 EXPECT_THAT(node.nodeAttr.sibling, nullptr);
56 EXPECT_THAT(node.nChildren, 0);
57 EXPECT_THAT(node.firstChild, nullptr);
58 EXPECT_THAT(node.lastChild, nullptr);
59}
60
61TEST(BejTreeTest, ChildLinking)
62{
63 struct RedfishPropertyParent parent;
64 struct RedfishPropertyLeafInt child1;
65 struct RedfishPropertyLeafInt child2;
66
67 bejTreeInitSet(&parent, nullptr);
68 EXPECT_THAT(parent.nChildren, 0);
69 EXPECT_THAT(parent.firstChild, nullptr);
70 EXPECT_THAT(parent.lastChild, nullptr);
71
72 bejTreeAddInteger(&parent, &child1, nullptr, 1024);
73 EXPECT_THAT(parent.nChildren, 1);
74 EXPECT_THAT(parent.firstChild, &child1);
75 EXPECT_THAT(parent.lastChild, &child1);
76
77 bejTreeAddInteger(&parent, &child2, nullptr, 20);
78 EXPECT_THAT(parent.nChildren, 2);
79 EXPECT_THAT(parent.firstChild, &child1);
80 EXPECT_THAT(parent.lastChild, &child2);
81
82 // child2 should be a sibling of child1.
83 EXPECT_THAT(child1.leaf.nodeAttr.sibling, &child2);
84}
85
86TEST(BejTreeTest, AddInteger)
87{
88 const char* name = "SomeProperty";
89 struct RedfishPropertyParent parent;
90 struct RedfishPropertyLeafInt child;
91
92 bejTreeInitSet(&parent, nullptr);
93 bejTreeAddInteger(&parent, &child, name, 1024);
94
95 EXPECT_THAT(child.leaf.nodeAttr.name, name);
96 EXPECT_THAT(child.leaf.nodeAttr.format.principalDataType, bejInteger);
97 EXPECT_THAT(child.leaf.nodeAttr.format.deferredBinding, 0);
98 EXPECT_THAT(child.leaf.nodeAttr.format.readOnlyProperty, 0);
99 EXPECT_THAT(child.leaf.nodeAttr.format.nullableProperty, 0);
100 EXPECT_THAT(child.leaf.nodeAttr.sibling, nullptr);
101 EXPECT_THAT(child.value, 1024);
102}
103
104TEST(BejTreeTest, SetInteger)
105{
106 const char* name = "SomeProperty";
107 struct RedfishPropertyParent parent;
108 struct RedfishPropertyLeafInt child;
109
110 bejTreeInitSet(&parent, nullptr);
111 bejTreeAddInteger(&parent, &child, name, 1024);
112
113 EXPECT_THAT(child.value, 1024);
114 bejTreeSetInteger(&child, 20);
115 EXPECT_THAT(child.value, 20);
116}
117
118TEST(BejTreeTest, AddEnum)
119{
120 const char* name = "SomeProperty";
121 const char* enumValue = "EnumValue";
122 struct RedfishPropertyParent parent;
123 struct RedfishPropertyLeafEnum child;
124
125 bejTreeInitSet(&parent, nullptr);
126 bejTreeAddEnum(&parent, &child, name, enumValue);
127
128 EXPECT_THAT(child.leaf.nodeAttr.name, name);
129 EXPECT_THAT(child.leaf.nodeAttr.format.principalDataType, bejEnum);
130 EXPECT_THAT(child.leaf.nodeAttr.format.deferredBinding, 0);
131 EXPECT_THAT(child.leaf.nodeAttr.format.readOnlyProperty, 0);
132 EXPECT_THAT(child.leaf.nodeAttr.format.nullableProperty, 0);
133 EXPECT_THAT(child.leaf.nodeAttr.sibling, nullptr);
134 EXPECT_THAT(child.value, enumValue);
135}
136
137} // namespace libbej