# HG changeset patch # User Mike Becker # Date 1668958083 -3600 # Node ID 3d93cd78aa20508fec34f260c156551a94e57808 # Parent 646e38efc7bc742701521a58b197d303a5d38ff5 #219 array list: implement compare member func diff -r 646e38efc7bc -r 3d93cd78aa20 src/array_list.c --- a/src/array_list.c Sun Nov 20 16:22:50 2022 +0100 +++ b/src/array_list.c Sun Nov 20 16:28:03 2022 +0100 @@ -272,7 +272,21 @@ struct cx_list_s const *list, struct cx_list_s const *other ) { - + if (list->size == other->size) { + char const *left = ((cx_array_list const *) list)->data; + char const *right = ((cx_array_list const *) other)->data; + for (size_t i = 0; i < list->size; i++) { + int d = list->cmpfunc(left, right); + if (d != 0) { + return d; + } + left += list->itemsize; + right += other->itemsize; + } + return 0; + } else { + return list->size < other->size ? -1 : 1; + } } static void cx_arl_reverse(struct cx_list_s *list) { diff -r 646e38efc7bc -r 3d93cd78aa20 test/test_list.cpp --- a/test/test_list.cpp Sun Nov 20 16:22:50 2022 +0100 +++ b/test/test_list.cpp Sun Nov 20 16:28:03 2022 +0100 @@ -974,7 +974,6 @@ } TEST_F(ArrayList, cxListCompare) { - ASSERT_EQ(1,0); // TODO: remove when implemented auto left = arrayListFromTestData(); auto right = arrayListFromTestData(); verifyCompare(left, right);