summaryrefslogtreecommitdiff
path: root/t/unit-tests/u-example-decorate.c
blob: 9b1d1ce753c02e4842b1542e423df002dfe0df45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#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);
}