def test_add_callback(self): data.clear() data.add_callback("abc", "def", "VALUE", ["weird", "list", "grrr"]) self.assertEqual(data.get_callback("abc", "def", "VALUE"), ["weird", "list", "grrr"]) data.add_callback("abc", "def", "VALUE", ["normal", "new list", "varrr"]) self.assertEqual(data.get_callback("abc", "def", "VALUE"), ["normal", "new list", "varrr"]) # Add None is equal to remove. data.add_callback("abc", "def", "VALUE", None) self.assertEqual(data.get_callback("abc", "def", "VALUE"), data.NO_CALLBACK) data.add_callback("", "abc", "def", [["code1", "arg1"],["code2"]]) self.assertEqual(data.get_callback( data.DEFAULT_EVENT_MODE, "abc", "def"), [["code1", "arg1"], ["code2"]]) data.add_callback("default", "abc", "def", [["code1", "arg1"],["code2"]]) self.assertEqual(data.get_callback( data.DEFAULT_EVENT_MODE, "abc", "def"), [["code1", "arg1"], ["code2"]])
def test_clear(self): data.clear() data.add_callback("foo", "bar", "bzrrr", ["a", "b", "c"]) self.assertEqual(data.get_callback("foo", "bar", "bzrrr"), ["a", "b", "c"]) data.clear() self.assertEqual(data.get_callback("foo", "bar", "bzrrr"), data.NO_CALLBACK)
def test_load_from_file(self): data.load_from_file("data_2.0.xml") self.assertEqual( data.get_callback("googleKeyboard", "keyboard", "A_DOWN"), ["touch", "DOWN_AND_UP", "300", "680"]) self.assertEqual( data.get_callback("default", "alias", "click"), [["touch", "DOWN", ["arg", "1"], ["arg", "2"]], ["sleep", "0.1"], ["touch", "UP", ["arg", "1"], ["arg", "2"]] ])
def event(mode, type_, value, *arg): code = data.get_callback(mode, type_, value) _argstack[-1] = _argstack[-1][3:] result = None for expr in code: result = ashval(expr, False) return result
def _get_code(expr): if not isinstance(expr, list) or not isinstance(expr[0], str): return False # For test, manually switch commenting... for module in [ash, ashmon, data, sys.modules[__name__], devmgr]: # for module in [ash, ashmon, data, sys.modules[__name__]]: if hasattr(module, expr[0]): f = getattr(module, expr[0]) if hasattr(f, '__call__'): return f return data.get_callback("", "alias", expr[0])
def test_get_callback(self): data.clear() data.add_callback("googleKeyboard", "keyboard", "A_DOWN", ["touch", "DOWN_AND_UP", "200", "400"]) self.assertEqual( data.get_callback("googleKeyboard", "keyboard", "A_DOWN"), ["touch", "DOWN_AND_UP", "200", "400"]) self.assertEqual( data.get_callback("googleKeyboard", "keyboard", "no_key"), data.NO_CALLBACK) self.assertEqual( data.get_callback("googleKeyboard", "no_type", "A_DOWN"), data.NO_CALLBACK) self.assertEqual( data.get_callback("no_mode", "keyboard", "A_DOWN"), data.NO_CALLBACK) data.add_callback(data.DEFAULT_EVENT_MODE, "keyboard", "B_DOWN", ["a", ["c", "d"]]) self.assertEqual( data.get_callback("", "keyboard", "B_DOWN"), ["a", ["c", "d"]]) self.assertEqual( data.get_callback("default", "keyboard", "B_DOWN"), ["a", ["c", "d"]])