Passed
Pull Request — master (#45)
by Jan
06:18
created

tests.unit_tests.test_oval_tree_eval   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 247
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 181
dl 0
loc 247
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0
wmc 1

1 Function

Rating   Name   Duplication   Size   Complexity  
A test_oval_tree_evaluation() 0 15 1
1 1
import pytest
2
3 1
from oscap_report.scap_results_parser.data_structures.oval_data_structures import \
4
    OvalNode
5
6 1
SAMPLE_OVAL_TREE = OvalNode(
7
    node_id="1",
8
    node_type="and",
9
    value="",
10
    children=[
11
        OvalNode(
12
            node_id="2",
13
            node_type="value",
14
            value="true",
15
        ),
16
        OvalNode(
17
            node_id="3",
18
            node_type="value",
19
            value="false",
20
        ),
21
        OvalNode(
22
            node_id="4",
23
            node_type="or",
24
            value="",
25
            children=[
26
                OvalNode(
27
                    node_id="5",
28
                    node_type="value",
29
                    value="false",
30
                ),
31
                OvalNode(
32
                    node_id="6",
33
                    node_type="value",
34
                    value="true",
35
                ),
36
            ]
37
        )
38
    ]
39
)
40
41 1
OVAL_TREE_TRUE = OvalNode(
42
    node_id="1",
43
    node_type="and",
44
    value="",
45
    children=[
46
        OvalNode(
47
            node_id="2",
48
            node_type="value",
49
            value="true",
50
        )
51
    ]
52
)
53
54 1
OVAL_TREE_FALSE = OvalNode(
55
    node_id="1",
56
    node_type="and",
57
    value="",
58
    children=[
59
        OvalNode(
60
            node_id="2",
61
            node_type="value",
62
            value="false",
63
        ),
64
    ]
65
)
66
67 1
OVAL_TREE_NOTEVAL = OvalNode(
68
    node_id="1",
69
    node_type="and",
70
    value="",
71
    children=[
72
        OvalNode(
73
            node_id="2",
74
            node_type="value",
75
            value="noteval",
76
        )
77
    ]
78
)
79
80 1
OVAL_TREE_NOTAPPL = OvalNode(
81
    node_id="1",
82
    node_type="and",
83
    value="",
84
    children=[
85
        OvalNode(
86
            node_id="2",
87
            node_type="value",
88
            value="notappl",
89
        )
90
    ]
91
)
92
93 1
OVAL_TREE_NEGATION_FALSE = OvalNode(
94
    node_id="1",
95
    node_type="and",
96
    value="",
97
    negation=True,
98
    children=[
99
        OvalNode(
100
            node_id="2",
101
            node_type="value",
102
            value="false",
103
        )
104
    ]
105
)
106
107 1
OVAL_TREE_NEGATION_TURE = OvalNode(
108
    node_id="1",
109
    node_type="and",
110
    negation=True,
111
    value="",
112
    children=[
113
        OvalNode(
114
            node_id="2",
115
            node_type="value",
116
            value="true",
117
        )
118
    ]
119
)
120
121 1
OVAL_TREE_NEGATION_NODE_FALSE = OvalNode(
122
    node_id="1",
123
    node_type="and",
124
    value="",
125
    children=[
126
        OvalNode(
127
            node_id="2",
128
            node_type="value",
129
            value="false",
130
            negation=True,
131
        ),
132
    ]
133
)
134
135 1
OVAL_TREE_NEGATION_NODE_TRUE = OvalNode(
136
    node_id="1",
137
    node_type="and",
138
    value="",
139
    children=[
140
        OvalNode(
141
            node_id="2",
142
            node_type="value",
143
            value="true",
144
            negation=True,
145
        ),
146
    ]
147
)
148
149 1
BIG_OVAL_TREE = OvalNode(
150
    node_id="1",
151
    node_type="and",
152
    value="",
153
    children=[
154
        OvalNode(
155
            node_id="2",
156
            node_type="value",
157
            value="false",
158
        ),
159
        OvalNode(
160
            node_id="3",
161
            node_type="xor",
162
            value="",
163
            children=[
164
                OvalNode(
165
                    node_id="4",
166
                    node_type="value",
167
                    value="true",
168
                ),
169
                OvalNode(
170
                    node_id="5",
171
                    node_type="one",
172
                    value="",
173
                    children=[
174
                        OvalNode(
175
                            node_id="6",
176
                            node_type="value",
177
                            value="noteval",
178
                        ),
179
                        OvalNode(
180
                            node_id="7",
181
                            node_type="value",
182
                            value="true",
183
                        ),
184
                        OvalNode(
185
                            node_id="8",
186
                            node_type="value",
187
                            value="notappl",
188
                        ),
189
                    ]
190
                ),
191
                OvalNode(
192
                    node_id="9",
193
                    node_type="value",
194
                    value="error",
195
                ),
196
            ]
197
        ),
198
        OvalNode(
199
            node_id="10",
200
            node_type="or",
201
            value="",
202
            children=[
203
                OvalNode(
204
                    node_id="11",
205
                    node_type="value",
206
                    value="unknown",
207
                ),
208
                OvalNode(
209
                    node_id="12",
210
                    node_type="value",
211
                    value="true",
212
                ),
213
            ]
214
        ),
215
    ]
216
)
217
218 1
NOT_EXIST_OPERATOR_OVAL_TREE = OvalNode(
219
    node_id="1",
220
    node_type="nand",
221
    value="",
222
    children=[
223
        OvalNode(
224
            node_id="2",
225
            node_type="value",
226
            value="true",
227
        ),
228
    ]
229
)
230
231
232 1
@pytest.mark.parametrize("tree, result", [
233
    (SAMPLE_OVAL_TREE, "false"),
234
    (OVAL_TREE_FALSE, "false"),
235
    (OVAL_TREE_TRUE, "true"),
236
    (OVAL_TREE_NOTEVAL, "not evaluated"),
237
    (OVAL_TREE_NOTAPPL, "not applicable"),
238
    (OVAL_TREE_NEGATION_FALSE, "true"),
239
    (OVAL_TREE_NEGATION_TURE, "false"),
240
    (OVAL_TREE_NEGATION_NODE_TRUE, "false"),
241
    (OVAL_TREE_NEGATION_NODE_FALSE, "true"),
242
    (BIG_OVAL_TREE, "false"),
243
    (NOT_EXIST_OPERATOR_OVAL_TREE, None),
244
])
245 1
def test_oval_tree_evaluation(tree, result):
246
    assert tree.evaluate_tree() == result
247