예제 #1
0
class TestSubject(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.s = Subject()
        self.dec_obs = DecimalViewer()
        self.hex_obs = HexViewer()

    def test_a_observer_list_shall_be_empty_initially(self):
        self.assertEqual(len(self.s._observers), 0)

    def test_b_observers_shall_be_attachable(self):
        self.s.attach(self.dec_obs)
        self.assertEqual(isinstance(self.s._observers[0], DecimalViewer), True)
        self.assertEqual(len(self.s._observers), 1)
        self.s.attach(self.hex_obs)
        self.assertEqual(isinstance(self.s._observers[1], HexViewer), True)
        self.assertEqual(len(self.s._observers), 2)

    def test_c_observers_shall_be_detachable(self):
        self.s.detach(self.dec_obs)
        # hex viewer shall be remaining if dec viewer is detached first
        self.assertEqual(isinstance(self.s._observers[0], HexViewer), True)
        self.assertEqual(len(self.s._observers), 1)
        self.s.detach(self.hex_obs)
        self.assertEqual(len(self.s._observers), 0)
예제 #2
0
class TestSubject(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        self.s = Subject()
        self.dec_obs = DecimalViewer()
        self.hex_obs = HexViewer()

    def test_a_observer_list_shall_be_empty_initially(self):
        self.assertEqual(len(self.s._observers), 0)

    def test_b_observers_shall_be_attachable(self):
        self.s.attach(self.dec_obs)
        self.assertEqual(isinstance(self.s._observers[0], DecimalViewer), True)
        self.assertEqual(len(self.s._observers), 1)
        self.s.attach(self.hex_obs)
        self.assertEqual(isinstance(self.s._observers[1], HexViewer), True)
        self.assertEqual(len(self.s._observers), 2)

    def test_c_observers_shall_be_detachable(self):
        self.s.detach(self.dec_obs)
        # hex viewer shall be remaining if dec viewer is detached first
        self.assertEqual(isinstance(self.s._observers[0], HexViewer), True)
        self.assertEqual(len(self.s._observers), 1)
        self.s.detach(self.hex_obs)
        self.assertEqual(len(self.s._observers), 0)
예제 #3
0
 def detach(self, observer, index=None):
     if (observer):
         Subject.detach(self, observer)
         for i in range(len(self.observers)):
             if (observer == self.observers[i]):
                 self.simulations.pop(i)
         return
     self.simulations.pop(self.observers[index])
     self.observers.pop(index)
     print('Detached; ', (self.observers))