summaryrefslogtreecommitdiff
path: root/tests/testServer.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testServer.py')
-rw-r--r--tests/testServer.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/testServer.py b/tests/testServer.py
new file mode 100644
index 0000000..7c360a8
--- /dev/null
+++ b/tests/testServer.py
@@ -0,0 +1,54 @@
+import sys
+import gobject
+import dbus
+from dbus.mainloop.glib import DBusGMainLoop
+
+from xml.dom import minidom
+
+from AccessibleTree import AccessibleTree
+
+DBusGMainLoop(set_as_default=True)
+
+def getChildrenByName(node, name):
+ return [child for child in node.childNodes if child.nodeType == child.ELEMENT_NODE and child.nodeName == name]
+
+def registerObject(tree, parent, node):
+ reference = node.getAttribute('reference').encode('ASCII')
+ name = node.getAttribute('name').encode('ASCII')
+ role = node.getAttribute('role').encode('ASCII')
+ description = node.getAttribute('description').encode('ASCII')
+
+ interfacen = getChildrenByName(node, 'interface')
+ interfaces = [itf.getAttribute('name').encode('ASCII') for itf in interfacen]
+
+ childrenn = getChildrenByName(node, 'accessible')
+ children = [cld.getAttribute('reference').encode('ASCII') for cld in childrenn]
+
+ object = (reference, parent, children, interfaces, name, int(role), description)
+ tree.updateObject(reference, object)
+
+ for child in childrenn:
+ registerObject(tree, reference, child)
+
+def main(argv):
+ filename = argv[1]
+ bus = dbus.SessionBus()
+
+ loop = gobject.MainLoop()
+
+ bus.request_name('test.atspi.tree', 0)
+
+ tree = AccessibleTree(bus, '/org/freedesktop/atspi/tree')
+ doc = minidom.parse(filename)
+ node = doc.firstChild
+ tree.setRoot(node.getAttribute('reference').encode('ASCII'))
+
+ registerObject(tree, '/', node)
+
+ try:
+ loop.run()
+ except KeyboardInterrupt:
+ loop.quit()
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))