test_so_magic.test_somagic_objects()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 6
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
nop 2
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
import pytest
2
3
4
@pytest.mark.parametrize('train_args', [
5
    ([6, 8, 'toroid', 'hexagonal']),
6
    # ([12, 12, 'toroid', 'rectangular'])
7
])
8
def test_somagic_scenario(train_args, somagic, test_dataset, sample_collaped_json):
9
    attrs = ('width', 'height', 'type', 'grid_type')
10
    som = somagic.map.train(*train_args[:2], maptype=train_args[2], gridtype=train_args[3])
11
    assert som.dataset_name == sample_collaped_json
12
    assert all(parameter == getattr(som, attribute) for attribute, parameter in zip(attrs, train_args))
13
14
15
@pytest.fixture
16
def objects_to_test():
17
    def get_objects_to_test(so_master):
18
        return {
19
            'dtps_fct': so_master._data_manager.engine.backend.datapoints_factory,
20
            'cmd_fct': so_master._data_manager.engine.backend.command_factory,
21
            'phi_class': so_master._data_manager.phi_class,
22
            'rest': (
23
                so_master,
24
                so_master._data_manager,
25
                so_master._data_manager.engine,
26
                so_master._data_manager.engine.backend,
27
                so_master._data_manager.engine.datapoints_manager,
28
                so_master._data_manager.engine.backend.datapoints_factory.subject,
29
                so_master._data_manager.engine.backend.datapoints_factory.subject._observers,
30
                so_master._data_manager.phi_class.subject,
31
                so_master._data_manager.phi_class.subject._observers,
32
            )
33
        }
34
    return get_objects_to_test
35
36
37
@pytest.fixture(params=[[2]])
38
def so_magic_instances(request, objects_to_test):
39
    from so_magic import init_so_magic
40
    return [(i, objects_to_test(i)) for i in iter([init_so_magic() for _ in range(request.param[0])])]
41
42
43
def test_somagic_objects(so_magic_instances, assert_different_objects):
44
    from functools import reduce
45
    assert_different_objects(reduce(lambda i, j: i + j,
46
                                    ([x[1]['dtps_fct'], x[1]['cmd_fct'], x[1]['phi_class']] + list(x[1]['rest'])
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable x does not seem to be defined.
Loading history...
47
                                     for x in so_magic_instances)))
48
    assert so_magic_instances[0][1]['phi_class'] != so_magic_instances[1][1]['phi_class']
49
50
51
def test_subscriptions(so_magic_instances):
52
    s = so_magic_instances[0]
53
    nb_observers = (1, 1, 1)
54
55
    assert s[1]['dtps_fct'].subject._observers[0] == s[0]._data_manager.engine.datapoints_manager
56
    assert s[1]['cmd_fct'].subject._observers[0] == s[0]._data_manager.commands_manager.command.accumulator
57
    assert s[1]['phi_class'].subject._observers[0] == s[0]._data_manager.built_phis
58
    assert all([len(subject._observers) == obs for subject, obs in zip(
59
        (s[1]['dtps_fct'].subject, s[1]['cmd_fct'].subject, s[1]['phi_class'].subject), nb_observers)])
60