public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Seyi Kuforiji <kuforiji98@gmail•com>
To: git@vger•kernel.org
Cc: ps@pks•im, phillip.wood@dunelm•org.uk, gitster@pobox•com,
	Seyi Kuforiji <kuforiji98@gmail•com>
Subject: [PATCH v3 4/4] t/unit-tests: convert reftable tree test to use clar test framework
Date: Fri, 17 Jan 2025 13:29:26 +0100	[thread overview]
Message-ID: <20250117122926.101749-5-kuforiji98@gmail.com> (raw)
In-Reply-To: <20250117122926.101749-1-kuforiji98@gmail.com>

Adapts reftable tree test script to clar framework by using clar
assertions where necessary.

Mentored-by: Patrick Steinhardt <ps@pks•im>
Signed-off-by: Seyi Kuforiji <kuforiji98@gmail•com>
---
 Makefile                       |  2 +-
 t/meson.build                  |  2 +-
 t/unit-tests/t-reftable-tree.c | 86 ----------------------------------
 t/unit-tests/u-reftable-tree.c | 78 ++++++++++++++++++++++++++++++
 4 files changed, 80 insertions(+), 88 deletions(-)
 delete mode 100644 t/unit-tests/t-reftable-tree.c
 create mode 100644 t/unit-tests/u-reftable-tree.c

diff --git a/Makefile b/Makefile
index 049f857512..75dbb8e25f 100644
--- a/Makefile
+++ b/Makefile
@@ -1340,6 +1340,7 @@ THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR)/clar/clar/%
 CLAR_TEST_SUITES += u-ctype
 CLAR_TEST_SUITES += u-mem-pool
 CLAR_TEST_SUITES += u-prio-queue
+CLAR_TEST_SUITES += u-reftable-tree
 CLAR_TEST_SUITES += u-strvec
 CLAR_TEST_PROG = $(UNIT_TEST_BIN)/unit-tests$(X)
 CLAR_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(CLAR_TEST_SUITES))
@@ -1360,7 +1361,6 @@ UNIT_TEST_PROGRAMS += t-reftable-reader
 UNIT_TEST_PROGRAMS += t-reftable-readwrite
 UNIT_TEST_PROGRAMS += t-reftable-record
 UNIT_TEST_PROGRAMS += t-reftable-stack
-UNIT_TEST_PROGRAMS += t-reftable-tree
 UNIT_TEST_PROGRAMS += t-strbuf
 UNIT_TEST_PROGRAMS += t-strcmp-offset
 UNIT_TEST_PROGRAMS += t-trailer
diff --git a/t/meson.build b/t/meson.build
index 09232967cd..6dd41216ef 100644
--- a/t/meson.build
+++ b/t/meson.build
@@ -2,6 +2,7 @@ clar_test_suites = [
   'unit-tests/u-ctype.c',
   'unit-tests/u-mem-pool.c',
   'unit-tests/u-prio-queue.c',
+  'unit-tests/u-reftable-tree.c',
   'unit-tests/u-strvec.c',
 ]
 
@@ -56,7 +57,6 @@ unit_test_programs = [
   'unit-tests/t-reftable-readwrite.c',
   'unit-tests/t-reftable-record.c',
   'unit-tests/t-reftable-stack.c',
-  'unit-tests/t-reftable-tree.c',
   'unit-tests/t-strbuf.c',
   'unit-tests/t-strcmp-offset.c',
   'unit-tests/t-trailer.c',
diff --git a/t/unit-tests/t-reftable-tree.c b/t/unit-tests/t-reftable-tree.c
deleted file mode 100644
index 79b175a45a..0000000000
--- a/t/unit-tests/t-reftable-tree.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
-
-#include "test-lib.h"
-#include "reftable/tree.h"
-
-static int t_compare(const void *a, const void *b)
-{
-	return (char *)a - (char *)b;
-}
-
-struct curry {
-	void **arr;
-	size_t len;
-};
-
-static void store(void *arg, void *key)
-{
-	struct curry *c = arg;
-	c->arr[c->len++] = key;
-}
-
-static void t_tree_search(void)
-{
-	struct tree_node *root = NULL;
-	void *values[11] = { 0 };
-	struct tree_node *nodes[11] = { 0 };
-	size_t i = 1;
-
-	/*
-	 * Pseudo-randomly insert the pointers for elements between
-	 * values[1] and values[10] (inclusive) in the tree.
-	 */
-	do {
-		nodes[i] = tree_insert(&root, &values[i], &t_compare);
-		check(nodes[i] != NULL);
-		i = (i * 7) % 11;
-	} while (i != 1);
-
-	for (i = 1; i < ARRAY_SIZE(nodes); i++) {
-		check_pointer_eq(&values[i], nodes[i]->key);
-		check_pointer_eq(nodes[i], tree_search(root, &values[i], &t_compare));
-	}
-
-	check(!tree_search(root, values, t_compare));
-	tree_free(root);
-}
-
-static void t_infix_walk(void)
-{
-	struct tree_node *root = NULL;
-	void *values[11] = { 0 };
-	void *out[11] = { 0 };
-	struct curry c = {
-		.arr = (void **) &out,
-	};
-	size_t i = 1;
-	size_t count = 0;
-
-	do {
-		struct tree_node *node = tree_insert(&root, &values[i], t_compare);
-		check(node != NULL);
-		i = (i * 7) % 11;
-		count++;
-	} while (i != 1);
-
-	infix_walk(root, &store, &c);
-	for (i = 1; i < ARRAY_SIZE(values); i++)
-		check_pointer_eq(&values[i], out[i - 1]);
-	check(!out[i - 1]);
-	check_int(c.len, ==, count);
-	tree_free(root);
-}
-
-int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
-{
-	TEST(t_tree_search(), "tree_search works");
-	TEST(t_infix_walk(), "infix_walk works");
-
-	return test_done();
-}
diff --git a/t/unit-tests/u-reftable-tree.c b/t/unit-tests/u-reftable-tree.c
new file mode 100644
index 0000000000..bcf9061071
--- /dev/null
+++ b/t/unit-tests/u-reftable-tree.c
@@ -0,0 +1,78 @@
+/*
+Copyright 2020 Google LLC
+
+Use of this source code is governed by a BSD-style
+license that can be found in the LICENSE file or at
+https://developers.google.com/open-source/licenses/bsd
+*/
+
+#include "unit-test.h"
+#include "reftable/tree.h"
+
+static int t_compare(const void *a, const void *b)
+{
+	return (char *)a - (char *)b;
+}
+
+struct curry {
+	void **arr;
+	size_t len;
+};
+
+static void store(void *arg, void *key)
+{
+	struct curry *c = arg;
+	c->arr[c->len++] = key;
+}
+
+void test_reftable_tree__tree_search(void)
+{
+	struct tree_node *root = NULL;
+	void *values[11] = { 0 };
+	struct tree_node *nodes[11] = { 0 };
+	size_t i = 1;
+
+	/*
+	 * Pseudo-randomly insert the pointers for elements between
+	 * values[1] and values[10] (inclusive) in the tree.
+	 */
+	do {
+		nodes[i] = tree_insert(&root, &values[i], &t_compare);
+		cl_assert(nodes[i] != NULL);
+		i = (i * 7) % 11;
+	} while (i != 1);
+
+	for (i = 1; i < ARRAY_SIZE(nodes); i++) {
+		cl_assert_equal_p(&values[i], nodes[i]->key);
+		cl_assert_equal_p(nodes[i], tree_search(root, &values[i], &t_compare));
+	}
+
+	cl_assert(tree_search(root, values, t_compare) == NULL);
+	tree_free(root);
+}
+
+void test_reftable_tree__infix_walk(void)
+{
+	struct tree_node *root = NULL;
+	void *values[11] = { 0 };
+	void *out[11] = { 0 };
+	struct curry c = {
+		.arr = (void **) &out,
+	};
+	size_t i = 1;
+	size_t count = 0;
+
+	do {
+		struct tree_node *node = tree_insert(&root, &values[i], t_compare);
+		cl_assert(node != NULL);
+		i = (i * 7) % 11;
+		count++;
+	} while (i != 1);
+
+	infix_walk(root, &store, &c);
+	for (i = 1; i < ARRAY_SIZE(values); i++)
+		cl_assert_equal_p(&values[i], out[i - 1]);
+	cl_assert(out[i - 1] == NULL);
+	cl_assert_equal_i(c.len, count);
+	tree_free(root);
+}
-- 
2.34.1


  parent reply	other threads:[~2025-01-17 12:30 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-16 10:49 [PATCH 0/4] t/unit-tests: convert unit-tests to use clar Seyi Kuforiji
2025-01-16 10:49 ` [PATCH 1/4] t/unit-tests: handle dashes in test suite filenames Seyi Kuforiji
2025-01-16 13:12   ` Patrick Steinhardt
2025-01-16 10:49 ` [PATCH 2/4] t/unit-tests: convert mem-pool test to use clar test framework Seyi Kuforiji
2025-01-16 13:12   ` Patrick Steinhardt
2025-01-16 17:45     ` Junio C Hamano
2025-01-16 10:49 ` [PATCH 3/4] t/unit-tests: adapt priority queue " Seyi Kuforiji
2025-01-16 13:13   ` Patrick Steinhardt
2025-01-16 10:49 ` [PATCH 4/4] t/unit-tests: convert reftable tree " Seyi Kuforiji
2025-01-16 16:15 ` [PATCH v2 0/4] t/unit-tests: convert unit-tests to use clar Seyi Kuforiji
2025-01-16 16:15   ` [PATCH v2 1/4] t/unit-tests: handle dashes in test suite filenames Seyi Kuforiji
2025-01-17  6:27     ` Patrick Steinhardt
2025-01-16 16:15   ` [PATCH v2 2/4] t/unit-tests: convert mem-pool test to use clar test framework Seyi Kuforiji
2025-01-16 16:15   ` [PATCH v2 3/4] t/unit-tests: adapt priority queue " Seyi Kuforiji
2025-01-16 16:15   ` [PATCH v2 4/4] t/unit-tests: convert reftable tree " Seyi Kuforiji
2025-01-17  6:27   ` [PATCH v2 0/4] t/unit-tests: convert unit-tests to use clar Patrick Steinhardt
2025-01-17 12:29   ` Seyi Kuforiji
2025-01-17 12:29     ` [PATCH v3 1/4] t/unit-tests: handle dashes in test suite filenames Seyi Kuforiji
2025-01-17 12:29     ` [PATCH v3 2/4] t/unit-tests: convert mem-pool test to use clar test framework Seyi Kuforiji
2025-01-20 10:18       ` Karthik Nayak
2025-01-17 12:29     ` [PATCH v3 3/4] t/unit-tests: adapt priority queue " Seyi Kuforiji
2025-01-20 10:22       ` Karthik Nayak
2025-01-17 12:29     ` Seyi Kuforiji [this message]
2025-01-17 13:36     ` t/unit-tests: convert unit-tests to use clar Patrick Steinhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250117122926.101749-5-kuforiji98@gmail.com \
    --to=kuforiji98@gmail$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    --cc=gitster@pobox$(echo .)com \
    --cc=phillip.wood@dunelm$(echo .)org.uk \
    --cc=ps@pks$(echo .)im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox