From 4d54510051128eee22eec69fdb6d86cf24d27320 Mon Sep 17 00:00:00 2001 From: badcel <1218031+badcel@users.noreply.github.com> Date: Thu, 4 Apr 2024 21:01:36 +0200 Subject: [PATCH] Tests: Add string array tests --- .../GirTestLib/girtest-string-array-tester.c | 52 +++++++++++++++++++ .../GirTestLib/girtest-string-array-tester.h | 14 +++++ src/Native/GirTestLib/girtest.h | 1 + src/Native/GirTestLib/meson.build | 2 + .../Libs/GirTest-0.1.Tests/StringArrayTest.cs | 23 ++++++++ 5 files changed, 92 insertions(+) create mode 100644 src/Native/GirTestLib/girtest-string-array-tester.c create mode 100644 src/Native/GirTestLib/girtest-string-array-tester.h create mode 100644 src/Tests/Libs/GirTest-0.1.Tests/StringArrayTest.cs diff --git a/src/Native/GirTestLib/girtest-string-array-tester.c b/src/Native/GirTestLib/girtest-string-array-tester.c new file mode 100644 index 000000000..a12648fe2 --- /dev/null +++ b/src/Native/GirTestLib/girtest-string-array-tester.c @@ -0,0 +1,52 @@ +#include "girtest-string-array-tester.h" + +/** + * GirTestStringArrayTester: + * + * Contains functions for testing bindings with string arrays. + */ + +const char* data[] = { "FOO", "BAR", NULL }; + +struct _GirTestStringArrayTester +{ + GObject parent_instance; +}; + +G_DEFINE_TYPE(GirTestStringArrayTester, girtest_string_array_tester, G_TYPE_OBJECT) + +static void +girtest_string_array_tester_init(GirTestStringArrayTester *value) +{ +} + +static void +girtest_string_array_tester_class_init(GirTestStringArrayTesterClass *class) +{ +} + +/** + * girtest_string_array_tester_return_transfer_none: + * + * Returns an array. + * + * Returns: (transfer none): The array + */ +const char** girtest_string_array_tester_return_transfer_none() +{ + return data; +} + +/** + * girtest_string_array_tester_return_element_parameter_null_terminated_transfer_none: + * @data: (array zero-terminated=1) (element-type utf8) (transfer none): Array + * @position: The index to return + * + * Returns the string at the given position. + * + * Returns: (transfer full): The string of the array from the given position + */ +gchar* girtest_string_array_tester_return_element_parameter_null_terminated_transfer_none(const gchar** data, int position) +{ + return g_strdup(data[position]); +} \ No newline at end of file diff --git a/src/Native/GirTestLib/girtest-string-array-tester.h b/src/Native/GirTestLib/girtest-string-array-tester.h new file mode 100644 index 000000000..9ddc58231 --- /dev/null +++ b/src/Native/GirTestLib/girtest-string-array-tester.h @@ -0,0 +1,14 @@ +#pragma once + +#include + +G_BEGIN_DECLS + +#define GIRTEST_TYPE_STRING_ARRAY_TESTER girtest_string_array_tester_get_type() + +G_DECLARE_FINAL_TYPE(GirTestStringArrayTester, girtest_string_array_tester, + GIRTEST, STRING_ARRAY_TESTER, GObject) + +const char** girtest_string_array_tester_return_transfer_none(); +gchar* girtest_string_array_tester_return_element_parameter_null_terminated_transfer_none(const gchar** data, int position); +G_END_DECLS diff --git a/src/Native/GirTestLib/girtest.h b/src/Native/GirTestLib/girtest.h index 15a39c936..db10f15c7 100644 --- a/src/Native/GirTestLib/girtest.h +++ b/src/Native/GirTestLib/girtest.h @@ -18,6 +18,7 @@ #include "girtest-rename-to-tester.h" #include "girtest-returning-signal-tester.h" #include "girtest-signal-tester.h" +#include "girtest-string-array-tester.h" #include "girtest-string-tester.h" #include "girtest-typed-record-tester.h" #include "girtest-untyped-record-tester.h" diff --git a/src/Native/GirTestLib/meson.build b/src/Native/GirTestLib/meson.build index 9890cfb82..f1c0f5c4e 100644 --- a/src/Native/GirTestLib/meson.build +++ b/src/Native/GirTestLib/meson.build @@ -21,6 +21,7 @@ header_files = [ 'girtest-rename-to-tester.h', 'girtest-returning-signal-tester.h', 'girtest-signal-tester.h', + 'girtest-string-array-tester.h', 'girtest-string-tester.h', 'girtest-typed-record-tester.h', 'girtest-untyped-record-tester.h', @@ -46,6 +47,7 @@ source_files = [ 'girtest-rename-to-tester.c', 'girtest-returning-signal-tester.c', 'girtest-signal-tester.c', + 'girtest-string-array-tester.c', 'girtest-string-tester.c', 'girtest-typed-record-tester.c', 'girtest-untyped-record-tester.c', diff --git a/src/Tests/Libs/GirTest-0.1.Tests/StringArrayTest.cs b/src/Tests/Libs/GirTest-0.1.Tests/StringArrayTest.cs new file mode 100644 index 000000000..a1efc66af --- /dev/null +++ b/src/Tests/Libs/GirTest-0.1.Tests/StringArrayTest.cs @@ -0,0 +1,23 @@ +using FluentAssertions; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace GirTest.Tests; + +[TestClass, TestCategory("BindingTest")] +public class StringArrayTest : Test +{ + [TestMethod] + public void ReturnNullTerminatedStringArrayTransferNone() + { + var array = new[] { "FOO", "BAR" }; + StringArrayTester.ReturnTransferNone().Should().BeEquivalentTo(array); + } + + [TestMethod] + public void ParameterNullTerminatedStringArrayTransferNone() + { + var array = new[] { "FOO", "BAR" }; + StringArrayTester.ReturnElementParameterNullTerminatedTransferNone(array, 0).Should().Be(array[0]); + StringArrayTester.ReturnElementParameterNullTerminatedTransferNone(array, 1).Should().Be(array[1]); + } +}