Skip to content

Commit

Permalink
Port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c
Browse files Browse the repository at this point in the history
In the recent codebase update (8bf6fbd (Merge branch
'js/doc-unit-tests', 2023-12-09)), a new unit testing framework was
merged, providing a standardized approach for testing C code. Prior to
this update, some unit tests relied on the test helper mechanism,
lacking a dedicated unit testing framework. It's more natural to perform
these unit tests using the new unit test framework.

This commit migrates the unit tests for strcmp-offset functionality from
the legacy approach using the test-tool command
`test-tool strcmp-offset`and in helper/test-strcmp-offset.c  to the new
unit testing framework (t/unit-tests/test-lib.h).

The migration involves refactoring the tests to utilize the testing
macros provided by the framework (TEST() and check_*()).

Mentored-by: Christian Couder <[email protected]>
Signed-off-by: Achu Luma <[email protected]>
  • Loading branch information
achluma committed Mar 5, 2024
1 parent 43072b4 commit d6bede3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1347,6 +1347,7 @@ UNIT_TEST_PROGRAMS += t-mem-pool
UNIT_TEST_PROGRAMS += t-strbuf
UNIT_TEST_PROGRAMS += t-ctype
UNIT_TEST_PROGRAMS += t-prio-queue
UNIT_TEST_PROGRAMS += t-strcmp-offset
UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
UNIT_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(UNIT_TEST_PROGRAMS))
UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o
Expand Down
27 changes: 27 additions & 0 deletions t/unit-tests/t-strcmp-offset.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include "test-lib.h"
#include "read-cache-ll.h"

static void check_strcmp_offset(const char *string1, const char *string2, int expect_result, uintmax_t expect_offset)
{
int result;
size_t offset;

result = strcmp_offset(string1, string2, &offset);

/* Because different CRTs behave differently, only rely on signs of the result values. */
result = (result < 0 ? -1 :
result > 0 ? 1 :
0);

check_int(result, ==, expect_result);
check_uint((uintmax_t)offset, ==, expect_offset);
}

int cmd_main(int argc, const char **argv) {
TEST(check_strcmp_offset("abc", "abc", 0, 3), "strcmp_offset works");
TEST(check_strcmp_offset("abc", "def", -1, 0), "strcmp_offset works");
TEST(check_strcmp_offset("abc", "abz", -1, 2), "strcmp_offset works");
TEST(check_strcmp_offset("abc", "abcdef", -1, 3), "strcmp_offset works");

return test_done();
}

0 comments on commit d6bede3

Please sign in to comment.