From: Vladyslav Stovmanenko Date: Fri, 6 May 2022 14:02:05 +0000 (+0000) Subject: Update tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d8c0a198a7cbdaaceab8adf21316f4e1930ab79f;p=thirdparty%2Fvala.git Update tests --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 147c66676..8bc5a3e11 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -56,6 +56,7 @@ TESTS = \ basic-types/arrays.vala \ basic-types/arrays-generics.vala \ basic-types/arrays-fixed-assignment.vala \ + basic-types/arrays-move-with-class.vala \ basic-types/array-uint8-uchar-compat.vala \ basic-types/pointers.vala \ basic-types/pointers-arithmetic.vala \ diff --git a/tests/basic-types/arrays-move-with-class.vala b/tests/basic-types/arrays-move-with-class.vala new file mode 100644 index 000000000..4a6525703 --- /dev/null +++ b/tests/basic-types/arrays-move-with-class.vala @@ -0,0 +1,30 @@ +class TestDestructorCalls { + public static int destructor_calls = 0; + private int idx; + + public TestDestructorCalls (int idx) { this.idx = idx; } + + ~TestDestructorCalls () { destructor_calls++; } +} + +void test_array_with_classes_move (int src, int dest, int count, int expected_destructor_calls) +{ + const int arr_size = 5; + TestDestructorCalls.destructor_calls = 0; + TestDestructorCalls[] arr = new TestDestructorCalls[arr_size]; + for(int i=0; i dest)) { + gssize i; + for (i = dest; i < (src + length); i++) { + free_func (((void**) array)[i]); + } + } else if ((src > dest) && (src < (dest + length))) { + gssize i; + for (i = dest; i < src; i++) { + free_func (((void**) array)[i]); + } + } else if (src != dest) { + gssize i; + for (i = dest; i < (dest + length); i++) { + free_func (((void**) array)[i]); + } + } + } memmove (((char*) array) + (dest * element_size), ((char*) array) + (src * element_size), length * element_size); if ((src < dest) && ((src + length) > dest)) { memset (((char*) array) + (src * element_size), 0, (dest - src) * element_size); diff --git a/tests/basic-types/arrays.vala b/tests/basic-types/arrays.vala index 1321c1b31..0a94a6acb 100644 --- a/tests/basic-types/arrays.vala +++ b/tests/basic-types/arrays.vala @@ -213,11 +213,32 @@ void test_explicit_copying () { assert (a0[1] == a1[1]); } -void test_array_move () { +void test_array_with_primitives_move () { int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; assert (a[4] == 5); a.move (4, 0, 5); assert (a[4] == 9); + assert (a[8] == 0); +} + +struct TestMoveCall { + int idx; + + public TestMoveCall (int idx) { this.idx = idx; } +} + +void test_array_with_struct_move (int src, int dest, int count, int expected_destructor_calls) +{ + const int arr_size = 5; + TestMoveCall[] arr = new TestMoveCall[arr_size]; + for(int i=0; i dest)) { + ssize_t i; + for (i = dest; i < (src + length); i++) { + free_func (((void**) array)[i]); + } + } else if ((src > dest) && (src < (dest + length))) { + ssize_t i; + for (i = dest; i < src; i++) { + free_func (((void**) array)[i]); + } + } else if (src != dest) { + ssize_t i; + for (i = dest; i < (dest + length); i++) { + free_func (((void**) array)[i]); + } + } + } memmove (((char*) array) + (dest * element_size), ((char*) array) + (src * element_size), length * element_size); if ((src < dest) && ((src + length) > dest)) { memset (((char*) array) + (src * element_size), 0, (dest - src) * element_size);