def testInitLoaded(self): ob = ldmud.Object("/master") self.assertIsNotNone(ob) self.assertTrue(ob) self.assertIn("master", repr(ob)) self.assertEqual(ob, ldmud.Object("/master")) self.assertEqual(hash(ob), hash(ldmud.Object("/master")))
def testDict(self): ob = ldmud.Object("/testob") ob.testvalue = "42" ob = None ob = ldmud.Object("/testob") self.assertEqual(ob.testvalue, "42") with self.assertRaises(AttributeError): ob.doesntExist
def testInitLoad(self): oldob = ldmud.efuns.find_object("/testob") if oldob: ldmud.efuns.destruct(oldob) ob = ldmud.Object("/testob") self.assertIsNotNone(ob) self.assertEqual(ob.name, "/testob")
def testVariableInfo(self): ob = ldmud.Object("/testob") self.assertIsNotNone(ob) self.assertTrue('testvar' in dir(ob.variables)) self.assertTrue('testvar' in ob.variables.__dict__) var = ob.variables.testvar self.assertIsNotNone(var) self.assertEqual(var.name, "testvar") self.assertEqual(var.value, 42) self.assertSetEqual(set(var.type), set(( int, float, ))) self.assertEqual(var.flags, ldmud.VF_NOSAVE) self.assertEqual(var.visibility, ldmud.VIS_PROTECTED) self.assertTrue("testvar" in repr(var) and "testob" in repr(var)) self.assertEqual(hash(var), hash(ob.variables.testvar)) self.assertEqual(var, ob.variables.testvar) self.assertNotEqual(var, ob.variables.var_testob) var.value = 84 self.assertEqual(var.value, 84) with self.assertRaises(TypeError): var.value = "42" self.assertEqual(var.value, 84)
def testFunctionInfo(self): ob = ldmud.Object("/testob") self.assertIsNotNone(ob) self.assertTrue('testfun' in dir(ob.functions)) self.assertTrue('testfun' in ob.functions.__dict__) fun = ob.functions.testfun self.assertIsNotNone(fun) self.assertEqual(fun.name, "testfun") self.assertEqual(fun.file_name, "/testob.c") self.assertGreater(fun.line_number, 0) self.assertEqual(fun.return_type, int) self.assertEqual(fun.flags, ldmud.LF_NOMASK) self.assertEqual(fun.visibility, ldmud.VIS_PROTECTED) self.assertTrue("testfun" in repr(fun) and "testob" in repr(fun)) self.assertEqual(hash(fun), hash(ob.functions.testfun)) self.assertEqual(fun, ob.functions.testfun) self.assertNotEqual(fun, ob.functions.fun_testob) args = fun.arguments self.assertEqual(len(args), 2) self.assertEqual(args[0].position, 1) self.assertSetEqual(set(args[0].type), set(( int, float, ))) self.assertEqual(args[1].position, 2) self.assertEqual(args[1].flags, ldmud.LA_VARARGS) self.assertEqual(args[1].type, ldmud.Array) self.assertEqual(fun(10, "A", "B", "C"), 3)
def testDestructedFunctionAndVariable(self): ob = ldmud.Object("/testob") lfun = ob.functions.testfun var = ob.variables.testvar ldmud.efuns.destruct(ob) self.assertFalse(lfun) self.assertFalse(var)
def testMaster(self): ob = ldmud.Object("/master") self.assertEqual(ob, ldmud.get_master())
def testInitNonExisting(self): with self.assertRaises(RuntimeError): ob = ldmud.Object("/imnotthere")
def testInitLoaded(self): ob = ldmud.Object("/master") self.assertIsNotNone(ob)
def testDestructed(self): ob = ldmud.Object("/testob") ldmud.efuns.destruct(ob) self.assertFalse(ob)
def setUp(self): self.ob = ldmud.Object("/testob") self.lwob = ldmud.LWObject("/testob")
def testDestructedLfun(self): ob = ldmud.Object("/testob") c = ldmud.Closure(ob, "testfun", ob) self.assertTrue(c) ldmud.efuns.destruct(ob) self.assertFalse(c)
def testInitLoaded(self): blueprint = ldmud.Object("/testob") lwob = ldmud.LWObject("/testob") self.assertIsNotNone(lwob) self.assertTrue(lwob) self.assertIn("testob", repr(lwob))
async def process_message(self, msg): """ Dispatch a single message. """ if msg.msg_type == DBusMessage.MessageType.METHOD_RETURN: serial = msg.header.get(DBusMessage.HeaderField.REPLY_SERIAL, 0) cb = self.callbacks.pop(serial, None) if cb: await cb(msg) elif msg.msg_type == DBusMessage.MessageType.ERROR: serial = msg.header.get(DBusMessage.HeaderField.REPLY_SERIAL, 0) cb = self.callbacks.pop(serial, None) if cb: await cb(msg) elif msg.msg_type == DBusMessage.MessageType.SIGNAL: for key, (rule, cbs) in listeners.items(): if rule.matches(msg): for cb in cbs: cb(*msg.data) elif msg.msg_type == DBusMessage.MessageType.METHOD_CALL: try: path = msg.header.get(DBusMessage.HeaderField.PATH) if path not in objects: raise DBusException( "org.freedesktop.DBus.Error.UnknownObject", "Path not found.") interface = msg.header.get(DBusMessage.HeaderField.INTERFACE) if interface not in objects[path][1]: raise DBusException( "org.freedesktop.DBus.Error.UnknownInterface", "Interface not found.") ob = objects[path][0] lfunname = objects[path][1][interface] + msg.header.get( DBusMessage.HeaderField.MEMBER, "") if not ob: raise DBusException( "org.freedesktop.DBus.Error.UnknownObject", "Object has vanished.") if isinstance(ob, str): ob = ldmud.Object(ob) lfun = getattr(ob.functions, lfunname, None) if not lfun: raise DBusException( "org.freedesktop.DBus.Error.UnknownMethod", "Method not found.") result = lfun(*msg.data) if not (msg.flags & DBusMessage.Flags.NO_REPLY_EXPECTED): self.send_message( print_error_callback, DBusMethodResult( msg.header.get(DBusMessage.HeaderField.SENDER), msg.serial, self.get_signature(result), [result])) except DBusException as ex: if not (msg.flags & DBusMessage.Flags.NO_REPLY_EXPECTED): self.send_message( print_error_callback, DBusErrorMessage( msg.header.get(DBusMessage.HeaderField.SENDER), msg.serial, ex.name, ex.msg)) except Exception as ex: if not (msg.flags & DBusMessage.Flags.NO_REPLY_EXPECTED): self.send_message( print_error_callback, DBusErrorMessage( msg.header.get(DBusMessage.HeaderField.SENDER), msg.serial, "org.freedesktop.DBus.Error.Failed", repr(ex)))