
Introduce `test_example_decorate__initialize()` to explicitly set up object IDs and retrieve corresponding objects before tests run. This ensures a consistent and predictable test state without relying on data from previous tests. Add `test_example_decorate__cleanup()` to clear decorations after each test, preventing interference between tests and ensuring each runs in isolation. Adapt example decorate test script to clar framework by using clar assertions where necessary. Previously, tests relied on data written by earlier tests, leading to unintended dependencies between them. This explicitly initializes the necessary state within `test_example_decorate__readd`, ensuring it does not depend on prior test executions. Mentored-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
65 lines
1.9 KiB
C
65 lines
1.9 KiB
C
#define USE_THE_REPOSITORY_VARIABLE
|
|
|
|
#include "unit-test.h"
|
|
#include "object.h"
|
|
#include "decorate.h"
|
|
#include "repository.h"
|
|
|
|
struct test_vars {
|
|
struct object *one, *two, *three;
|
|
struct decoration n;
|
|
int decoration_a, decoration_b;
|
|
};
|
|
|
|
static struct test_vars vars;
|
|
|
|
void test_example_decorate__initialize(void)
|
|
{
|
|
struct object_id one_oid = { { 1 } }, two_oid = { { 2 } }, three_oid = { { 3 } };
|
|
|
|
vars.one = lookup_unknown_object(the_repository, &one_oid);
|
|
vars.two = lookup_unknown_object(the_repository, &two_oid);
|
|
vars.three = lookup_unknown_object(the_repository, &three_oid);
|
|
}
|
|
|
|
void test_example_decorate__cleanup(void)
|
|
{
|
|
clear_decoration(&vars.n, NULL);
|
|
}
|
|
|
|
void test_example_decorate__add(void)
|
|
{
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.one, &vars.decoration_a), NULL);
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.two, NULL), NULL);
|
|
}
|
|
|
|
void test_example_decorate__readd(void)
|
|
{
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.one, &vars.decoration_a), NULL);
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.two, NULL), NULL);
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.one, NULL), &vars.decoration_a);
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.two, &vars.decoration_b), NULL);
|
|
}
|
|
|
|
void test_example_decorate__lookup(void)
|
|
{
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.two, &vars.decoration_b), NULL);
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.one, NULL), NULL);
|
|
cl_assert_equal_p(lookup_decoration(&vars.n, vars.two), &vars.decoration_b);
|
|
cl_assert_equal_p(lookup_decoration(&vars.n, vars.one), NULL);
|
|
}
|
|
|
|
void test_example_decorate__loop(void)
|
|
{
|
|
int objects_noticed = 0;
|
|
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.one, &vars.decoration_a), NULL);
|
|
cl_assert_equal_p(add_decoration(&vars.n, vars.two, &vars.decoration_b), NULL);
|
|
|
|
for (size_t i = 0; i < vars.n.size; i++)
|
|
if (vars.n.entries[i].base)
|
|
objects_noticed++;
|
|
|
|
cl_assert_equal_i(objects_noticed, 2);
|
|
}
|