summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2021-12-28 13:18:46 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2021-12-28 15:36:28 +0100
commite556d70819d91c23d6a704466c418ef68ad92562 (patch)
tree0a932279e0ee08012be896c289137a6f8040e988 /tests
parent929d3be56d2b3e9a39327635f30d0de74372b0bd (diff)
downloadvala-e556d70819d91c23d6a704466c418ef68ad92562.tar.gz
gio-2.0: Add custom MemoryOutputStream.with_*data() wrappers
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1271
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/bindings/gio/memoryoutputstream.c-expected227
-rw-r--r--tests/bindings/gio/memoryoutputstream.vala43
3 files changed, 271 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 788d9e474..5c201124d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1348,6 +1348,7 @@ TESTS = \
genie/typeof.gs \
genie/while.gs \
glib/conditional-glib-api.vala \
+ bindings/gio/memoryoutputstream.vala \
$(LINUX_TESTS) \
$(NULL)
diff --git a/tests/bindings/gio/memoryoutputstream.c-expected b/tests/bindings/gio/memoryoutputstream.c-expected
new file mode 100644
index 000000000..515949246
--- /dev/null
+++ b/tests/bindings/gio/memoryoutputstream.c-expected
@@ -0,0 +1,227 @@
+/* bindings_gio_memoryoutputstream.c generated by valac, the Vala compiler
+ * generated from bindings_gio_memoryoutputstream.vala, do not modify */
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !defined(VALA_EXTERN)
+#if defined(_MSC_VER)
+#define VALA_EXTERN __declspec(dllexport) extern
+#elif __GNUC__ >= 4
+#define VALA_EXTERN __attribute__((visibility("default"))) extern
+#else
+#define VALA_EXTERN extern
+#endif
+#endif
+
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
+#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
+#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+
+VALA_EXTERN void test_stack_data (void);
+VALA_EXTERN void test_heap_data (void);
+VALA_EXTERN void test_owned_data (void);
+static void _vala_main (void);
+
+static GMemoryOutputStream*
+vala_g_memory_output_stream_with_data (guint8* data,
+ gsize data_length1)
+{
+ GMemoryOutputStream* _tmp0_;
+ GMemoryOutputStream* result = NULL;
+ _tmp0_ = (GMemoryOutputStream*) g_memory_output_stream_new (data, (gsize) data_length1, NULL, NULL);
+ result = _tmp0_;
+ return result;
+}
+
+void
+test_stack_data (void)
+{
+ guint8 buffer[7] = {0};
+ GMemoryOutputStream* mos = NULL;
+ GMemoryOutputStream* _tmp0_;
+ GDataOutputStream* dos = NULL;
+ GDataOutputStream* _tmp1_;
+ GError* _inner_error0_ = NULL;
+ _tmp0_ = vala_g_memory_output_stream_with_data (buffer, (gsize) 7);
+ mos = _tmp0_;
+ _tmp1_ = g_data_output_stream_new (G_TYPE_CHECK_INSTANCE_CAST (mos, g_output_stream_get_type (), GOutputStream));
+ dos = _tmp1_;
+ {
+ g_data_output_stream_put_string (dos, "foobar\0", NULL, &_inner_error0_);
+ if (G_UNLIKELY (_inner_error0_ != NULL)) {
+ goto __catch0_g_error;
+ }
+ _vala_assert (7 == 7, "buffer.length == 7");
+ _vala_assert (g_strcmp0 ((const gchar*) buffer, "foobar") == 0, "(string) buffer == \"foobar\"");
+ }
+ goto __finally0;
+ __catch0_g_error:
+ {
+ g_clear_error (&_inner_error0_);
+ g_assert_not_reached ();
+ }
+ __finally0:
+ if (G_UNLIKELY (_inner_error0_ != NULL)) {
+ _g_object_unref0 (dos);
+ _g_object_unref0 (mos);
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+ g_clear_error (&_inner_error0_);
+ return;
+ }
+ _g_object_unref0 (dos);
+ _g_object_unref0 (mos);
+}
+
+void
+test_heap_data (void)
+{
+ guint8* buffer = NULL;
+ guint8* _tmp0_;
+ gint buffer_length1;
+ gint _buffer_size_;
+ GMemoryOutputStream* mos = NULL;
+ GMemoryOutputStream* _tmp1_;
+ GDataOutputStream* dos = NULL;
+ GDataOutputStream* _tmp2_;
+ GError* _inner_error0_ = NULL;
+ _tmp0_ = g_new0 (guint8, 7);
+ buffer = _tmp0_;
+ buffer_length1 = 7;
+ _buffer_size_ = buffer_length1;
+ _tmp1_ = vala_g_memory_output_stream_with_data (buffer, (gsize) buffer_length1);
+ mos = _tmp1_;
+ _tmp2_ = g_data_output_stream_new (G_TYPE_CHECK_INSTANCE_CAST (mos, g_output_stream_get_type (), GOutputStream));
+ dos = _tmp2_;
+ {
+ g_data_output_stream_put_string (dos, "foobar\0", NULL, &_inner_error0_);
+ if (G_UNLIKELY (_inner_error0_ != NULL)) {
+ goto __catch0_g_error;
+ }
+ _vala_assert (g_strcmp0 ((const gchar*) buffer, "foobar") == 0, "(string) buffer == \"foobar\"");
+ }
+ goto __finally0;
+ __catch0_g_error:
+ {
+ g_clear_error (&_inner_error0_);
+ g_assert_not_reached ();
+ }
+ __finally0:
+ if (G_UNLIKELY (_inner_error0_ != NULL)) {
+ _g_object_unref0 (dos);
+ _g_object_unref0 (mos);
+ buffer = (g_free (buffer), NULL);
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+ g_clear_error (&_inner_error0_);
+ return;
+ }
+ _g_object_unref0 (dos);
+ _g_object_unref0 (mos);
+ buffer = (g_free (buffer), NULL);
+}
+
+static GMemoryOutputStream*
+vala_g_memory_output_stream_with_owned_data (guint8* data,
+ gsize data_length1)
+{
+ gsize size = 0UL;
+ guint8* _tmp0_;
+ gint _tmp0__length1;
+ GReallocFunc _tmp1_;
+ GDestroyNotify _tmp2_;
+ GMemoryOutputStream* _tmp3_;
+ GMemoryOutputStream* result = NULL;
+ size = (gsize) data_length1;
+ _tmp0_ = data;
+ _tmp0__length1 = data_length1;
+ data = NULL;
+ data_length1 = 0;
+ _tmp1_ = g_realloc;
+ _tmp2_ = g_free;
+ _tmp3_ = (GMemoryOutputStream*) g_memory_output_stream_new (_tmp0_, size, _tmp1_, _tmp2_);
+ result = _tmp3_;
+ data = (g_free (data), NULL);
+ return result;
+}
+
+void
+test_owned_data (void)
+{
+ guint8* buffer = NULL;
+ guint8* _tmp0_;
+ gint buffer_length1;
+ gint _buffer_size_;
+ GMemoryOutputStream* mos = NULL;
+ guint8* _tmp1_;
+ gint _tmp1__length1;
+ GMemoryOutputStream* _tmp2_;
+ GDataOutputStream* dos = NULL;
+ GDataOutputStream* _tmp3_;
+ GError* _inner_error0_ = NULL;
+ _tmp0_ = g_new0 (guint8, 7);
+ buffer = _tmp0_;
+ buffer_length1 = 7;
+ _buffer_size_ = buffer_length1;
+ _tmp1_ = buffer;
+ _tmp1__length1 = buffer_length1;
+ buffer = NULL;
+ buffer_length1 = 0;
+ _tmp2_ = vala_g_memory_output_stream_with_owned_data (_tmp1_, (gsize) _tmp1__length1);
+ mos = _tmp2_;
+ _tmp3_ = g_data_output_stream_new (G_TYPE_CHECK_INSTANCE_CAST (mos, g_output_stream_get_type (), GOutputStream));
+ dos = _tmp3_;
+ {
+ guint8* data = NULL;
+ guint8* _tmp4_;
+ gint data_length1;
+ gint _data_size_;
+ g_data_output_stream_put_string (dos, "foobar\0", NULL, &_inner_error0_);
+ if (G_UNLIKELY (_inner_error0_ != NULL)) {
+ goto __catch0_g_error;
+ }
+ _tmp4_ = g_memory_output_stream_get_data (mos);
+ data = _tmp4_;
+ data_length1 = -1;
+ _data_size_ = data_length1;
+ _vala_assert (g_strcmp0 ((const gchar*) data, "foobar") == 0, "(string) data == \"foobar\"");
+ }
+ goto __finally0;
+ __catch0_g_error:
+ {
+ g_clear_error (&_inner_error0_);
+ g_assert_not_reached ();
+ }
+ __finally0:
+ if (G_UNLIKELY (_inner_error0_ != NULL)) {
+ _g_object_unref0 (dos);
+ _g_object_unref0 (mos);
+ buffer = (g_free (buffer), NULL);
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
+ g_clear_error (&_inner_error0_);
+ return;
+ }
+ _g_object_unref0 (dos);
+ _g_object_unref0 (mos);
+ buffer = (g_free (buffer), NULL);
+}
+
+static void
+_vala_main (void)
+{
+ test_stack_data ();
+ test_heap_data ();
+ test_owned_data ();
+}
+
+int
+main (int argc,
+ char ** argv)
+{
+ _vala_main ();
+ return 0;
+}
+
diff --git a/tests/bindings/gio/memoryoutputstream.vala b/tests/bindings/gio/memoryoutputstream.vala
new file mode 100644
index 000000000..b3c361d46
--- /dev/null
+++ b/tests/bindings/gio/memoryoutputstream.vala
@@ -0,0 +1,43 @@
+void test_stack_data () {
+ uint8 buffer[7];
+ var mos = MemoryOutputStream.with_data (buffer);
+ var dos = new DataOutputStream (mos);
+ try {
+ dos.put_string ("foobar\0");
+ assert (buffer.length == 7);
+ assert ((string) buffer == "foobar");
+ } catch {
+ assert_not_reached ();
+ }
+}
+
+void test_heap_data () {
+ uint8[] buffer = new uint8[7];
+ var mos = MemoryOutputStream.with_data (buffer);
+ var dos = new DataOutputStream (mos);
+ try {
+ dos.put_string ("foobar\0");
+ assert ((string) buffer == "foobar");
+ } catch {
+ assert_not_reached ();
+ }
+}
+
+void test_owned_data () {
+ uint8[] buffer = new uint8[7];
+ var mos = MemoryOutputStream.with_owned_data ((owned) buffer);
+ var dos = new DataOutputStream (mos);
+ try {
+ dos.put_string ("foobar\0");
+ unowned uint8[] data = mos.get_data ();
+ assert ((string) data == "foobar");
+ } catch {
+ assert_not_reached ();
+ }
+}
+
+void main () {
+ test_stack_data ();
+ test_heap_data ();
+ test_owned_data ();
+}