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:
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