示例#1
0
    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'})
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
 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')
示例#5
0
 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)
示例#6
0
文件: base.py 项目: zwopi/plugins
 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
示例#7
0
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/"
示例#8
0
 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()
示例#9
0
    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)
示例#10
0
    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')
示例#11
0
 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))
示例#12
0
    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())
示例#13
0
    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')
示例#14
0
 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())
示例#15
0
    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)
示例#16
0
 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")
示例#17
0
 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()
示例#18
0
 def setUp(self):
     self.sh = MockSmartHome()
示例#19
0
    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')