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:
2012-10-26 15:17:08 +02:00
parent 0eefe04c7b
commit aff08b4473
2 changed files with 40 additions and 34 deletions

View File

@@ -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.

View File

@@ -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)