text: #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  import unittest
  from patterns.behavioral.state import Radio
  
  
  class RadioTest(unittest.TestCase):
      """
      Attention: Test case results depend on test case execution. The test cases
      in this integration test class should be executed in an explicit order:
      http://stackoverflow.com/questions/5387299/python-unittest-testcase-execution-order
      """
  
      @classmethod
      def setUpClass(self):
          self.radio = Radio()
  
      def test_initial_state(self):
          state = self.radio.state.name
          expected_state_name = 'AM'
          self.assertEqual(state, expected_state_name)
  
      def test_initial_am_station(self):
          station = self.radio.state.stations[self.radio.state.pos]
          expected_station = '1250'
          self.assertEqual(station, expected_station)
  
      def test_2nd_am_station_after_scan(self):
          self.radio.scan()
          station = self.radio.state.stations[self.radio.state.pos]
          expected_station = '1380'
          self.assertEqual(station, expected_station)
  
      def test_3rd_am_station_after_scan(self):
          self.radio.scan()
          station = self.radio.state.stations[self.radio.state.pos]
          expected_station = '1510'
          self.assertEqual(station, expected_station)
  
      def test_am_station_overflow_after_scan(self):
          self.radio.scan()
          station = self.radio.state.stations[self.radio.state.pos]
          expected_station = '1250'
          self.assertEqual(station, expected_station)
  
      def test_shall_toggle_from_am_to_fm(self):
          self.radio.toggle_amfm()
          state = self.radio.state.name
          expected_state_name = 'FM'
          self.assertEqual(state, expected_state_name)
  
      def test_shall_toggle_from_fm_to_am(self):
          self.radio.toggle_amfm()
          state = self.radio.state.name
          expected_state_name = 'AM'
          self.assertEqual(state, expected_state_name)
  