mirror of https://github.com/djcb/mu.git
* add mu_msg_iter_reset (to reset iter to the beginning), add tests
This commit is contained in:
parent
4c1baccc86
commit
4dfe33609b
|
@ -124,6 +124,21 @@ update_msg (MuMsgIter *iter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
mu_msg_iter_reset (MuMsgIter *iter)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (iter, FALSE);
|
||||||
|
|
||||||
|
try {
|
||||||
|
iter->_cursor = iter->_matches.begin();
|
||||||
|
|
||||||
|
} MU_XAPIAN_CATCH_BLOCK_RETURN (FALSE);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_iter_next (MuMsgIter *iter)
|
mu_msg_iter_next (MuMsgIter *iter)
|
||||||
{
|
{
|
||||||
|
|
|
@ -62,6 +62,16 @@ MuMsgIter *mu_msg_iter_new (XapianEnquire *enq,
|
||||||
gboolean mu_msg_iter_next (MuMsgIter *iter);
|
gboolean mu_msg_iter_next (MuMsgIter *iter);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* reset the iterator to the beginning
|
||||||
|
*
|
||||||
|
* @param iter a valid MuMsgIter iterator
|
||||||
|
*
|
||||||
|
* @return TRUE if it succeeded, FALSE otherwise
|
||||||
|
*/
|
||||||
|
gboolean mu_msg_iter_reset (MuMsgIter *iter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* does this iterator point past the end of the list?
|
* does this iterator point past the end of the list?
|
||||||
*
|
*
|
||||||
|
|
|
@ -65,7 +65,7 @@ run_and_count_matches (const char *xpath, const char *query)
|
||||||
{
|
{
|
||||||
MuQuery *mquery;
|
MuQuery *mquery;
|
||||||
MuMsgIter *iter;
|
MuMsgIter *iter;
|
||||||
guint count;
|
guint count1, count2;
|
||||||
|
|
||||||
mquery = mu_query_new (xpath, NULL);
|
mquery = mu_query_new (xpath, NULL);
|
||||||
g_assert (query);
|
g_assert (query);
|
||||||
|
@ -85,12 +85,20 @@ run_and_count_matches (const char *xpath, const char *query)
|
||||||
mu_query_destroy (mquery);
|
mu_query_destroy (mquery);
|
||||||
g_assert (iter);
|
g_assert (iter);
|
||||||
|
|
||||||
for (count = 0; !mu_msg_iter_is_done(iter);
|
/* run query twice, to test mu_msg_iter_reset */
|
||||||
mu_msg_iter_next(iter), ++count);
|
for (count1 = 0; !mu_msg_iter_is_done(iter);
|
||||||
|
mu_msg_iter_next(iter), ++count1);
|
||||||
|
|
||||||
|
g_assert(mu_msg_iter_reset (iter));
|
||||||
|
|
||||||
|
for (count2 = 0; !mu_msg_iter_is_done(iter);
|
||||||
|
mu_msg_iter_next(iter), ++count2);
|
||||||
|
|
||||||
mu_msg_iter_destroy (iter);
|
mu_msg_iter_destroy (iter);
|
||||||
|
|
||||||
|
g_assert_cmpuint (count1, ==, count2);
|
||||||
|
|
||||||
return count;
|
return count1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue