mirror of
https://github.com/jlengrand/Observer.git
synced 2026-03-10 08:31:23 +00:00
Adds tests for Observable and subscribe methods.
Complete tests for Observer and Observable
This commit is contained in:
25
Observer.py
25
Observer.py
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user