def test_jsonvars(self): sh = MockSmartHome() conf = {'type': 'num', 'eval': '2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') item.set('42') self.assertDictEqual(item.jsonvars(),{'attributes': {}, 'value': 42, 'type': 'num', 'children': [], 'id': 'test_item01', 'name': 'test_item01'})
def test_last_prev_change(self): import datetime import time sh = MockSmartHome() conf = {'type': 'num'} #item = lib.item.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') item = self.create_item(config=conf, parent=sh, smarthome=sh, path='test_item01') sec1 = datetime.datetime.now().time().second self.assertEqual(sec1, item.last_change().time().second) time.sleep(2) item(12) self.assertEqual(datetime.datetime.now().time().second, item.last_change().time().second) self.assertEqual(sec1, item.prev_change().time().second) self.assertEqual(datetime.datetime.now().time().second, item.last_change().time().second) sec2 = datetime.datetime.now().time().second time.sleep(2) item(12) self.assertEqual(sec2, item.last_change().time().second) self.assertEqual(sec1, item.prev_change().time().second) sec3 = datetime.datetime.now().time().second item(23) self.assertEqual(sec3, item.last_change().time().second)
def test_fadejob(self): #(item, dest, step, delta): sh = MockSmartHome() conf = {'type': 'num', 'autotimer': '5m = 42 = compat_1.2'} #item = lib.item.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01' ) item = self.create_item(smarthome=sh, parent=sh, path='test_item01', config=conf) logger.warning("test_fadejob: item={}".format(item)) item(10) item._fading = True self.item_fadejob(item, 0, 5, 1) self.assertEqual(10, item._value) item._fading = False self.item_fadejob(item, 0, 5, 0.1) self.assertEqual(0, item._value) self.item_fadejob(item, 10, 5, 0.1) self.assertEqual(10, item._value) self.item_fadejob(item, 100, 200, 1) self.assertEqual(100, item._value)
def test_type(self): sh = MockSmartHome() conf = {'type': 'num', 'eval': '2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') self.assertEqual(item.type(), 'num') item._type= 'foo' self.assertNotEqual(item.type(), 'num') self.assertEqual(item.type(), 'foo')
def test_to_json(self): import json sh = MockSmartHome() conf = {'type': 'num', 'eval': '2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') item.set('42') expected = json.dumps({'attributes': {}, 'value': 42, 'type': 'num', 'children': [], 'id': 'test_item01', 'name': 'test_item01'}, sort_keys=True, indent=2) self.assertEqual(item.to_json(), expected)
def plugin(self): self.sh = MockSmartHome() self.sh.with_items_from(common.BASE + '/plugins/database/tests/test_items.conf') plugin = Database(self.sh, 'sqlite3', {'database': ':memory:'}) for item in self.sh.return_items(): plugin.parse_item(item) return plugin
class MockBackendServer(): _sh = MockSmartHome() def __init__(self): self._sh.with_items_from(common.BASE + "/tests/resources/blockly_items.conf") # HACK: Make tests work! Backend accesses private field _logic_dir # directly instead of using a method (the field was remove in the # meantime). Setting this just to make it work again. self._sh._logic_dir = common.BASE + "/tests/resources/"
def test_run_eval(self): sh = MockSmartHome() conf = {'type': 'num', 'eval': '2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') item._Item__run_eval() self.assertEqual(2,item()) item._eval = 'bla' item._Item__run_eval() item._eval = 'sh.return_none()' item._Item__run_eval()
def test_item_jsondump(self): sh = MockSmartHome() self.load_items('item_dumps', YAML_FILE) #logger.warning(self.sh.return_item("item1").to_json()) #logger.warning(self.sh.return_item("item3.item3b.item3b1").to_json()) #logger.warning(self.sh.return_item("item3").to_json()) import json self.assertEqual(json.loads(self.sh.items.return_item("item3").to_json())['name'], self.sh.items.return_item("item3")._name) self.assertEqual(json.loads(self.sh.items.return_item("item3").to_json())['id'], self.sh.items.return_item("item3")._path)
def test_module_is_registered1(self): logger.warning('') logger.warning('=== Begin Module Tests:') self.sh = MockSmartHome() self.modules = self.sh.with_modules_from(common.BASE + "/tests/resources/module") self.assertIsNotNone(self.sh.modules.get_module("dummy")) # Test module is not registered self.assertIsNone(self.sh.modules.get_module("dummyX")) # Test module ist not registered self.assertEqual(self.sh.modules.return_modules(),['dummy']) # Test modules loaded self.assertIsNone(self.sh.modules.get_module("faulty")) # Test module ist not registered logger.warning('=== End Module Tests')
def test_cast_duration(self): if verbose == True: logger.warning('') logger.warning('===== test_item_relative_references:') sh = MockSmartHome() conf = {'type': 'num', 'autotimer': '5m = 42 = compat_1.2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') self.assertEqual(300, item._cast_duration('5m')) self.assertEqual(23, item._cast_duration('23s')) self.assertEqual(42, item._cast_duration(42)) self.assertEqual(42, item._cast_duration('42')) self.assertFalse(item._cast_duration('aa')) self.assertFalse(item._cast_duration(None))
def test_prev_value(self): sh = MockSmartHome() conf = {'type': 'num'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') self.assertEqual(0,item.prev_value()) item(12) self.assertEqual(0, item.prev_value()) item(23) self.assertEqual(12, item.prev_value()) item(42) self.assertEqual(23, item.prev_value())
def test_set(self): if verbose == True: logger.warning('') logger.warning('===== test_set:') sh = MockSmartHome() conf = {'type': 'num', 'autotimer': '5m = 42 = compat_1.2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') item.set(12) self.assertEqual(12, item._value) item.set('13') self.assertEqual(13, item._value) self.assertIsNone(item.set('qwe')) self.assertEqual(13, item._value) item.set('14')
def test_call(self): if verbose == True: logger.warning('') logger.warning('===== test_call:') sh = MockSmartHome() conf = {'type': 'num', 'autotimer': '5m = 42 = compat_1.2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') item(12) self.assertEqual(12, item._value) self.assertEqual(12, item()) conf = {'type': 'num', 'eval': '2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01') item(12) self.assertEqual(0, item()) item.set(12) self.assertEqual(12, item())
def test_fadejob(self): #(item, dest, step, delta): sh = MockSmartHome() conf = {'type': 'num', 'autotimer': '5m = 42 = compat_1.2'} item = lib.item.Item(config=conf, parent=sh, smarthome=sh, path='test_item01' ) item(10) item._fading = True lib.item._fadejob(item, 0, 5, 1) self.assertEqual(10, item._value) item._fading = False lib.item._fadejob(item,0, 5, 0.1) self.assertEqual(0,item._value) lib.item._fadejob(item, 10, 5, 0.1) self.assertEqual(10, item._value) lib.item._fadejob(item, 100, 200, 1) self.assertEqual(100, item._value)
def setUp(self): self.sh = MockSmartHome() self.plugins = self.sh.with_plugins_from(common.BASE + "/tests/resources/plugin") self.item_conf = self.sh.with_items_from( common.BASE + "/tests/resources/plugin_items.conf")
def setUp(self): logger.warning('') self.sh = MockSmartHome() self._logics = Logics(self.sh, self.sh._logic_conf_basename, self.sh._env_logic_conf_basename) self.logics = Logics.get_instance()
def setUp(self): self.sh = MockSmartHome()
def test_meta_is_registered(self): logger.warning('') logger.warning('=== Begin Metadata Tests:') self.sh = MockSmartHome() self.meta = Metadata(self.sh, 'test_resources', 'module', 'tests.resources.test_metadata') print() print('self.meta: {}'.format(self.meta)) print() args = {} # (processed_args, allparams_ok) = self.meta.check_parameters(args) (processed_args, allparams_ok, hide_params) = self.meta.check_parameters(args) # Test default values for datatypes self.assertIsNone(processed_args.get('notype_nodefault', None)) self.assertEqual(False, processed_args['bool_nodefault']) self.assertEqual(0, processed_args['int_nodefault']) self.assertEqual(2, processed_args['int_validmin_nodefault']) self.assertEqual(-42, processed_args['int_validmax_nodefault']) self.assertEqual(0, processed_args['pint_nodefault']) self.assertEqual(0, processed_args['float_nodefault']) self.assertEqual(0, processed_args['pfloat_nodefault']) self.assertEqual('', processed_args['str_nodefault']) self.assertEqual('', processed_args['str_validlist_nodefault']) self.assertEqual([], processed_args['list_nodefault']) self.assertEqual({}, processed_args['dict_nodefault']) self.assertEqual('0.0.0.0', processed_args['ip_nodefault']) self.assertEqual('00:00:00:00:00:00', processed_args['mac_nodefault']) self.assertIsNone(processed_args['foo_nodefault']) # Test set default values for parameters self.assertEqual(42, processed_args['notype_default1']) self.assertEqual('42', processed_args['notype_default2']) self.assertEqual(True, processed_args['bool_default']) self.assertEqual(42, processed_args['int_default']) self.assertEqual(42, processed_args['pint_default']) self.assertEqual(4.2, processed_args['float_default']) self.assertEqual(4.2, processed_args['pfloat_default']) self.assertEqual('42', processed_args['str_default']) self.assertEqual('string2', processed_args['str_validlist_default']) self.assertEqual('string1', processed_args['str_validlist_invalid_default']) self.assertEqual([4,2], processed_args['list_default']) self.assertEqual({'answer': 42}, processed_args['dict_default']) self.assertEqual('127.0.0.1', processed_args['ip_default']) self.assertEqual('01:23:45:67:89:ab', processed_args['mac_default']) self.assertEqual(42, processed_args['foo_default']) args = { 'notype_nodefault': True, 'bool_nodefault': '42', 'int_nodefault': -24, 'pint_nodefault': 24, 'float_nodefault': -24.2, 'pfloat_nodefault': 24.3, 'str_nodefault': 'answer', 'str_validlist_nodefault': 'string2', 'str_validlist_default': 'x', 'str_validlist_invalid_default': 'string2', 'list_nodefault': [24,42], 'dict_nodefault': {'question': 24, 'answer': '42'}, 'ip_nodefault': '1.2.3.4', 'mac_nodefault': 'aa:ab:ac:ad:ae:af', 'foo_nodefault': [4, 2], 'notype_default1': '24', 'notype_default2': 24, 'bool_default': True, 'int_default': '-x', 'pint_default': -24, 'float_default': '-x', 'pfloat_default': -24.2, 'str_default': 25, 'list_default': "[24,'42', 4.2, '4.2']", 'dict_default': {24, '42'}, 'ip_default': '1.2.3.256', 'mac_default': 'aa:ab:ac:ad:ae:ag', 'foo_default': ['4', 2, [4, '2']] } # (processed_args, allparams_ok) = self.meta.check_parameters(args) (processed_args, allparams_ok, hide_params) = self.meta.check_parameters(args) logger.warning("\n=== processed_args: {}".format(processed_args)) logger.warning("\n=== allparams_ok: {}".format(allparams_ok)) logger.warning("\n=== hide_params: {}\n".format(hide_params)) # Test valid parameter configurations #self.assertEqual(True, processed_args.get('notype_nodefault', None)) self.assertEqual(False, processed_args['bool_nodefault']) self.assertEqual(-24, processed_args['int_nodefault']) self.assertEqual(24, processed_args['pint_nodefault']) self.assertEqual(-24.2, processed_args['float_nodefault']) self.assertEqual(24.3, processed_args['pfloat_nodefault']) self.assertEqual('answer', processed_args['str_nodefault']) self.assertEqual('string2', processed_args['str_validlist_nodefault']) self.assertEqual([24,42], processed_args['list_nodefault']) self.assertEqual({'question': 24, 'answer': '42'}, processed_args['dict_nodefault']) self.assertEqual('1.2.3.4', processed_args['ip_nodefault']) self.assertEqual('aa:ab:ac:ad:ae:af', processed_args['mac_nodefault']) self.assertEqual([4, 2], processed_args['foo_nodefault']) # Test invalid parameter configurations self.assertEqual('24', processed_args['notype_default1']) self.assertEqual(24, processed_args['notype_default2']) self.assertTrue(processed_args['bool_default']) self.assertEqual(42, processed_args['int_default']) # default value taken (42 instead of '-x') self.assertEqual(0, processed_args['pint_default']) # valid_min value taken, not default value (0 instead of -24) self.assertEqual(4.2, processed_args['float_default']) # default value taken (42 instead of '-x') self.assertEqual(0, processed_args['pfloat_default']) # valid_min value taken, not default value (0 instead of -24) self.assertEqual('25', processed_args['str_default']) # default value not taken, because 25 can be converted to '25' self.assertEqual('string1', processed_args['str_validlist_default']) # default value taken ('string1' instead of 'x') self.assertEqual('string2', processed_args['str_validlist_invalid_default']) self.assertEqual([24,'42', 4.2, '4.2'], processed_args['list_default']) # Test list with mixed datatypes self.assertEqual({'answer': 42}, processed_args['dict_default']) # default value taken ({'answer': 42} instead of invalid dict {24, '42'}) self.assertEqual('127.0.0.1', processed_args['ip_default']) # default value taken ('127.0.0.1' instead of invalid ip '1.2.3.256') self.assertEqual('01:23:45:67:89:ab', processed_args['mac_default']) # default value taken (instead of invalid mac 'aa:ab:ac:ad:ae:ag') self.assertEqual(['4', 2, [4, '2']], processed_args['foo_default']) # accepts any data (no default is taken, if a value is specified) logger.warning('=== End metadata Tests')