-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.py
More file actions
65 lines (54 loc) · 1.89 KB
/
tests.py
File metadata and controls
65 lines (54 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import pytest
from unittest.mock import Mock
from MVC import Model
@pytest.fixture
def mock_observer():
return Mock()
def test_initialization():
model = Model()
assert model.coordinates == []
def test_add_coordinate():
model = Model()
model.add_coordinate(1, 2)
assert model.coordinates == [(1, 2)]
def test_add_multiple_coordinates():
model = Model()
model.add_coordinate(1, 2)
model.add_coordinate(3, 4)
assert model.coordinates == [(1, 2), (3, 4)]
def test_register_observer(mock_observer):
model = Model()
model.register_observer(mock_observer)
assert mock_observer in model.observers
def test_notify_observers(mock_observer):
model = Model()
model.register_observer(mock_observer)
model.add_coordinate(1, 2)
mock_observer.update_view.assert_called_once_with([(1, 2)])
def test_generate_plan(): #we do not use this generate_plan function, so easy free test
model = Model()
model.add_coordinate(1, 2)
model.add_coordinate(3, 4)
assert model.generate_plan() == None
def test_generate_plan_empty(): #consistency
model = Model()
assert model.generate_plan() == None
def test_notify_observers_empty(mock_observer):
model = Model()
model.register_observer(mock_observer)
model.notify_observers()
mock_observer.update_view.assert_called_once_with([])
def test_add_same_coordinate(): #you are allowed to add the same coordinate as many times as you want
model = Model()
model.add_coordinate(1, 2)
model.add_coordinate(1, 2)
assert model.coordinates == [(1, 2), (1, 2)]
def test_notify_multiple_observers():
model = Model()
observer1 = Mock()
observer2 = Mock()
model.register_observer(observer1)
model.register_observer(observer2)
model.add_coordinate(1, 2)
observer1.update_view.assert_called_once_with([(1, 2)])
observer2.update_view.assert_called_once_with([(1, 2)])