]>
git.proxmox.com Git - libgit2.git/blob - tests/core/strmap.c
1 #include "clar_libgit2.h"
8 void test_core_strmap__initialize(void)
10 cl_git_pass(git_strmap_alloc(&g_table
));
11 cl_assert(g_table
!= NULL
);
14 void test_core_strmap__cleanup(void)
16 git_strmap_free(g_table
);
19 void test_core_strmap__0(void)
21 cl_assert(git_strmap_num_entries(g_table
) == 0);
24 static void insert_strings(git_strmap
*table
, int count
)
29 for (i
= 0; i
< count
; ++i
) {
31 for (j
= 0; j
< 10; ++j
)
32 str
[j
] = 'a' + (i
% 26);
35 /* if > 26, then encode larger value in first letters */
36 for (j
= 0, over
= i
/ 26; over
> 0; j
++, over
= over
/ 26)
37 str
[j
] = 'A' + (over
% 26);
39 git_strmap_insert(table
, str
, str
, err
);
43 cl_assert((int)git_strmap_num_entries(table
) == count
);
46 void test_core_strmap__1(void)
51 insert_strings(g_table
, 20);
53 cl_assert(git_strmap_exists(g_table
, "aaaaaaaaa"));
54 cl_assert(git_strmap_exists(g_table
, "ggggggggg"));
55 cl_assert(!git_strmap_exists(g_table
, "aaaaaaaab"));
56 cl_assert(!git_strmap_exists(g_table
, "abcdefghi"));
59 git_strmap_foreach_value(g_table
, str
, { i
++; free(str
); });
63 void test_core_strmap__2(void)
69 insert_strings(g_table
, 20);
71 cl_assert(git_strmap_exists(g_table
, "aaaaaaaaa"));
72 cl_assert(git_strmap_exists(g_table
, "ggggggggg"));
73 cl_assert(!git_strmap_exists(g_table
, "aaaaaaaab"));
74 cl_assert(!git_strmap_exists(g_table
, "abcdefghi"));
76 cl_assert(git_strmap_exists(g_table
, "bbbbbbbbb"));
77 pos
= git_strmap_lookup_index(g_table
, "bbbbbbbbb");
78 cl_assert(git_strmap_valid_index(g_table
, pos
));
79 cl_assert_equal_s(git_strmap_value_at(g_table
, pos
), "bbbbbbbbb");
80 free(git_strmap_value_at(g_table
, pos
));
81 git_strmap_delete_at(g_table
, pos
);
83 cl_assert(!git_strmap_exists(g_table
, "bbbbbbbbb"));
86 git_strmap_foreach_value(g_table
, str
, { i
++; free(str
); });
90 void test_core_strmap__3(void)
95 insert_strings(g_table
, 10000);
98 git_strmap_foreach_value(g_table
, str
, { i
++; free(str
); });
99 cl_assert(i
== 10000);