summaryrefslogtreecommitdiff
path: root/src/tests/tests.py.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/tests.py.in')
-rwxr-xr-xsrc/tests/tests.py.in109
1 files changed, 109 insertions, 0 deletions
diff --git a/src/tests/tests.py.in b/src/tests/tests.py.in
new file mode 100755
index 0000000..152bef3
--- /dev/null
+++ b/src/tests/tests.py.in
@@ -0,0 +1,109 @@
+#!@PYTHON@
+# -*- coding: utf-8 -*-
+import sys
+import os
+sys.path.insert(0, os.path.abspath(os.path.join(__file__, "../../")))
+
+from gi.repository import Gtk
+from gi.repository import Gio
+from gi.repository import GLib
+from dfeet.introspection import AddressInfo
+from dfeet.introspection_helper import DBusNode
+from dfeet.introspection_helper import DBusInterface
+from dfeet.introspection_helper import DBusProperty
+from dfeet.introspection_helper import DBusSignal
+from dfeet.introspection_helper import DBusMethod
+import unittest
+
+XML = """
+<node>
+ <interface name='org.gnome.dfeet.TestInterface'>
+ <method name='HelloWorld'>
+ <arg type='s' name='greeting' direction='in'/>
+ <arg type='s' name='response' direction='out'/>
+ </method>
+ <property name="TestString" type="s" access="readwrite"/>
+ <property name="TestBool" type="b" access="read"/>
+ <property name="TestStruct" type="(suu)" access="read"/>
+ <signal name="TestSignal">
+ <arg name="SigString" type="s"/>
+ <arg name="SigBool" type="b"/>
+ </signal>
+ </interface>
+</node>
+"""
+
+DATA_DIR = os.path.abspath("../../data/")
+
+
+class IntrospectionHelperTest(unittest.TestCase):
+ """tests for the introspection helper classes"""
+ def setUp(self):
+ self.name = "org.gnome.dfeet"
+ self.object_path = "/org/gnome/dfeet"
+ self.node_info = Gio.DBusNodeInfo.new_for_xml(XML)
+
+ def test_dbus_node_info(self):
+ """test DBusNode class"""
+ obj_node = DBusNode(self.name, self.object_path, self.node_info)
+ self.assertEqual(obj_node.name, self.name)
+ self.assertEqual(obj_node.object_path, self.object_path)
+ self.assertEqual(len(obj_node.node_info.interfaces), 1)
+
+ def test_dbus_interface(self):
+ """test DBusInterface class"""
+ obj_node = DBusNode(self.name, self.object_path, self.node_info)
+ obj_iface = DBusInterface(obj_node, obj_node.node_info.interfaces[0])
+ self.assertEqual(obj_iface.name, self.name)
+ self.assertEqual(obj_iface.object_path, self.object_path)
+ self.assertEqual(len(obj_iface.iface_info.methods), 1)
+ self.assertEqual(len(obj_iface.iface_info.properties), 3)
+ self.assertEqual(len(obj_iface.iface_info.signals), 1)
+
+ def test_dbus_property(self):
+ """test DBusProperty class"""
+ obj_node = DBusNode(self.name, self.object_path, self.node_info)
+ obj_iface = DBusInterface(obj_node, obj_node.node_info.interfaces[0])
+ obj_prop = DBusProperty(obj_iface, obj_iface.iface_info.properties[0])
+ self.assertEqual(obj_prop.name, self.name)
+ self.assertEqual(obj_prop.object_path, self.object_path)
+ # get the markup string with value for struct prop (see bgo #702593)
+ obj_prop = DBusProperty(obj_iface, obj_iface.iface_info.properties[2])
+ obj_prop.value = ("string", 1, 2)
+ self.assertIn("'string', 1, 2", obj_prop.markup_str)
+
+ def test_dbus_signal(self):
+ """test DBusSignal class"""
+ obj_node = DBusNode(self.name, self.object_path, self.node_info)
+ obj_iface = DBusInterface(obj_node, obj_node.node_info.interfaces[0])
+ obj_sig = DBusSignal(obj_iface, obj_iface.iface_info.signals[0])
+ self.assertEqual(obj_sig.name, self.name)
+ self.assertEqual(obj_sig.object_path, self.object_path)
+
+
+class AddressInfoTest(unittest.TestCase):
+ """tests for the AddressInfo class and the introspection stuff"""
+
+ def setUp(self):
+ self.bus = Gio.TestDBus()
+ self.bus.unset()
+ self.bus.up()
+
+ def tearDown(self):
+ self.bus.stop()
+
+ def test_bus(self):
+ """introspect a name on the system bus"""
+ ai = AddressInfo(DATA_DIR, self.bus.get_bus_address(), None, "org.freedesktop.DBus")
+
+ @unittest.skip("TODO:peer to peer test not implemented")
+ def test_peer_to_peer(self):
+ """test a p2p connection"""
+ # TODO: setup a gdbus server and test a peer to peer connection
+ # (see http://developer.gnome.org/gio/unstable/GDBusServer.html#gdbus-peer-to-peer)
+ pass
+
+
+if __name__ == "__main__":
+ # run tests
+ unittest.main()