Skip to content

Commit 6fa00c5

Browse files
committed
Tests for state patt. can be run in random order
1 parent 1859623 commit 6fa00c5

File tree

1 file changed

+21
-51
lines changed

1 file changed

+21
-51
lines changed

tests/behavioral/test_state.py

Lines changed: 21 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,24 @@
1-
import unittest
1+
import pytest
2+
23
from patterns.behavioral.state import Radio
34

45

5-
class RadioTest(unittest.TestCase):
6-
"""
7-
Attention: Test case results depend on test case execution. The test cases
8-
in this integration test class should be executed in an explicit order:
9-
http://stackoverflow.com/questions/5387299/python-unittest-testcase-execution-order
10-
"""
11-
12-
@classmethod
13-
def setUpClass(self):
14-
self.radio = Radio()
15-
16-
def test_initial_state(self):
17-
state = self.radio.state.name
18-
expected_state_name = 'AM'
19-
self.assertEqual(state, expected_state_name)
20-
21-
def test_initial_am_station(self):
22-
station = self.radio.state.stations[self.radio.state.pos]
23-
expected_station = '1250'
24-
self.assertEqual(station, expected_station)
25-
26-
def test_2nd_am_station_after_scan(self):
27-
self.radio.scan()
28-
station = self.radio.state.stations[self.radio.state.pos]
29-
expected_station = '1380'
30-
self.assertEqual(station, expected_station)
31-
32-
def test_3rd_am_station_after_scan(self):
33-
self.radio.scan()
34-
station = self.radio.state.stations[self.radio.state.pos]
35-
expected_station = '1510'
36-
self.assertEqual(station, expected_station)
37-
38-
def test_am_station_overflow_after_scan(self):
39-
self.radio.scan()
40-
station = self.radio.state.stations[self.radio.state.pos]
41-
expected_station = '1250'
42-
self.assertEqual(station, expected_station)
43-
44-
def test_shall_toggle_from_am_to_fm(self):
45-
self.radio.toggle_amfm()
46-
state = self.radio.state.name
47-
expected_state_name = 'FM'
48-
self.assertEqual(state, expected_state_name)
49-
50-
def test_shall_toggle_from_fm_to_am(self):
51-
self.radio.toggle_amfm()
52-
state = self.radio.state.name
53-
expected_state_name = 'AM'
54-
self.assertEqual(state, expected_state_name)
6+
@pytest.fixture
7+
def radio():
8+
return Radio()
9+
10+
def test_initial_state(radio):
11+
assert radio.state.name == 'AM'
12+
13+
def test_initial_am_station(radio):
14+
initial_pos = radio.state.pos
15+
assert radio.state.stations[initial_pos] == '1250'
16+
17+
def test_toggle_amfm(radio):
18+
assert radio.state.name == 'AM'
19+
20+
radio.toggle_amfm()
21+
assert radio.state.name == 'FM'
22+
23+
radio.toggle_amfm()
24+
assert radio.state.name == 'AM'

0 commit comments

Comments
 (0)