mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-26 23:01:04 +08:00
Problem: insufficient unit tests for mtrie
Solution: added test case, reduced code duplication in tests
This commit is contained in:
parent
0e34d13063
commit
8bb055ece8
@ -36,7 +36,7 @@ void tearDown ()
|
|||||||
|
|
||||||
int getlen (const zmq::generic_mtrie_t<int>::prefix_t &data)
|
int getlen (const zmq::generic_mtrie_t<int>::prefix_t &data)
|
||||||
{
|
{
|
||||||
return strlen (reinterpret_cast<const char *> (data));
|
return (int) strlen (reinterpret_cast<const char *> (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_create ()
|
void test_create ()
|
||||||
@ -213,7 +213,7 @@ void test_rm_nonexistent_nonempty_prefixed ()
|
|||||||
void add_indexed_expect_unique (zmq::generic_mtrie_t<int> &mtrie,
|
void add_indexed_expect_unique (zmq::generic_mtrie_t<int> &mtrie,
|
||||||
int *pipes,
|
int *pipes,
|
||||||
const char **names,
|
const char **names,
|
||||||
int i)
|
size_t i)
|
||||||
{
|
{
|
||||||
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
||||||
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
||||||
@ -225,7 +225,7 @@ void add_indexed_expect_unique (zmq::generic_mtrie_t<int> &mtrie,
|
|||||||
void test_rm_nonexistent_between ()
|
void test_rm_nonexistent_between ()
|
||||||
{
|
{
|
||||||
int pipes[3];
|
int pipes[3];
|
||||||
const char *names[3] = {"foo1", "foo2", "foo3"};
|
const char *names[] = {"foo1", "foo2", "foo3"};
|
||||||
|
|
||||||
zmq::generic_mtrie_t<int> mtrie;
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
add_indexed_expect_unique (mtrie, pipes, names, 0);
|
add_indexed_expect_unique (mtrie, pipes, names, 0);
|
||||||
@ -238,17 +238,25 @@ void test_rm_nonexistent_between ()
|
|||||||
TEST_ASSERT_FALSE (res);
|
TEST_ASSERT_FALSE (res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <size_t N>
|
||||||
|
void add_entries (zmq::generic_mtrie_t<int> &mtrie,
|
||||||
|
int (&pipes)[N],
|
||||||
|
const char *(&names)[N])
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < N; ++i) {
|
||||||
|
add_indexed_expect_unique (mtrie, pipes, names, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void test_add_multiple ()
|
void test_add_multiple ()
|
||||||
{
|
{
|
||||||
int pipes[3];
|
int pipes[3];
|
||||||
const char *names[3] = {"foo1", "foo2", "foo3"};
|
const char *names[] = {"foo1", "foo2", "foo3"};
|
||||||
|
|
||||||
zmq::generic_mtrie_t<int> mtrie;
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
for (int i = 0; i < 3; ++i) {
|
add_entries (mtrie, pipes, names);
|
||||||
add_indexed_expect_unique (mtrie, pipes, names, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 3; ++i) {
|
for (size_t i = 0; i < sizeof (names) / sizeof (names[0]); ++i) {
|
||||||
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
||||||
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
||||||
int count = 0;
|
int count = 0;
|
||||||
@ -260,14 +268,14 @@ void test_add_multiple ()
|
|||||||
void test_add_multiple_reverse ()
|
void test_add_multiple_reverse ()
|
||||||
{
|
{
|
||||||
int pipes[3];
|
int pipes[3];
|
||||||
const char *names[3] = {"foo1", "foo2", "foo3"};
|
const char *names[] = {"foo1", "foo2", "foo3"};
|
||||||
|
|
||||||
zmq::generic_mtrie_t<int> mtrie;
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
for (int i = 2; i >= 0; --i) {
|
for (int i = 2; i >= 0; --i) {
|
||||||
add_indexed_expect_unique (mtrie, pipes, names, i);
|
add_indexed_expect_unique (mtrie, pipes, names, (size_t)i);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 3; ++i) {
|
for (size_t i = 0; i < 3; ++i) {
|
||||||
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
||||||
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
||||||
int count = 0;
|
int count = 0;
|
||||||
@ -276,17 +284,13 @@ void test_add_multiple_reverse ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_rm_multiple_in_order ()
|
template <size_t N> void add_and_rm_entries (const char *(&names)[N])
|
||||||
{
|
{
|
||||||
int pipes[3];
|
int pipes[N];
|
||||||
const char *names[3] = {"foo1", "foo2", "foo3"};
|
|
||||||
|
|
||||||
zmq::generic_mtrie_t<int> mtrie;
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
for (int i = 0; i < 3; ++i) {
|
add_entries (mtrie, pipes, names);
|
||||||
add_indexed_expect_unique (mtrie, pipes, names, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 3; ++i) {
|
for (size_t i = 0; i < N; ++i) {
|
||||||
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
||||||
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
||||||
|
|
||||||
@ -295,25 +299,51 @@ void test_rm_multiple_in_order ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_rm_multiple_in_order ()
|
||||||
|
{
|
||||||
|
const char *names[] = {"foo1", "foo2", "foo3"};
|
||||||
|
add_and_rm_entries (names);
|
||||||
|
}
|
||||||
|
|
||||||
void test_rm_multiple_reverse_order ()
|
void test_rm_multiple_reverse_order ()
|
||||||
{
|
{
|
||||||
int pipes[3];
|
const char *names[] = {"foo3", "foo2", "foo1"};
|
||||||
const char *names[3] = {"foo1", "foo2", "foo3"};
|
add_and_rm_entries (names);
|
||||||
|
}
|
||||||
|
|
||||||
|
void check_name (zmq::generic_mtrie_t<int>::prefix_t data_,
|
||||||
|
size_t len_,
|
||||||
|
void *void_name_)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL_UINT (strlen ((char *) void_name_), len_);
|
||||||
|
TEST_ASSERT_EQUAL_STRING_LEN (void_name_, data_, len_);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <size_t N> void add_entries_rm_pipes_unique (const char *(&names)[N])
|
||||||
|
{
|
||||||
|
int pipes[N];
|
||||||
zmq::generic_mtrie_t<int> mtrie;
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
for (int i = 0; i < 3; ++i) {
|
add_entries (mtrie, pipes, names);
|
||||||
add_indexed_expect_unique (mtrie, pipes, names, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 2; i >= 0; --i) {
|
for (size_t i = 0; i < N; ++i) {
|
||||||
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
mtrie.rm (&pipes[i], check_name, const_cast<char *> (names[i]), false);
|
||||||
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (names[i]);
|
|
||||||
|
|
||||||
bool res = mtrie.rm (name_data, getlen (name_data), &pipes[i]);
|
|
||||||
TEST_ASSERT_TRUE (res);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_rm_with_callback_multiple_in_order ()
|
||||||
|
{
|
||||||
|
const char *names[] = {"foo1", "foo2", "foo3"};
|
||||||
|
|
||||||
|
add_entries_rm_pipes_unique (names);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_rm_with_callback_multiple_reverse_order ()
|
||||||
|
{
|
||||||
|
const char *names[] = {"foo3", "foo2", "foo1"};
|
||||||
|
|
||||||
|
add_entries_rm_pipes_unique (names);
|
||||||
|
}
|
||||||
|
|
||||||
int main (void)
|
int main (void)
|
||||||
{
|
{
|
||||||
setup_test_environment ();
|
setup_test_environment ();
|
||||||
@ -343,5 +373,8 @@ int main (void)
|
|||||||
RUN_TEST (test_rm_multiple_in_order);
|
RUN_TEST (test_rm_multiple_in_order);
|
||||||
RUN_TEST (test_rm_multiple_reverse_order);
|
RUN_TEST (test_rm_multiple_reverse_order);
|
||||||
|
|
||||||
|
RUN_TEST (test_rm_with_callback_multiple_in_order);
|
||||||
|
RUN_TEST (test_rm_with_callback_multiple_reverse_order);
|
||||||
|
|
||||||
return UNITY_END ();
|
return UNITY_END ();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user