]>
git.proxmox.com Git - libgit2.git/blob - tests/core/strmap.c
1 #include "clar_libgit2.h"
6 void test_core_strmap__initialize(void)
8 cl_git_pass(git_strmap_alloc(&g_table
));
9 cl_assert(g_table
!= NULL
);
12 void test_core_strmap__cleanup(void)
14 git_strmap_free(g_table
);
17 void test_core_strmap__0(void)
19 cl_assert(git_strmap_num_entries(g_table
) == 0);
22 static void insert_strings(git_strmap
*table
, int count
)
27 for (i
= 0; i
< count
; ++i
) {
29 for (j
= 0; j
< 10; ++j
)
30 str
[j
] = 'a' + (i
% 26);
33 /* if > 26, then encode larger value in first letters */
34 for (j
= 0, over
= i
/ 26; over
> 0; j
++, over
= over
/ 26)
35 str
[j
] = 'A' + (over
% 26);
37 git_strmap_insert(table
, str
, str
, &err
);
41 cl_assert((int)git_strmap_num_entries(table
) == count
);
44 void test_core_strmap__1(void)
49 insert_strings(g_table
, 20);
51 cl_assert(git_strmap_exists(g_table
, "aaaaaaaaa"));
52 cl_assert(git_strmap_exists(g_table
, "ggggggggg"));
53 cl_assert(!git_strmap_exists(g_table
, "aaaaaaaab"));
54 cl_assert(!git_strmap_exists(g_table
, "abcdefghi"));
57 git_strmap_foreach_value(g_table
, str
, { i
++; free(str
); });
61 void test_core_strmap__2(void)
67 insert_strings(g_table
, 20);
69 cl_assert(git_strmap_exists(g_table
, "aaaaaaaaa"));
70 cl_assert(git_strmap_exists(g_table
, "ggggggggg"));
71 cl_assert(!git_strmap_exists(g_table
, "aaaaaaaab"));
72 cl_assert(!git_strmap_exists(g_table
, "abcdefghi"));
74 cl_assert(git_strmap_exists(g_table
, "bbbbbbbbb"));
75 pos
= git_strmap_lookup_index(g_table
, "bbbbbbbbb");
76 cl_assert(git_strmap_valid_index(g_table
, pos
));
77 cl_assert_equal_s(git_strmap_value_at(g_table
, pos
), "bbbbbbbbb");
78 free(git_strmap_value_at(g_table
, pos
));
79 git_strmap_delete_at(g_table
, pos
);
81 cl_assert(!git_strmap_exists(g_table
, "bbbbbbbbb"));
84 git_strmap_foreach_value(g_table
, str
, { i
++; free(str
); });
88 void test_core_strmap__3(void)
93 insert_strings(g_table
, 10000);
96 git_strmap_foreach_value(g_table
, str
, { i
++; free(str
); });
97 cl_assert(i
== 10000);