From aff08b447310f73dc11aec658c52da80689a055b Mon Sep 17 00:00:00 2001 From: Julien Lengrand-Lambert Date: Fri, 26 Oct 2012 15:17:08 +0200 Subject: [PATCH] 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 --- Observer.py | 16 ++++++++++---- testObserver.py | 58 ++++++++++++++++++++++++------------------------- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/Observer.py b/Observer.py index 2b3f062..51c8687 100644 --- a/Observer.py +++ b/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. diff --git a/testObserver.py b/testObserver.py index fe9b1af..6182298 100644 --- a/testObserver.py +++ b/testObserver.py @@ -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)