diff --git a/Observer.py b/Observer.py index dc40dd3..5ce4888 100644 --- a/Observer.py +++ b/Observer.py @@ -95,16 +95,9 @@ class Observable(): if not isinstance(observer, Observer): raise TypeError("Unsubscriber must be Observer") - try: - if observer in self.obs_collection: - self.obs_collection.remove(observer) - #print "%s removed from collection" % (str(observer)) - else: - pass - #print "%s not in collection" % (str(observer)) - - except TypeError: - print "Failed to remove %s" % (str(observer)) + if not(observer in self.obs_collection): + raise ValueError("Observer not subscribed") + self.obs_collection.remove(observer) def __notify(self, mess): """ diff --git a/testObserver.py b/testObserver.py index b65359e..78573d4 100644 --- a/testObserver.py +++ b/testObserver.py @@ -86,14 +86,17 @@ class TestObserver(unittest.TestCase): self.assertEquals(len(self.myObservable.obs_collection), 2) def testUnsubscribe(self): - pass + self.myObservable.subscribe(self.myObserver1) + self.myObservable.subscribe(self.myObserver2) + self.assertEquals(len(self.myObservable.obs_collection), 2) + self.myObservable.unsubscribe(self.myObserver1) + self.assertEquals(len(self.myObservable.obs_collection), 1) + + self.assertRaises(ValueError, lambda: self.myObservable.unsubscribe(self.myObserver1)) # already removed + self.assertRaises(TypeError, lambda: self.myObservable.unsubscribe("Georges")) def testNotify(self): pass - def testNameUnicity(self): - pass - - if __name__ == '__main__': unittest.main() \ No newline at end of file