Passed
Push — master ( 5304dc...5eaab6 )
by Guibert
02:41
created

tests.protocol.test_ensure_observable_contract_operator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 51
dl 0
loc 76
rs 10
c 0
b 0
f 0
1
import pytest
2
3
from async_rx.protocol import ensure_observable_contract_operator
4
5
from ..model import ObserverCounter
6
7
8
def test_ensure_observable_contract_operator_nothing_is_call_after_complete(kernel):
9
10
    obs = ObserverCounter()
11
12
    enforced_observer = ensure_observable_contract_operator(obs)
13
14
    assert obs.on_next_count == 0
15
    assert obs.on_completed_count == 0
16
    assert obs.on_error_count == 0
17
18
    kernel.run(enforced_observer.on_next("a"))
19
    kernel.run(enforced_observer.on_next("a"))
20
    kernel.run(enforced_observer.on_next("a"))
21
22
    assert obs.on_next_count == 3
23
    assert obs.on_completed_count == 0
24
    assert obs.on_error_count == 0
25
26
    kernel.run(enforced_observer.on_completed())
27
28
    assert obs.on_next_count == 3
29
    assert obs.on_completed_count == 1
30
    assert obs.on_error_count == 0
31
32
    # next locked
33
    kernel.run(enforced_observer.on_next("a"))
34
    assert obs.on_next_count == 3
35
    assert obs.on_completed_count == 1
36
    assert obs.on_error_count == 0
37
38
    # on_error locked
39
    kernel.run(enforced_observer.on_error("ouch"))
40
    assert obs.on_next_count == 3
41
    assert obs.on_completed_count == 1
42
    assert obs.on_error_count == 0
43
44
45
def test_ensure_observable_contract_operator_nothing_is_call_after_error(kernel):
46
47
    obs = ObserverCounter()
48
49
    enforced_observer = ensure_observable_contract_operator(obs)
50
51
    assert obs.on_next_count == 0
52
    assert obs.on_completed_count == 0
53
    assert obs.on_error_count == 0
54
55
    kernel.run(enforced_observer.on_next("a"))
56
    assert obs.on_next_count == 1
57
    assert obs.on_completed_count == 0
58
    assert obs.on_error_count == 0
59
60
    with pytest.raises(Exception):
61
        kernel.run(enforced_observer.on_error("ouch"))
62
63
    assert obs.on_next_count == 1
64
    assert obs.on_completed_count == 0
65
    assert obs.on_error_count == 1
66
67
    kernel.run(enforced_observer.on_next("a"))
68
    assert obs.on_next_count == 1
69
    assert obs.on_completed_count == 0
70
    assert obs.on_error_count == 1
71
72
    kernel.run(enforced_observer.on_completed())
73
    assert obs.on_next_count == 1
74
    assert obs.on_completed_count == 0
75
    assert obs.on_error_count == 1
76