summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-08-02 08:54:00 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-08-22 15:56:51 +1000
commitdbbe5735d1451bb32f43bce90f0bcfeff46f9743 (patch)
treea357681da49af339eb08be9142cc132f2ee81f64
parentb3c76b0c53ac42b70d12849da18465e8467e474c (diff)
test: add a test for GetMaster() behaviour
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
-rw-r--r--test/input.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/test/input.c b/test/input.c
index 837ce49dc..31597f9de 100644
--- a/test/input.c
+++ b/test/input.c
@@ -1234,6 +1234,67 @@ static void dix_valuator_alloc(void)
free(v);
}
+static void dix_get_master(void)
+{
+ DeviceIntRec vcp, vck;
+ DeviceIntRec ptr, kbd;
+ DeviceIntRec floating;
+ SpriteInfoRec vcp_sprite, vck_sprite;
+ SpriteInfoRec ptr_sprite, kbd_sprite;
+ SpriteInfoRec floating_sprite;
+
+ memset(&vcp, 0, sizeof(DeviceIntRec));
+ memset(&vck, 0, sizeof(DeviceIntRec));
+ memset(&ptr, 0, sizeof(DeviceIntRec));
+ memset(&kbd, 0, sizeof(DeviceIntRec));
+ memset(&floating, 0, sizeof(DeviceIntRec));
+
+ memset(&vcp_sprite, 0, sizeof(DeviceIntRec));
+ memset(&vck_sprite, 0, sizeof(DeviceIntRec));
+ memset(&ptr_sprite, 0, sizeof(DeviceIntRec));
+ memset(&kbd_sprite, 0, sizeof(DeviceIntRec));
+ memset(&floating_sprite, 0, sizeof(DeviceIntRec));
+
+ vcp.type = MASTER_POINTER;
+ vck.type = MASTER_KEYBOARD;
+ ptr.type = SLAVE;
+ kbd.type = SLAVE;
+ floating.type = SLAVE;
+
+ vcp.spriteInfo = &vcp_sprite;
+ vck.spriteInfo = &vck_sprite;
+ ptr.spriteInfo = &ptr_sprite;
+ kbd.spriteInfo = &kbd_sprite;
+ floating.spriteInfo = &floating_sprite;
+
+ vcp_sprite.paired = &vck;
+ vck_sprite.paired = &vcp;
+ ptr_sprite.paired = &vcp;
+ kbd_sprite.paired = &vck;
+ floating_sprite.paired = &floating;
+
+ vcp_sprite.spriteOwner = TRUE;
+ floating_sprite.spriteOwner = TRUE;
+
+ ptr.master = &vcp;
+ kbd.master = &vck;
+
+ assert(GetPairedDevice(&vcp) == &vck);
+ assert(GetPairedDevice(&vck) == &vcp);
+ assert(GetMaster(&ptr, MASTER_POINTER) == &vcp);
+ assert(GetMaster(&ptr, MASTER_KEYBOARD) == &vck);
+ assert(GetMaster(&kbd, MASTER_POINTER) == &vcp);
+ assert(GetMaster(&kbd, MASTER_KEYBOARD) == &vck);
+ assert(GetMaster(&ptr, MASTER_ATTACHED) == &vcp);
+ assert(GetMaster(&kbd, MASTER_ATTACHED) == &vck);
+
+ assert(GetPairedDevice(&floating) == &floating);
+ assert(GetMaster(&floating, MASTER_POINTER) == NULL);
+ assert(GetMaster(&floating, MASTER_KEYBOARD) == NULL);
+ assert(GetMaster(&floating, MASTER_ATTACHED) == NULL);
+}
+
+
int main(int argc, char** argv)
{
dix_input_valuator_masks();
@@ -1249,6 +1310,7 @@ int main(int argc, char** argv)
include_bit_test_macros();
xi_unregister_handlers();
dix_valuator_alloc();
+ dix_get_master();
return 0;
}