mirror of
https://github.com/zeromq/libzmq.git
synced 2025-01-14 01:37:56 +08:00
Problem: insufficient unit tests for mtrie
Solution: added further test cases
This commit is contained in:
parent
5fb0e97ab7
commit
15b4f596a8
@ -143,6 +143,17 @@ void test_add_rm_single_entry_match_exact ()
|
|||||||
TEST_ASSERT_EQUAL_INT (0, count);
|
TEST_ASSERT_EQUAL_INT (0, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_rm_nonexistent_0_size_empty ()
|
||||||
|
{
|
||||||
|
int pipe;
|
||||||
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
|
|
||||||
|
// TODO why does this return true, but test_rm_nonexistent_empty returns false?
|
||||||
|
// or is this not a legal call at all?
|
||||||
|
bool res = mtrie.rm (0, 0, &pipe);
|
||||||
|
TEST_ASSERT_TRUE (res);
|
||||||
|
}
|
||||||
|
|
||||||
void test_rm_nonexistent_empty ()
|
void test_rm_nonexistent_empty ()
|
||||||
{
|
{
|
||||||
int pipe;
|
int pipe;
|
||||||
@ -344,6 +355,52 @@ void test_rm_with_callback_multiple_reverse_order ()
|
|||||||
add_entries_rm_pipes_unique (names);
|
add_entries_rm_pipes_unique (names);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void check_count (zmq::generic_mtrie_t<int>::prefix_t data_,
|
||||||
|
size_t len_,
|
||||||
|
void *void_count_)
|
||||||
|
{
|
||||||
|
int *count = reinterpret_cast<int *> (void_count_);
|
||||||
|
--count;
|
||||||
|
TEST_ASSERT_GREATER_OR_EQUAL (0, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_duplicate_entry (zmq::generic_mtrie_t<int> &mtrie, int (&pipes)[2])
|
||||||
|
{
|
||||||
|
const char *name = "foo";
|
||||||
|
|
||||||
|
const zmq::generic_mtrie_t<int>::prefix_t name_data =
|
||||||
|
reinterpret_cast<zmq::generic_mtrie_t<int>::prefix_t> (name);
|
||||||
|
|
||||||
|
bool res = mtrie.add (name_data, getlen (name_data), &pipes[0]);
|
||||||
|
TEST_ASSERT_TRUE (res);
|
||||||
|
res = mtrie.add (name_data, getlen (name_data), &pipes[1]);
|
||||||
|
TEST_ASSERT_FALSE (res);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_rm_with_callback_duplicate ()
|
||||||
|
{
|
||||||
|
int pipes[2];
|
||||||
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
|
add_duplicate_entry (mtrie, pipes);
|
||||||
|
|
||||||
|
int count = 1;
|
||||||
|
mtrie.rm (&pipes[0], check_count, &count, false);
|
||||||
|
count = 1;
|
||||||
|
mtrie.rm (&pipes[1], check_count, &count, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_rm_with_callback_duplicate_uniq_only ()
|
||||||
|
{
|
||||||
|
int pipes[2];
|
||||||
|
zmq::generic_mtrie_t<int> mtrie;
|
||||||
|
add_duplicate_entry (mtrie, pipes);
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
mtrie.rm (&pipes[0], check_count, &count, true);
|
||||||
|
count = 1;
|
||||||
|
mtrie.rm (&pipes[1], check_count, &count, true);
|
||||||
|
}
|
||||||
|
|
||||||
int main (void)
|
int main (void)
|
||||||
{
|
{
|
||||||
setup_test_environment ();
|
setup_test_environment ();
|
||||||
@ -357,6 +414,7 @@ int main (void)
|
|||||||
RUN_TEST (test_add_two_entries_match_prefix_and_exact);
|
RUN_TEST (test_add_two_entries_match_prefix_and_exact);
|
||||||
RUN_TEST (test_add_two_entries_with_same_name_match_exact);
|
RUN_TEST (test_add_two_entries_with_same_name_match_exact);
|
||||||
|
|
||||||
|
RUN_TEST (test_rm_nonexistent_0_size_empty);
|
||||||
RUN_TEST (test_rm_nonexistent_empty);
|
RUN_TEST (test_rm_nonexistent_empty);
|
||||||
#if 0
|
#if 0
|
||||||
RUN_TEST (test_rm_nonexistent_nonempty_samename);
|
RUN_TEST (test_rm_nonexistent_nonempty_samename);
|
||||||
@ -375,6 +433,8 @@ int main (void)
|
|||||||
|
|
||||||
RUN_TEST (test_rm_with_callback_multiple_in_order);
|
RUN_TEST (test_rm_with_callback_multiple_in_order);
|
||||||
RUN_TEST (test_rm_with_callback_multiple_reverse_order);
|
RUN_TEST (test_rm_with_callback_multiple_reverse_order);
|
||||||
|
RUN_TEST (test_rm_with_callback_duplicate);
|
||||||
|
RUN_TEST (test_rm_with_callback_duplicate_uniq_only);
|
||||||
|
|
||||||
return UNITY_END ();
|
return UNITY_END ();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user