Test Failed
Pull Request — master (#203)
by Jan
03:38
created

test_oval_evaluate.get_patch_to_data_source()   A

Complexity

Conditions 5

Size

Total Lines 15
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 13
nop 1
dl 0
loc 15
rs 9.2833
c 0
b 0
f 0
1
import json
2
import os
3
4
import pytest
5
6
from oval_graph.oval_tree.builder import Builder
7
from oval_graph.oval_tree.oval_result import OvalResult
8
9
BAD_RESULT_COUNTS = {
10
    "number_of_true": -1,
11
    "number_of_false": -1,
12
    "number_of_error": -1,
13
    "number_of_unknown": -1,
14
    "number_of_noteval": -1,
15
    "number_of_notappl": -1
16
}
17
18
19
RESULT_COUNTS_1 = {
20
    "number_of_true": 3,
21
    "number_of_false": 3,
22
    "number_of_error": 3,
23
    "number_of_unknown": 0,
24
    "number_of_noteval": -1,
25
    "number_of_notappl": 3
26
}
27
28
29
def get_patch_to_data_source(data_source):
30
    directory = ''
31
    if data_source.startswith('AND'):
32
        directory = 'test_data_and'
33
    elif data_source.startswith('OR'):
34
        directory = 'test_data_or'
35
    elif data_source.startswith('XOR'):
36
        directory = 'test_data_xor'
37
    elif data_source.startswith('ONE'):
38
        directory = 'test_data_one'
39
    else:
40
        directory = 'test_data_NONE'
41
42
    top_patch = os.path.dirname(os.path.realpath(__file__))
43
    return os.path.join(top_patch, 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
    patch = get_patch_to_data_source(data_source)
78
    data = dict()
79
    with open(patch, "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