def test_observation(self): def ResetAll(obs): for obPair in obs: for ob in obPair: ob.Reset() return def CheckObservers(observers, pattern): for obPair, shouldChange in itertools.izip(observers, pattern): if shouldChange: for ob in obPair: assert ob.CallTime is not None assert obPair[0].CallTime < obPair[1].CallTime else: for ob in obPair: assert ob.CallTime is None return lst = ObservableList() observers = self.MakeListObservers(lst) # Add an elem lst.append(Circle(4)) CheckObservers(observers, (True, False, False, True)) # Replace one ResetAll(observers) lst[0] = 18 CheckObservers(observers, (False, False, True, False)) # Delete one ResetAll(observers) del lst[0] CheckObservers(observers, (False, True, False, True)) return