blob: 74ffb926ffdcaa58152e2ae1ae265f352fd224e9 [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
kasunathdc3f2142023-01-31 15:09:10 -0800137TEST(BejTreeTest, AddString)
138{
139 const char* name = "SomeProperty";
140 const char* stringValue = "StringValue";
141 struct RedfishPropertyParent parent;
142 struct RedfishPropertyLeafString child;
143
144 bejTreeInitSet(&parent, nullptr);
145 bejTreeAddString(&parent, &child, name, stringValue);
146
147 EXPECT_THAT(child.leaf.nodeAttr.name, name);
148 EXPECT_THAT(child.leaf.nodeAttr.format.principalDataType, bejString);
149 EXPECT_THAT(child.leaf.nodeAttr.format.deferredBinding, 0);
150 EXPECT_THAT(child.leaf.nodeAttr.format.readOnlyProperty, 0);
151 EXPECT_THAT(child.leaf.nodeAttr.format.nullableProperty, 0);
152 EXPECT_THAT(child.leaf.nodeAttr.sibling, nullptr);
153 EXPECT_THAT(child.value, stringValue);
154}
155
156TEST(BejTreeTest, AddReal)
157{
158 const char* name = "SomeProperty";
159 double value = 10.50;
160 struct RedfishPropertyParent parent;
161 struct RedfishPropertyLeafReal child;
162
163 bejTreeInitSet(&parent, nullptr);
164 bejTreeAddReal(&parent, &child, name, value);
165
166 EXPECT_THAT(child.leaf.nodeAttr.name, name);
167 EXPECT_THAT(child.leaf.nodeAttr.format.principalDataType, bejReal);
168 EXPECT_THAT(child.leaf.nodeAttr.format.deferredBinding, 0);
169 EXPECT_THAT(child.leaf.nodeAttr.format.readOnlyProperty, 0);
170 EXPECT_THAT(child.leaf.nodeAttr.format.nullableProperty, 0);
171 EXPECT_THAT(child.leaf.nodeAttr.sibling, nullptr);
172 EXPECT_THAT(child.value, value);
173}
174
175TEST(BejTreeTest, AddBool)
176{
177 const char* name = "SomeProperty";
178 bool value = true;
179 struct RedfishPropertyParent parent;
180 struct RedfishPropertyLeafBool child;
181
182 bejTreeInitSet(&parent, nullptr);
183 bejTreeAddBool(&parent, &child, name, value);
184
185 EXPECT_THAT(child.leaf.nodeAttr.name, name);
186 EXPECT_THAT(child.leaf.nodeAttr.format.principalDataType, bejBoolean);
187 EXPECT_THAT(child.leaf.nodeAttr.format.deferredBinding, 0);
188 EXPECT_THAT(child.leaf.nodeAttr.format.readOnlyProperty, 0);
189 EXPECT_THAT(child.leaf.nodeAttr.format.nullableProperty, 0);
190 EXPECT_THAT(child.leaf.nodeAttr.sibling, nullptr);
191 EXPECT_THAT(child.value, value);
192}
193
194TEST(BejTreeTest, NodeFlags)
195{
196 struct RedfishPropertyParent parent;
197 bejTreeInitSet(&parent, nullptr);
198 EXPECT_THAT(parent.nodeAttr.format.deferredBinding, 0);
199 EXPECT_THAT(parent.nodeAttr.format.readOnlyProperty, 0);
200 EXPECT_THAT(parent.nodeAttr.format.nullableProperty, 0);
201
202 bejTreeUpdateNodeFlags(&parent.nodeAttr, true, true, true);
203 EXPECT_THAT(parent.nodeAttr.format.deferredBinding, 1);
204 EXPECT_THAT(parent.nodeAttr.format.readOnlyProperty, 1);
205 EXPECT_THAT(parent.nodeAttr.format.nullableProperty, 1);
206}
207
208TEST(BejTreeTest, NodeType)
209{
210 struct RedfishPropertyParent parent;
211 struct RedfishPropertyLeafBool child1;
212 struct RedfishPropertyLeafReal child2;
213
214 bejTreeInitSet(&parent, nullptr);
215 bejTreeAddBool(&parent, &child1, nullptr, true);
216 bejTreeAddReal(&parent, &child2, nullptr, 10.5);
217
218 EXPECT_THAT(bejTreeIsParentType(&parent.nodeAttr), true);
219 EXPECT_THAT(bejTreeIsParentType(&child1.leaf.nodeAttr), false);
220 EXPECT_THAT(bejTreeIsParentType(&child2.leaf.nodeAttr), false);
221}
222
kasunath2ebe82f2023-01-31 13:59:22 -0800223} // namespace libbej