libqaeda

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | README | LICENSE

commit 7ad7b4d02b6dde9542d3707bdffb15a16b61b34f
parent 31981858daa0987be527d21cb5c7264b586e9267
Author: lash <dev@holbrook.no>
Date:   Wed,  7 May 2025 08:38:19 +0100

Add test for successive use of query

Diffstat:
Msrc/store/file.c | 7++++++-
Msrc/test/test_query.c | 21+++++++++++++++++----
2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/src/store/file.c b/src/store/file.c @@ -177,9 +177,12 @@ LQQuery* lq_query_new(enum payload_e typ, LQStore *store, const char *key, size_ return NULL; } query->value = lq_alloc(LQ_STORE_VAL_MAX); + query->value = lq_alloc(LQ_STORE_VAL_MAX); query->store = store; query->state = LQ_QUERY_READY; + debug_x(LLOG_DEBUG, "store.file", "query", 2, MORGEL_TYP_STR, 0, "pfx", key, MORGEL_TYP_NUM, 0, "typ", (int)typ); + return query; } @@ -197,12 +200,14 @@ int lq_query_next(LQQuery *query) { query->state = LQ_QUERY_GONER; return ERR_ENCODING; } + query->value_len = LQ_STORE_VAL_MAX; r = query->store->get(query->typ, query->store, b, r, query->value, &query->value_len); if (r != ERR_OK) { + query->value_len = 0; query->state = LQ_QUERY_GONER; return ERR_FAIL; } - if (query->files_cur++ == query->files_len) { + if (++query->files_cur == query->files_len) { query->state = LQ_QUERY_EOF; } return ERR_OK; diff --git a/src/test/test_query.c b/src/test/test_query.c @@ -35,9 +35,9 @@ START_TEST(check_query_full) { vl = 3; store.put(LQ_CONTENT_RAW, &store, k, &kl, v, vl); - k = "ab"; + k = "aab"; v = "bar"; - kl = 2; + kl = 3; vl = 3; store.put(LQ_CONTENT_RAW, &store, k, &kl, v, vl); @@ -53,9 +53,9 @@ START_TEST(check_query_full) { vl = 5; store.put(LQ_CONTENT_MSG, &store, k, &kl, v, vl); - k = "b"; + k = "aac"; v = "blinky"; - kl = 1; + kl = 3; vl = 6; store.put(LQ_CONTENT_MSG, &store, k, &kl, v, vl); @@ -80,6 +80,19 @@ START_TEST(check_query_full) { ck_assert_int_eq(r, ERR_OK); r = lq_query_next(query); ck_assert_int_eq(r, ERR_EOF); + + query = lq_query_new(LQ_CONTENT_MSG, &store, "aa", 2); + ck_assert_ptr_nonnull(query); + + r = lq_query_next(query); + ck_assert_int_eq(r, ERR_OK); + r = lq_query_next(query); + ck_assert_int_eq(r, ERR_OK); + r = lq_query_next(query); + ck_assert_int_eq(r, ERR_OK); + r = lq_query_next(query); + ck_assert_int_eq(r, ERR_EOF); + } END_TEST