tests.test_sources   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 31
dl 0
loc 56
rs 10
c 0
b 0
f 0

4 Functions

Rating   Name   Duplication   Size   Complexity  
A test_percentage_value_source() 0 9 1
A test_fixed_value_source() 0 6 1
A test_dict_source() 0 13 1
A test_random_int_source() 0 14 1
1
# coding=utf-8
2
from decision_engine.sources import DictSource, FixedValueSource, \
3
    PercentageSource, RandomIntSource
4
5
6
def test_dict_source():
7
    test_key = 'test_key'
8
    test_value = 5000
9
    data = {test_key: test_value}
10
11
    # Test source with normal data
12
    src = DictSource(test_key)
13
    assert src.get_value(data) == test_value
14
15
    # Test source with data set to None
16
    assert src.get_value() is None
17
18
    assert src.__repr__() == f"Name: '{src.name}' | key: '{src.key}'"
19
20
21
def test_fixed_value_source():
22
    test_value = 5000
23
    src = FixedValueSource(test_value)
24
25
    assert src.get_value() == test_value
26
    assert src.__repr__() == f"Name: '{src.name}' | value: {src.value}"
27
28
29
def test_percentage_value_source():
30
    test_value = 75000
31
    data = {
32
        'test_value': 100000
33
    }
34
    src = PercentageSource(0.75, DictSource('test_value'))
35
36
    assert src.get_value(data) == test_value
37
    assert src.__repr__() == f"Name: '{src.name}' | " \
38
                             f"percentage: {src.percentage} | " \
39
                             f"source: '{src.source.name}'"
40
41
42
def test_random_int_source():
43
    max_test_value = 120
44
    min_test_value = 12
45
46
    # Test random source without explicit seed
47
    src = RandomIntSource(min_test_value, max_test_value)
48
    assert min_test_value <= src.get_value() <= max_test_value
49
50
    # Test random source with explicit seed
51
    src = RandomIntSource(min_test_value, max_test_value, 12345)
52
    assert min_test_value <= src.get_value() <= max_test_value
53
54
    # Check the name
55
    assert src.__repr__() == f"Name: '{src.name}' | " \
56
                             f"min_value: {src.min_value} | " \
57
                             f"max_value: {src.max_value} | " \
58
                             f"seed: {src.seed}"
59