diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2010-12-13 18:42:05 +0000 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2010-12-13 18:43:12 +0000 |
commit | a956c87b288a609589c76f0b647caf4d22b5226e (patch) | |
tree | 6b33d5afaa90300407e4b93bb38a353e93bf5ea2 | |
parent | 45ebc5fce121c294829e2c8beb358e5d3b71745f (diff) |
message tests: split out abandon_container() test.fix-the-tests
This would have been a bit easier to read if it was in a separate
function. I'm allergic to 500-line functions, even test cases.
-rw-r--r-- | dbus/dbus-message-util.c | 65 |
1 files changed, 34 insertions, 31 deletions
diff --git a/dbus/dbus-message-util.c b/dbus/dbus-message-util.c index 6cd3162a..32c83287 100644 --- a/dbus/dbus-message-util.c +++ b/dbus/dbus-message-util.c @@ -942,6 +942,39 @@ verify_test_message (DBusMessage *message) _dbus_assert_not_reached ("Didn't reach end of arguments"); } +static void +_dbus_message_test_abandon_container () +{ + DBusMessage *message; + DBusMessageIter iter, array_iter, struct_iter; + const char *s = "peaches"; + dbus_bool_t success; + + message = dbus_message_new_method_call ("org.freedesktop.DBus.TestService", + "/org/freedesktop/TestPath", + "Foo.TestInterface", + "Method"); + + dbus_message_iter_init_append (message, &iter); + + success = dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, + "(ss)", &array_iter); + _dbus_assert (success); + + success = dbus_message_iter_open_container (&array_iter, DBUS_TYPE_STRUCT, + NULL, &struct_iter); + _dbus_assert (success); + + success = dbus_message_iter_append_basic (&struct_iter, DBUS_TYPE_STRING, &s); + _dbus_assert (success); + + /* uh-oh, error, try and unwind */ + dbus_message_iter_abandon_container (&array_iter, &struct_iter); + dbus_message_iter_abandon_container (&array_iter, &iter); + + dbus_message_unref (message); +} + /** * @ingroup DBusMessageInternals * Unit test for DBusMessage. @@ -995,7 +1028,6 @@ _dbus_message_test (const char *test_data_dir) unsigned char v_BYTE; unsigned char v2_BYTE; dbus_bool_t v_BOOLEAN; - DBusMessageIter iter, array_iter, struct_iter; #ifdef HAVE_UNIX_FD_PASSING int v_UNIX_FD; #endif @@ -1397,36 +1429,7 @@ _dbus_message_test (const char *test_data_dir) check_memleaks (); _dbus_check_fdleaks(); - /* Check that we can abandon a container */ - message = dbus_message_new_method_call ("org.freedesktop.DBus.TestService", - "/org/freedesktop/TestPath", - "Foo.TestInterface", - "Method"); - - dbus_message_iter_init_append (message, &iter); - - success = dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, - (DBUS_STRUCT_BEGIN_CHAR_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_TYPE_STRING_AS_STRING - DBUS_STRUCT_END_CHAR_AS_STRING), - &array_iter); - _dbus_assert (success); - - success = dbus_message_iter_open_container (&array_iter, DBUS_TYPE_STRUCT, - NULL, &struct_iter); - _dbus_assert (success); - - s = "peaches"; - success = dbus_message_iter_append_basic (&struct_iter, DBUS_TYPE_STRING, &s); - _dbus_assert (success); - - /* uh-oh, error, try and unwind */ - - dbus_message_iter_abandon_container (&array_iter, &struct_iter); - dbus_message_iter_abandon_container (&array_iter, &iter); - - dbus_message_unref (message); + _dbus_message_test_abandon_container (); /* Load all the sample messages from the message factory */ { |