Passed
Push — master ( 958bc0...1938a8 )
by Jan
05:51 queued 02:21
created

test_oval_evaluate.test_evaluate_oval_result()   A

Complexity

Conditions 1

Size

Total Lines 12
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nop 2
dl 0
loc 12
rs 9.85
c 0
b 0
f 0
1
import json
2
import os
3
from pathlib import Path
4
5
import pytest
6
7
from oval_graph.oval_tree.builder import Builder
8
from oval_graph.oval_tree.oval_result import OvalResult
9
10
BAD_RESULT_COUNTS = {
11
    "number_of_true": -1,
12
    "number_of_false": -1,
13
    "number_of_error": -1,
14
    "number_of_unknown": -1,
15
    "number_of_noteval": -1,
16
    "number_of_notappl": -1
17
}
18
19
20
RESULT_COUNTS_1 = {
21
    "number_of_true": 3,
22
    "number_of_false": 3,
23
    "number_of_error": 3,
24
    "number_of_unknown": 0,
25
    "number_of_noteval": -1,
26
    "number_of_notappl": 3
27
}
28
29
30
def get_path_to_data_source(data_source):
31
    directory = ''
32
    if data_source.startswith('AND'):
33
        directory = 'and'
34
    elif data_source.startswith('OR'):
35
        directory = 'or'
36
    elif data_source.startswith('XOR'):
37
        directory = 'xor'
38
    elif data_source.startswith('ONE'):
39
        directory = 'one'
40
    else:
41
        directory = 'NONE'
42
43
    return Path(__file__).parent / 'test_data' / directory / data_source
44
45
46
@pytest.mark.parametrize("data_source, expected_result", [
47
    ('ANDTreeTrue.json', "true"),
48
    ('ANDTreeFalse.json', 'false'),
49
    ('ANDTreeError.json', "error"),
50
    ('ANDTreeUnknown.json', "unknown"),
51
    ('ANDTreeNoteval.json', "noteval"),
52
    ("ANDTreeNotappl.json", 'notappl'),
53
54
    ('ONETreeTrue.json', "true"),
55
    ('ONETreeFalse.json', 'false'),
56
    ('ONETreeFalse1.json', 'false'),
57
    ('ONETreeError.json', "error"),
58
    ('ONETreeUnknown.json', "unknown"),
59
    ('ONETreeNoteval.json', "noteval"),
60
    ("ONETreeNotappl.json", 'notappl'),
61
62
    ('ORTreeTrue.json', "true"),
63
    ('ORTreeFalse.json', 'false'),
64
    ('ORTreeError.json', "error"),
65
    ('ORTreeUnknown.json', "unknown"),
66
    ('ORTreeNoteval.json', "noteval"),
67
    ("ORTreeNotappl.json", 'notappl'),
68
69
    ('XORTreeTrue.json', "true"),
70
    ('XORTreeFalse.json', 'false'),
71
    ('XORTreeError.json', "error"),
72
    ('XORTreeUnknown.json', "unknown"),
73
    ('XORTreeNoteval.json', "noteval"),
74
    ("XORTreeNotappl.json", 'notappl'),
75
])
76
def test_evaluation_of_oval_tree(data_source, expected_result):
77
    path = get_path_to_data_source(data_source)
78
    data = dict()
79
    with open(path, "r") as file_:
80
        data = json.load(file_)
81
    oval_tree = Builder.dict_to_oval_tree(data)
82
    assert oval_tree.evaluate_tree() == expected_result
83
84
85
@pytest.mark.parametrize("eval_function, result", [
86
    (OvalResult(**BAD_RESULT_COUNTS).eval_operator_and, None),
87
    (OvalResult(**BAD_RESULT_COUNTS).eval_operator_one, None),
88
    (OvalResult(**BAD_RESULT_COUNTS).eval_operator_or, None),
89
    (OvalResult(**BAD_RESULT_COUNTS).eval_operator_xor, None),
90
    (OvalResult(**RESULT_COUNTS_1).eval_operator_and, 'false'),
91
    (OvalResult(**RESULT_COUNTS_1).eval_operator_one, None),
92
    (OvalResult(**RESULT_COUNTS_1).eval_operator_or, 'true'),
93
    (OvalResult(**RESULT_COUNTS_1).eval_operator_xor, 'error'),
94
])
95
def test_evaluate_oval_result(eval_function, result):
96
    assert eval_function() is result
97