mirror of
https://github.com/jlengrand/Observer.git
synced 2026-03-10 08:31:23 +00:00
Moves json_validation to utility class
Allows to use it in Observer also. Ma also be the way to get joined values, like for json keys
This commit is contained in:
16
Observer.py
16
Observer.py
@@ -26,6 +26,7 @@ Simply copy/paste this file and import Observer to start using it.
|
||||
import json
|
||||
from StringIO import StringIO
|
||||
|
||||
|
||||
class Observer():
|
||||
"""
|
||||
Implements Observer entity from Observer pattern.
|
||||
@@ -115,15 +116,22 @@ 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.is_json_valid(val)
|
||||
ut = ObsUtility()
|
||||
if ut.is_json_valid(val):
|
||||
self.message = val
|
||||
self.__notify(self.message)
|
||||
else:
|
||||
raise TypeError("Expecting a valid JSon Object")
|
||||
|
||||
self.message = val
|
||||
self.__notify(self.message)
|
||||
|
||||
|
||||
class ObsUtility():
|
||||
# JSON Stuff
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def is_json_valid(self, val):
|
||||
"""
|
||||
Returns True if val is a valid JSon Object.
|
||||
|
||||
@@ -34,6 +34,8 @@ class TestObserver(unittest.TestCase):
|
||||
"""
|
||||
Method called before each test
|
||||
"""
|
||||
self.ut = obs.ObsUtility()
|
||||
|
||||
self.myObservable = obs.Observable()
|
||||
|
||||
self.default_mess = "message"
|
||||
@@ -70,46 +72,42 @@ class TestObserver(unittest.TestCase):
|
||||
|
||||
## Observable
|
||||
def testIsJsonValid(self):
|
||||
self.assertEquals(True, self.myObservable.is_json_valid('{"name": "Bob","group": "","type": "","data": 42}'))
|
||||
self.assertEquals(False, self.myObservable.is_json_valid('{"namee": "Bob","group": "","type": "","data": 42}'))
|
||||
self.assertEquals(False, self.myObservable.is_json_valid('{"name": "Bob","group": "","type": ""}'))
|
||||
|
||||
self.assertEquals(False, self.myObservable.is_json_valid('{"name": "Bob","group": "","type": "","data": 42, "last":"weekend"}'))
|
||||
self.assertEquals(True, self.ut.is_json_valid('{"name": "Bob","group": "","type": "","data": 42}'))
|
||||
self.assertEquals(False, self.ut.is_json_valid('{"namee": "Bob","group": "","type": "","data": 42}'))
|
||||
self.assertEquals(False, self.ut.is_json_valid('{"name": "Bob","group": "","type": ""}'))
|
||||
|
||||
self.assertEquals(False, self.ut.is_json_valid('{"name": "Bob","group": "","type": "","data": 42, "last":"weekend"}'))
|
||||
|
||||
def testObservable(self):
|
||||
pass
|
||||
#self.assertRaises(TypeError, lambda: self.myObservable.set_val('{"name": "Bob","group": "","type": "","data": 42}'))
|
||||
#self.myObservable.set_val('{"name": "Bob","group": "","type": "","data": 42}')
|
||||
self.assertRaises(TypeError, lambda: self.myObservable.set_val('{"group": "","type": "","data": 42}'))
|
||||
self.assertRaises(TypeError, lambda: self.myObservable.set_val('{"c": 0, "b": 0, "a": 0}'))
|
||||
|
||||
#self.assertRaises(TypeError, lambda: self.myObservable.set_val('{"c": 0, "b": 0, "a": 0}'))
|
||||
self.assertRaises(TypeError, lambda: self.myObservable.set_val(42))
|
||||
self.assertRaises(TypeError, lambda: self.myObservable.set_val(None))
|
||||
|
||||
# self.assertRaises(TypeError, lambda: self.myObservable.set_val(42))
|
||||
# self.assertRaises(TypeError, lambda: self.myObservable.set_val(None))
|
||||
val = '{"name": "Bob","group": "","type": "","data": 42}'
|
||||
self.myObservable.set_val(val)
|
||||
self.assertEquals(val, self.myObservable.message)
|
||||
|
||||
# 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))
|
||||
|
||||
# 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)
|
||||
|
||||
# self.myObservable.subscribe(self.myObserver1)
|
||||
# self.assertRaises(ValueError, lambda: self.myObservable.subscribe(self.myObserver1)) # already there
|
||||
# self.myObservable.subscribe(self.myObserver2)
|
||||
self.assertEquals(len(self.myObservable.obs_collection), 2)
|
||||
|
||||
# self.assertEquals(len(self.myObservable.obs_collection), 2)
|
||||
def testUnsubscribe(self):
|
||||
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)
|
||||
|
||||
# def testUnsubscribe(self):
|
||||
# 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"))
|
||||
self.assertRaises(ValueError, lambda: self.myObservable.unsubscribe(self.myObserver1)) # already removed
|
||||
self.assertRaises(TypeError, lambda: self.myObservable.unsubscribe("Georges"))
|
||||
|
||||
# def testNotify(self):
|
||||
# self.myObservable.subscribe(self.myObserver1)
|
||||
|
||||
Reference in New Issue
Block a user