git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 7/7] t-reftable-pq: add tests for merged_iter_pqueue_top()

From
CPChandra Pratap <chandrapratap3519@gmail.com>
Date
Jun 11, 2024, 08:19 UTC
Message-ID
<20240611083157.9876-8-chandrapratap3519@gmail.com>
In-Reply-To
<20240611083157.9876-1-chandrapratap3519@gmail.com>

merged_iter_pqueue_top() as defined by reftable/pq.{c, h} returns the element at the top of a priority-queue's heap without removing it. Since there are no tests for this function in the existing setup, add tests for the same.

Mentored-by: Patrick Steinhardt <ps@pks.im>
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Chandra Pratap <chandrapratap3519@gmail.com>
---
 t/unit-tests/t-reftable-pq.c | 49 ++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
diff --git a/t/unit-tests/t-reftable-pq.c b/t/unit-tests/t-reftable-pq.c
index e114a8cb0f..0e93cc97b1 100644
--- a/t/unit-tests/t-reftable-pq.c
+++ b/t/unit-tests/t-reftable-pq.c
@@ -18,6 +18,11 @@ static void merged_iter_pqueue_check(const struct merged_iter_pqueue *pq)
 	}
 }
 
+static int pq_entry_equal(struct pq_entry *a, struct pq_entry *b)
+{
+	return !reftable_record_cmp(a->rec, b->rec) && (a->index == b->index);
+}
+
 static void test_pq_record(void)
 {
 	struct merged_iter_pqueue pq = { 0 };
@@ -45,9 +50,11 @@ static void test_pq_record(void)
 	} while (i != 1);
 
 	while (!merged_iter_pqueue_is_empty(pq)) {
+		struct pq_entry top = merged_iter_pqueue_top(pq);
 		struct pq_entry e = merged_iter_pqueue_remove(&pq);
 		merged_iter_pqueue_check(&pq);
 
+		check(pq_entry_equal(&top, &e));
 		check(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
 		if (last)
 			check_int(strcmp(last, e.rec->u.ref.refname), <, 0);
@@ -82,9 +89,11 @@ static void test_pq_index(void)
 	}
 
 	for (i = N - 1; !merged_iter_pqueue_is_empty(pq); i--) {
+		struct pq_entry top = merged_iter_pqueue_top(pq);
 		struct pq_entry e = merged_iter_pqueue_remove(&pq);
 		merged_iter_pqueue_check(&pq);
 
+		check(pq_entry_equal(&top, &e));
 		check(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
 		check_int(e.index, ==, i);
 		if (last)
@@ -97,10 +106,50 @@ static void test_pq_index(void)
 	merged_iter_pqueue_release(&pq);
 }
 
+static void test_merged_iter_pqueue_top(void)
+{
+	struct merged_iter_pqueue pq = { 0 };
+	struct reftable_record recs[14];
+	size_t N = ARRAY_SIZE(recs), i;
+
+	for (i = 0; i < N; i++) {
+		reftable_record_init(&recs[i], BLOCK_TYPE_REF);
+		recs[i].u.ref.refname = xstrdup("refs/heads/master");
+	}
+
+	for (i = 0; i < N; i++) {
+		struct pq_entry e = {
+			.rec = &recs[i],
+			.index = i,
+		};
+
+		merged_iter_pqueue_add(&pq, &e);
+		merged_iter_pqueue_check(&pq);
+	}
+
+	for (i = N - 1; !merged_iter_pqueue_is_empty(pq); i--) {
+		struct pq_entry top = merged_iter_pqueue_top(pq);
+		struct pq_entry e = merged_iter_pqueue_remove(&pq);
+
+		merged_iter_pqueue_check(&pq);
+		check(pq_entry_equal(&top, &e));
+		check(reftable_record_equal(top.rec, &recs[i], GIT_SHA1_RAWSZ));
+		for (size_t j = 0; i < pq.len; j++) {
+			check(pq_less(&top, &pq.heap[j]));
+			check_int(top.index, >, j);
+		}
+	}
+
+	for (i = 0; i < N; i++)
+		reftable_record_release(&recs[i]);
+	merged_iter_pqueue_release(&pq);
+}
+
 int cmd_main(int argc, const char *argv[])
 {
 	TEST(test_pq_record(), "pq works with record-based comparison");
 	TEST(test_pq_index(), "pq works with index-based comparison");
+	TEST(test_merged_iter_pqueue_top(), "merged_iter_pqueue_top works");
 
 	return test_done();
 }
-- 
2.45.2.404.g9eaef5822c
Previous: Chandra PratapNext: Chandra Pratap
Message 31 of 78 in “t: port reftable/pq_test.c to the unit testing”
  1. Chandra PratapJun 6, 2024
  2. [GSoC][PATCH 1/6] reftable: clean up reftable/pq.cChandra Pratap, Jun 6, 2024
  3. Christian CouderJun 6, 2024
  4. Chandra PratapJun 6, 2024
  5. Christian CouderJun 6, 2024
  6. [GSoC][PATCH 2/6] t: move reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jun 6, 2024
  7. Patrick SteinhardtJun 6, 2024
  8. [GSoC][PATCH 3/6] t-reftable-pq: make merged_iter_pqueue_check() staticChandra Pratap, Jun 6, 2024
  9. [GSoC][PATCH 4/6] t-reftable-pq: make merged_iter_pqueue_check() callable by referenceChandra Pratap, Jun 6, 2024
  10. Patrick SteinhardtJun 6, 2024
  11. [GSoC][PATCH 5/6] t-reftable-pq: add test for index based comparisonChandra Pratap, Jun 6, 2024
  12. Patrick SteinhardtJun 6, 2024
  13. [GSoC][PATCH 6/6] t-reftable-pq: add tests for merged_iter_pqueue_top()Chandra Pratap, Jun 6, 2024
  14. Patrick SteinhardtJun 6, 2024
  15. [GSoC][PATCH v2 0/6] t: port reftable/pq_test.c to the unit testingChandra Pratap, Jun 6, 2024
  16. [GSoC][PATCH v2 1/6] reftable: clean up reftable/pq.cChandra Pratap, Jun 6, 2024
  17. Patrick SteinhardtJun 10, 2024
  18. [GSoC][PATCH v2 2/6] t: move reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jun 6, 2024
  19. [GSoC][PATCH v2 3/6] t-reftable-pq: make merged_iter_pqueue_check() staticChandra Pratap, Jun 6, 2024
  20. [GSoC][PATCH v2 4/6] t-reftable-pq: make merged_iter_pqueue_check() callable by referenceChandra Pratap, Jun 6, 2024
  21. [GSoC][PATCH v2 5/6] t-reftable-pq: add test for index based comparisonChandra Pratap, Jun 6, 2024
  22. [GSoC][PATCH v2 6/6] t-reftable-pq: add tests for merged_iter_pqueue_top()Chandra Pratap, Jun 6, 2024
  23. [GSoC][PATCH v3 0/7] t: port reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jun 11, 2024
  24. 1/7 reftable: remove unncessary curly braces in reftable/pq.cChandra Pratap, Jun 11, 2024
  25. 2/7 reftable: change the type of array indices to 'size_t' in reftable/pq.cChandra Pratap, Jun 11, 2024
  26. Patrick SteinhardtJun 11, 2024
  27. 3/7 t: move reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jun 11, 2024
  28. 4/7 t-reftable-pq: make merged_iter_pqueue_check() staticChandra Pratap, Jun 11, 2024
  29. 5/7 t-reftable-pq: make merged_iter_pqueue_check() callable by referenceChandra Pratap, Jun 11, 2024
  30. 6/7 t-reftable-pq: add test for index based comparisonChandra Pratap, Jun 11, 2024
  31. 7/7 t-reftable-pq: add tests for merged_iter_pqueue_top()Chandra Pratap, Jun 11, 2024
  32. [GSoC][PATCH v4 0/7] t: port reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jun 14, 2024
  33. 1/7 reftable: remove unncessary curly braces in reftable/pq.cChandra Pratap, Jun 14, 2024
  34. 2/7 reftable: change the type of array indices to 'size_t' in reftable/pq.cChandra Pratap, Jun 14, 2024
  35. 3/7 t: move reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jun 14, 2024
  36. 4/7 t-reftable-pq: make merged_iter_pqueue_check() staticChandra Pratap, Jun 14, 2024
  37. 5/7 t-reftable-pq: make merged_iter_pqueue_check() callable by referenceChandra Pratap, Jun 14, 2024
  38. 6/7 t-reftable-pq: add test for index based comparisonChandra Pratap, Jun 14, 2024
  39. 7/7 t-reftable-pq: add tests for merged_iter_pqueue_top()Chandra Pratap, Jun 14, 2024
  40. Junio C HamanoJun 14, 2024
  41. [GSoC][PATCH v5 0/7] t: port reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jul 23, 2024
  42. 1/7 reftable: remove unncessary curly braces in reftable/pq.cChandra Pratap, Jul 23, 2024
  43. 2/7 reftable: change the type of array indices to 'size_t' in reftable/pq.cChandra Pratap, Jul 23, 2024
  44. 3/7 t: move reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jul 23, 2024
  45. 4/7 t-reftable-pq: make merged_iter_pqueue_check() staticChandra Pratap, Jul 23, 2024
  46. 5/7 t-reftable-pq: make merged_iter_pqueue_check() callable by referenceChandra Pratap, Jul 23, 2024
  47. 6/7 t-reftable-pq: add test for index based comparisonChandra Pratap, Jul 23, 2024
  48. Patrick SteinhardtJul 24, 2024
  49. Junio C HamanoJul 24, 2024
  50. Patrick SteinhardtJul 25, 2024
  51. 7/7 t-reftable-pq: add tests for merged_iter_pqueue_top()Chandra Pratap, Jul 23, 2024
  52. Junio C HamanoJul 23, 2024
  53. Chandra PratapJul 24, 2024
  54. Christian CouderJul 24, 2024
  55. Chandra PratapJul 24, 2024
  56. Patrick SteinhardtJul 24, 2024
  57. Junio C HamanoJul 24, 2024
  58. [GSoC][PATCH v6 0/7] t: port reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jul 25, 2024
  59. 1/7 reftable: remove unncessary curly braces in reftable/pq.cChandra Pratap, Jul 25, 2024
  60. Kristoffer HaugsbakkJul 25, 2024
  61. 2/7 reftable: change the type of array indices to 'size_t' in reftable/pq.cChandra Pratap, Jul 25, 2024
  62. 3/7 t: move reftable/pq_test.c to the unit testing frameworkChandra Pratap, Jul 25, 2024
  63. 4/7 t-reftable-pq: make merged_iter_pqueue_check() staticChandra Pratap, Jul 25, 2024
  64. 5/7 t-reftable-pq: make merged_iter_pqueue_check() callable by referenceChandra Pratap, Jul 25, 2024
  65. 6/7 t-reftable-pq: add test for index based comparisonChandra Pratap, Jul 25, 2024
  66. Patrick SteinhardtJul 30, 2024
  67. 7/7 t-reftable-pq: add tests for merged_iter_pqueue_top()Chandra Pratap, Jul 25, 2024
  68. Patrick SteinhardtJul 30, 2024
  69. [GSoC][PATCH v7 0/7] t: port reftable/pq_test.c to the unit testing frameworkChandra Pratap, Aug 1, 2024
  70. 1/7 reftable: remove unnecessary curly braces in reftable/pq.cChandra Pratap, Aug 1, 2024
  71. 2/7 reftable: change the type of array indices to 'size_t' in reftable/pq.cChandra Pratap, Aug 1, 2024
  72. 3/7 t: move reftable/pq_test.c to the unit testing frameworkChandra Pratap, Aug 1, 2024
  73. 4/7 t-reftable-pq: make merged_iter_pqueue_check() staticChandra Pratap, Aug 1, 2024
  74. 5/7 t-reftable-pq: make merged_iter_pqueue_check() callable by referenceChandra Pratap, Aug 1, 2024
  75. 6/7 t-reftable-pq: add test for index based comparisonChandra Pratap, Aug 1, 2024
  76. 7/7 t-reftable-pq: add tests for merged_iter_pqueue_top()Chandra Pratap, Aug 1, 2024
  77. Patrick SteinhardtAug 1, 2024
  78. Junio C HamanoAug 1, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.