Passed
Push — dev ( 71cb7d...bee5ed )
by Konstantinos
01:36
created

test_so_magic.test_somagic_scenario()   A

Complexity

Conditions 2

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 10
rs 10
c 0
b 0
f 0
cc 2
nop 3
1
import pytest
2
3
4
@pytest.mark.parametrize('train_args', [
5
    ([10, 10, 'toroid', 'hexagonal']),
6
    # ([12, 12, 'toroid', 'rectangular'])
7
])
8
def test_somagic_scenario(train_args, somagic, sample_collaped_json):
9
    somagic.load_data(sample_collaped_json, id='test_data')
10
    if not getattr(somagic.dataset, 'feature_vectors', None):
11
        cmd = somagic._data_manager.command.select_variables
12
        cmd.args = [['type', 'flavours']]
13
        cmd.execute()
14
        #
15
        # cmd = somagic._data_manager.command.encode_nominal_scalar
16
        # cmd.args = ['type']
17
        # cmd.execute()
18
19
        # cmd = somagic._dataset_manager.command.select_variables
20
        # cmd.args = ['type', 'flavours']
21
        # cmd.execute()
22
    # som = somagic.map.train(*train_args[:2])
23
    #
24
    # attrs = ('height', 'width', 'type', 'grid_type')
25
    #
26
    # assert all(hasattr(som.som, x) for x in attrs)
27
28
29
@pytest.mark.parametrize('nb_objects, nb_observers', [
30
    (2, [(1, 1, 1),
31
         (1, 1, 1)]),
32
])
33
def test_somagic_objects(nb_objects, nb_observers):
34
    from green_magic import init_so_magic
35
    so_magic_instances = [init_so_magic() for _ in range(nb_objects)]
36
37
    assert id(so_magic_instances[0]._data_manager.backend) != id(so_magic_instances[1]._data_manager.backend)
38
    assert id(so_magic_instances[0]._data_manager.backend.engine) != id(so_magic_instances[1]._data_manager.backend.engine)
39
    assert id(so_magic_instances[0]._data_manager.backend.datapoints_manager) != id(so_magic_instances[1]._data_manager.backend.datapoints_manager)
40
41
    assert id(so_magic_instances[0]._data_manager.backend.datapoints_factory) != id(so_magic_instances[1]._data_manager.backend.datapoints_factory)
42
    assert id(so_magic_instances[0]._data_manager.backend.datapoints_factory.subject) != id(so_magic_instances[1]._data_manager.backend.datapoints_factory.subject)
43
    assert id(so_magic_instances[0]._data_manager.backend.datapoints_factory.subject._observers) != id(so_magic_instances[1]._data_manager.backend.datapoints_factory.subject._observers)
44
45
    assert id(so_magic_instances[0]._data_manager.backend.engine.command_factory) != id(so_magic_instances[1]._data_manager.backend.engine.command_factory)
46
47
    assert so_magic_instances[0]._data_manager.phi_class != so_magic_instances[1]._data_manager.phi_class
48
    assert id(so_magic_instances[0]._data_manager.phi_class) != id(so_magic_instances[1]._data_manager.phi_class)
49
    assert id(so_magic_instances[0]._data_manager.phi_class.subject) != id(so_magic_instances[1]._data_manager.phi_class.subject)
50
    assert id(so_magic_instances[0]._data_manager.phi_class.subject._observers) != id(so_magic_instances[1]._data_manager.phi_class.subject._observers)
51
52
    for i, s in enumerate(so_magic_instances):
53
        datapoints_fact = s._data_manager.backend.datapoints_factory
54
        cmd_fact = s._data_manager.backend.engine.command_factory
55
        phi_class = s._data_manager.phi_class
56
57
        subjects = [datapoints_fact.subject,
58
                    cmd_fact,
59
                    phi_class.subject
60
                    ]
61
        assert len(set([id(x._observers) for x in subjects])) == len(subjects)
62
63
        assert datapoints_fact.subject._observers[0] == s._data_manager.backend.datapoints_manager
64
        assert cmd_fact._observers[0] == s._data_manager.commands_manager.command.accumulator
65
        assert phi_class.subject._observers[0] == s._data_manager.built_phis
66
        assert all([len(subject._observers) == column for subject, column in zip(subjects, nb_observers[i])])
67