Adds tests for Observable and subscribe methods.

Complete tests for Observer and Observable
This commit is contained in:
2012-10-24 18:32:22 +02:00
parent f856e2e9fc
commit f446f5df6f
2 changed files with 28 additions and 45 deletions

View File

@@ -81,21 +81,20 @@ class Observable():
Adds observer to notification list.
"""
# FIXME: Check name unique
try:
if not(observer in self.obs_collection):
self.obs_collection.append(observer)
#print "%s added to collection" % (str(observer))
else:
pass
#print "%s already in collection" % (str(observer))
if not isinstance(observer, Observer):
raise TypeError("Subscriber must be Observer")
except TypeError:
print "Failed to add %s" % (str(observer))
if (observer in self.obs_collection):
raise ValueError("Observer already subscribed")
self.obs_collection.append(observer)
def unsubscribe(self, observer):
"""
Removes observer from notification list.
"""
if not isinstance(observer, Observer):
raise TypeError("Unsubscriber must be Observer")
try:
if observer in self.obs_collection:
self.obs_collection.remove(observer)
@@ -107,7 +106,7 @@ class Observable():
except TypeError:
print "Failed to remove %s" % (str(observer))
def notify(self, mess):
def __notify(self, mess):
"""
Sends notification message to all subscribed observer
"""
@@ -120,6 +119,8 @@ class Observable():
Shall be used for automatic polling.
Sets current Observable value and notifies update to subscribers.
"""
if not isinstance(val, str):
raise TypeError("Expected string for message")
self.message = val
if val != None:
self.notify(self.message)
self.__notify(self.message)

View File

@@ -59,7 +59,7 @@ class TestObserver(unittest.TestCase):
self.assertEquals(str(self.myObserver1), self.name1)
self.assertRaises(TypeError, lambda: obs.Observer(42))
# tests message
# tests message and update
self.assertEquals(self.myObserver1.message, self.default_mess)
new_message = "new_message"
self.myObserver1.update(new_message)
@@ -67,13 +67,23 @@ class TestObserver(unittest.TestCase):
self.assertRaises(TypeError, lambda: self.myObserver1.update([4, 2]))
self.assertRaises(TypeError, lambda: self.myObserver1.update(None))
def testObservable(self):
self.assertRaises(TypeError, lambda: self.myObservable.set_val(42))
self.assertRaises(TypeError, lambda: self.myObservable.set_val(None))
val = "luke"
self.myObservable.set_val(val)
self.assertEquals(val, self.myObservable.message)
def testSubscribe(self):
self.assertEquals(len(self.myObservable.obs_collection), 0)
self.assertRaises(TypeError, lambda: self.myObservable.subscribe(42))
self.myObservable.subscribe(self.myObserver1)
self.assertRaises(ValueError, lambda: self.myObservable.subscribe(self.myObserver1)) # already there
self.myObservable.subscribe(self.myObserver2)
pass
self.assertEquals(len(self.myObservable.obs_collection), 2)
def testUnsubscribe(self):
pass
@@ -85,33 +95,5 @@ class TestObserver(unittest.TestCase):
pass
if __name__ == '__main__':
unittest.main()
# a = Observer("riri")
# b = Observer("fifi")
# c = Observer("loulou")
# d = Observable()
# d.subscribe(a)
# d.subscribe(b)
# d.subscribe(b)
# d.subscribe(c)
# d.unsubscribe(b)
# d.set_val(3)
# d.set_val()
unittest.main()