Passed
Pull Request — dev (#32)
by Konstantinos
22:13 queued 01:54
created

test_command_registrator()   A

Complexity

Conditions 1

Size

Total Lines 41
Code Lines 36

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 36
nop 2
dl 0
loc 41
rs 9.016
c 0
b 0
f 0
1
import pytest
2
3
4
@pytest.fixture
5
def command_registrator():
6
    from so_magic.data.backend.backend import CommandRegistrator
7
    return CommandRegistrator
8
9
10
def test_command_registrator(assert_different_objects, command_registrator):
11
    class A(metaclass=command_registrator): pass
12
    class B(metaclass=command_registrator): pass
13
    class C(B): pass
14
    class D(B): pass
15
    classes = (A, B, C, D)
16
17
    assert all([hasattr(x, 'registry') for x in classes])
18
    assert all([type(x) == command_registrator for x in classes])
19
    assert all([hasattr(x, 'state') for x in classes])
20
    assert_different_objects([A.registry, B.registry, C.registry, D.registry])
21
22
    A.state = 1
23
    B.state = 2
24
    C.state = 3
25
    D.state = 4
26
    assert_different_objects([A.state, B.state, C.state, D.state])
27
28
    A.registry['a'] = 1
29
    B.registry['b'] = 2
30
    C.registry['c'] = 3
31
    D.registry['d'] = 4
32
    assert B.registry != A.registry != C.registry != D.registry
33
34
    assert A.__getitem__('a') == 1
35
    assert B.__getitem__('b') == 2
36
    assert C.__getitem__('c') == 3
37
    assert D.__getitem__('d') == 4
38
    assert 'b' not in C.registry
39
    assert 'c' not in B.registry
40
    assert 'c' not in D.registry
41
    assert 'd' not in C.registry
42
    assert A['a'] == 1
43
    assert B['b'] == 2
44
    assert C['c'] == 3
45
    assert D['d'] == 4
46
47
    class P1(command_registrator): pass
48
    assert type(P1) == type
49
    assert not hasattr(P1, 'state')
50
    assert not hasattr(P1, 'state')
51
52
53
def test_wrong_command_registrator_usage(command_registrator):
54
    class P1(command_registrator): pass
55
    assert type(P1) == type
56
    assert not hasattr(P1, 'state')
57
    assert not hasattr(P1, 'state')
58