Test GUnixSocketAddress construction
authorRyan Lortie <desrt@desrt.ca>
Tue, 23 Apr 2013 18:30:42 +0000 (14:30 -0400)
committerRyan Lortie <desrt@desrt.ca>
Tue, 23 Apr 2013 18:36:07 +0000 (14:36 -0400)
This test fails without the previous fix and works properly with it.

https://bugzilla.gnome.org/show_bug.cgi?id=698686

gio/tests/.gitignore
gio/tests/Makefile.am
gio/tests/socket-address.c [new file with mode: 0644]

index 4e172ae..0652ff7 100644 (file)
@@ -99,6 +99,7 @@ simple-async-result
 simple-proxy
 sleepy-stream
 socket
+socket-address
 socket-client
 socket-server
 srvtarget
index c8a4090..f7d7fe3 100644 (file)
@@ -142,6 +142,7 @@ TEST_PROGS +=                       \
        gapplication            \
        basic-application       \
        gdbus-test-codegen      \
+       socket-address          \
        $(NULL)
 SAMPLE_PROGS +=                                        \
        gdbus-example-unix-fd-client            \
diff --git a/gio/tests/socket-address.c b/gio/tests/socket-address.c
new file mode 100644 (file)
index 0000000..c3cd809
--- /dev/null
@@ -0,0 +1,79 @@
+#include <gio/gunixsocketaddress.h>
+
+static void
+test_unix_socket_address_construct (void)
+{
+  GUnixSocketAddress *a;
+
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS, NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_PATH);
+  g_object_unref (a);
+
+  /* Try passing some default values for the arguments explicitly and
+   * make sure it makes no difference.
+   */
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS, "address-type", G_UNIX_SOCKET_ADDRESS_PATH, NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_PATH);
+  g_object_unref (a);
+
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS, "abstract", FALSE, NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_PATH);
+  g_object_unref (a);
+
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS,
+                    "abstract", FALSE,
+                    "address-type", G_UNIX_SOCKET_ADDRESS_PATH,
+                    NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_PATH);
+  g_object_unref (a);
+
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS,
+                    "address-type", G_UNIX_SOCKET_ADDRESS_PATH,
+                    "abstract", FALSE,
+                    NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_PATH);
+  g_object_unref (a);
+
+  /* Try explicitly setting abstract to TRUE */
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS,
+                    "abstract", TRUE,
+                    NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED);
+  g_object_unref (a);
+
+  /* Try explicitly setting a different kind of address */
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS,
+                    "address-type", G_UNIX_SOCKET_ADDRESS_ANONYMOUS,
+                    NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_ANONYMOUS);
+  g_object_unref (a);
+
+  /* Now try explicitly setting a different type of address after
+   * setting abstract to FALSE.
+   */
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS,
+                    "abstract", FALSE,
+                    "address-type", G_UNIX_SOCKET_ADDRESS_ANONYMOUS,
+                    NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_ANONYMOUS);
+  g_object_unref (a);
+
+  /* And the other way around */
+  a = g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS,
+                    "address-type", G_UNIX_SOCKET_ADDRESS_ANONYMOUS,
+                    "abstract", FALSE,
+                    NULL);
+  g_assert_cmpint (g_unix_socket_address_get_address_type (a), ==, G_UNIX_SOCKET_ADDRESS_ANONYMOUS);
+  g_object_unref (a);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/socket/address/unix/construct", test_unix_socket_address_construct);
+
+  return g_test_run ();
+}