+ if (!dbus_message_iter_next (&dict))
+ _dbus_assert_not_reached ("reached end of dict");
+
+ /* array of array of int32 (in dict) */
+
+ str = dbus_message_iter_get_dict_key (&dict);
+ if (str == NULL || strcmp (str, "array") != 0)
+ _dbus_assert_not_reached ("wrong dict key");
+ dbus_free (str);
+
+ if (dbus_message_iter_get_arg_type (&dict) != DBUS_TYPE_ARRAY)
+ _dbus_assert_not_reached ("Argument type not an array");
+
+ if (dbus_message_iter_get_array_type (&dict) != DBUS_TYPE_ARRAY)
+ _dbus_assert_not_reached ("Array type not array");
+
+ if (!dbus_message_iter_init_array_iterator (&dict, &array, NULL))
+ _dbus_assert_not_reached ("Array init failed");
+
+ if (dbus_message_iter_get_arg_type (&array) != DBUS_TYPE_ARRAY)
+ _dbus_assert_not_reached ("Argument type isn't array");
+
+ if (dbus_message_iter_get_array_type (&array) != DBUS_TYPE_INT32)
+ _dbus_assert_not_reached ("Array type not int32");
+
+ if (!dbus_message_iter_init_array_iterator (&array, &array2, NULL))
+ _dbus_assert_not_reached ("Array init failed");
+
+ if (dbus_message_iter_get_arg_type (&array2) != DBUS_TYPE_INT32)
+ _dbus_assert_not_reached ("Argument type isn't int32");
+
+ if (dbus_message_iter_get_int32 (&array2) != 0x12345678)
+ _dbus_assert_not_reached ("Signed integers differ");
+
+ if (!dbus_message_iter_next (&array2))
+ _dbus_assert_not_reached ("Reached end of arguments");
+
+ if (dbus_message_iter_get_int32 (&array2) != 0x23456781)
+ _dbus_assert_not_reached ("Signed integers differ");
+
+ if (dbus_message_iter_next (&array2))
+ _dbus_assert_not_reached ("Didn't reached end of arguments");
+
+ if (!dbus_message_iter_next (&array))
+ _dbus_assert_not_reached ("Reached end of arguments");
+
+ if (dbus_message_iter_get_array_type (&array) != DBUS_TYPE_INT32)
+ _dbus_assert_not_reached ("Array type not int32");
+
+ if (!dbus_message_iter_get_int32_array (&array,
+ &our_int_array,
+ &array_len))
+ _dbus_assert_not_reached ("couldn't get int32 array");
+
+ _dbus_assert (array_len == 3);
+ _dbus_assert (our_int_array[0] == 0x34567812 &&
+ our_int_array[1] == 0x45678123 &&
+ our_int_array[2] == 0x56781234);
+ dbus_free (our_int_array);
+
+ if (dbus_message_iter_next (&array))
+ _dbus_assert_not_reached ("Didn't reach end of array");
+