diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2012-01-20 14:48:20 +0000 |
---|---|---|
committer | Tomeu Vizoso <tomeu.vizoso@collabora.com> | 2012-01-24 15:47:57 +0100 |
commit | 1ab4040596dfb4b0b38d547711990ec294771f27 (patch) | |
tree | b9b2c396f85292bf9f0899b0603ff023915ed71c /tests/gimarshallingtests.c | |
parent | 60533d4528690df72287d1fe0dde9e0257081dd3 (diff) | |
download | gobject-introspection-1ab4040596dfb4b0b38d547711990ec294771f27.tar.gz |
tests: add test functions which return GErrors
GStreamer has the following method:
void gst_message_parse_error (
GstMessage *message,
GError **error,
gchar **debug_message);
This patch adds a number of test functions with similar signatures which
do not follow the standard "throws GError" pattern.
https://bugzilla.gnome.org/show_bug.cgi?id=666098
Diffstat (limited to 'tests/gimarshallingtests.c')
-rw-r--r-- | tests/gimarshallingtests.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c index f641c383..712e5080 100644 --- a/tests/gimarshallingtests.c +++ b/tests/gimarshallingtests.c @@ -3972,6 +3972,63 @@ gi_marshalling_tests_gerror_array_in(gint *in_ints, GError **error) GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE); } +/** + * gi_marshalling_tests_gerror_out: + * @error: (out) (allow-none) (transfer full): location for the GError. + * @debug: (out) (allow-none) (transfer full): location for the debug message + * + * Inspired by gst_message_parse_error. + */ +void +gi_marshalling_tests_gerror_out(GError **error, gchar **debug) +{ + GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN); + g_set_error_literal(error, + quark, + GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE, + GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE); + + if (debug != NULL) { + *debug = g_strdup (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE); + } +} + +/** + * gi_marshalling_tests_gerror_out_transfer_none: + * @err: (out) (allow-none) (transfer none): location for the GError. + * @debug: (out) (allow-none) (transfer none): location for the debug message + * + * A variant of gi_marshalling_tests_gerror_out() which returns data the caller + * must not free. + */ +void +gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **debug) +{ + static GError error = { 0, + GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE, + GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE }; + error.domain = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN); + *err = &error; + *debug = GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE; +} + +/** + * gi_marshalling_tests_gerror_return: + * + * Yet another variant of gi_marshalling_tests_gerror_out(). + * + * Returns: (transfer full): a GError + */ +GError * +gi_marshalling_tests_gerror_return() +{ + GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN); + + return g_error_new(quark, + GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE, + GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE); +} + static GIMarshallingTestsOverridesStruct * gi_marshalling_tests_overrides_struct_copy (GIMarshallingTestsOverridesStruct *struct_) { |