test: update tests

This commit is contained in:
2025-11-01 10:04:41 +00:00
parent 9e21e0c4b2
commit a68b9f7ba7
7 changed files with 58 additions and 42 deletions

View File

@@ -74,19 +74,21 @@ void test_btree_iterate(CuTest *tc)
} }
int prev = -1; int prev = -1;
b_btree_iterator it; b_btree_node *bnode = b_btree_first(&tree);
b_btree_foreach (&it, &tree) { while (bnode) {
struct test_tree_node *node struct test_tree_node *node
= b_unbox(struct test_tree_node, it.node, node); = b_unbox(struct test_tree_node, bnode, node);
CuAssertPtrNotNull(tc, node); CuAssertPtrNotNull(tc, node);
if (prev == -1) { if (prev == -1) {
prev = node->value; prev = node->value;
bnode = b_btree_next(bnode);
continue; continue;
} }
CuAssertTrue(tc, prev <= node->value); CuAssertTrue(tc, prev <= node->value);
prev = node->value; prev = node->value;
bnode = b_btree_next(bnode);
} }
free(nodes); free(nodes);
@@ -134,19 +136,21 @@ void test_queue_iterate(CuTest *tc)
} }
int prev = -1; int prev = -1;
b_queue_iterator it; struct b_queue_entry *entry = b_queue_first(&q);
b_queue_foreach (&it, &q) { while (entry) {
struct test_queue_entry *e struct test_queue_entry *e
= b_unbox(struct test_queue_entry, it.entry, entry); = b_unbox(struct test_queue_entry, entry, entry);
CuAssertPtrNotNull(tc, e); CuAssertPtrNotNull(tc, e);
if (prev == -1) { if (prev == -1) {
prev = e->value; prev = e->value;
continue; goto skip;
} }
CuAssertTrue(tc, prev < e->value); CuAssertTrue(tc, prev < e->value);
prev = e->value; prev = e->value;
skip:
entry = b_queue_next(entry);
} }
} }

View File

@@ -9,11 +9,12 @@ int main(void)
b_array_append(array, B_RV_INT(64)); b_array_append(array, B_RV_INT(64));
b_array_append(array, B_RV_INT(128)); b_array_append(array, B_RV_INT(128));
b_array_iterator it; b_iterator *it = b_iterator_begin(array);
b_array_foreach(&it, array) b_foreach_ptr(b_object, obj, it)
{ {
printf("object %p\n", it.value); printf("object %p\n", obj);
} }
b_iterator_unref(it);
b_array_unref(array); b_array_unref(array);
return 0; return 0;

View File

@@ -1,4 +1,5 @@
#include <blue/core/btree.h> #include <blue/core/btree.h>
#include <blue/core/iterator.h>
#include <blue/ds/dict.h> #include <blue/ds/dict.h>
#include <blue/ds/number.h> #include <blue/ds/number.h>
#include <blue/ds/tree.h> #include <blue/ds/tree.h>
@@ -21,21 +22,23 @@ B_BTREE_DEFINE_SIMPLE_INSERT(struct btree_item, node, value, put_node)
int main(void) int main(void)
{ {
b_dict_item items[] b_dict *dict = b_dict_create();
= {B_DICT_ITEM("hello", B_RV_INT(32)), b_dict_put(dict, "hello", B_RV_INT(32));
B_DICT_ITEM("world", B_RV_INT(64)), b_dict_put(dict, "world", B_RV_INT(64));
B_DICT_ITEM("more", B_RV_INT(128)), b_dict_put(dict, "more", B_RV_INT(128));
B_DICT_ITEM("other", B_RV_INT(256)), B_DICT_ITEM_END}; b_dict_put(dict, "other", B_RV_INT(256));
b_dict *dict = b_dict_create_with_items(items); b_iterator *it = b_iterator_begin(dict);
b_dict_iterator it; size_t i = 0;
b_dict_foreach(&it, dict) b_foreach(b_dict_item *, item, it)
{ {
printf("item %zu: %s=%d\n", it.i, b_string_ptr(it.key), printf("item %zu: %s=%d\n", i++, b_string_ptr(item->key),
b_number_get_int(it.value)); b_number_get_int(item->value));
} }
b_iterator_unref(it);
b_tree *tree = b_tree_create(); b_tree *tree = b_tree_create();
struct tree_item items2[NITEMS]; struct tree_item items2[NITEMS];
@@ -54,6 +57,8 @@ int main(void)
b_tree_node_add_child(&items2[1].node, &items2[5].node); b_tree_node_add_child(&items2[1].node, &items2[5].node);
b_tree_node_add_child(&items2[4].node, &items2[6].node); b_tree_node_add_child(&items2[4].node, &items2[6].node);
#if 0
it = b_iterator_begin(tree);
b_tree_iterator it2; b_tree_iterator it2;
b_tree_foreach(&it2, tree) b_tree_foreach(&it2, tree)
{ {
@@ -113,6 +118,7 @@ int main(void)
} }
b_tree_unref(tree); b_tree_unref(tree);
#endif
b_dict_unref(dict); b_dict_unref(dict);
return 0; return 0;

View File

@@ -12,15 +12,15 @@ int main(void)
printf("len: %zu\n", b_string_get_size(str, B_STRLEN_NORMAL)); printf("len: %zu\n", b_string_get_size(str, B_STRLEN_NORMAL));
printf("codepoints: %zu\n", b_string_get_size(str, B_STRLEN_CODEPOINTS)); printf("codepoints: %zu\n", b_string_get_size(str, B_STRLEN_CODEPOINTS));
b_string_iterator it;
const char *delims[] = {"в"}; const char *delims[] = {"в"};
size_t nr_delims = sizeof delims / sizeof delims[0]; size_t nr_delims = sizeof delims / sizeof delims[0];
b_string_tokenise(str, delims, nr_delims, 0, &it); b_iterator *it = b_string_tokenise(str, delims, nr_delims, 0);
while (b_string_iterator_is_valid(&it)) { b_foreach(const char *, tok, it)
printf("%s\n", it.string_value); {
b_string_iterator_next(&it); printf("%s\n", tok);
} }
b_iterator_unref(it);
return 0; return 0;
} }

View File

@@ -20,12 +20,13 @@ int main(int argc, const char **argv)
return -1; return -1;
} }
b_directory_iterator it = {0}; b_iterator *it = b_directory_begin(dir, B_DIRECTORY_ITERATE_PARENT_FIRST);
b_directory_iterator_begin(dir, &it, B_DIRECTORY_ITERATE_PARENT_FIRST); b_foreach(b_directory_entry *, entry, it)
while (b_directory_iterator_is_valid(&it)) { {
printf("%s\n", b_path_ptr(it.filepath)); printf("%s\n", b_path_ptr(entry->filepath));
b_directory_iterator_next(&it);
} }
b_iterator_unref(it);
return 0; return 0;
} }

View File

@@ -12,11 +12,9 @@ void write_raw_string(const b_string *data)
{ {
b_stream_write_string(b_stdout, "\"", NULL); b_stream_write_string(b_stdout, "\"", NULL);
b_string_iterator it; const b_iterator *it = b_iterator_cbegin(data);
b_string_foreach(&it, data) b_foreach_c(b_wchar, c, it)
{ {
b_wchar c = it.char_value;
if (c >= 0x10000) { if (c >= 0x10000) {
c -= 0x10000; c -= 0x10000;
long hi = 0xD800 | ((c >> 10) & 0x3FF); long hi = 0xD800 | ((c >> 10) & 0x3FF);
@@ -30,6 +28,7 @@ void write_raw_string(const b_string *data)
b_stream_write_char(b_stdout, c); b_stream_write_char(b_stdout, c);
} }
} }
b_iterator_unref(it);
b_stream_write_string(b_stdout, "\"", NULL); b_stream_write_string(b_stdout, "\"", NULL);
} }
@@ -134,17 +133,18 @@ void write_tagged_dict(b_dict *data)
int i = 0; int i = 0;
b_dict_iterator it; b_iterator *it = b_iterator_begin(data);
b_dict_foreach(&it, data) b_foreach(b_dict_item *, item, it)
{ {
if (i++ > 0) { if (i++ > 0) {
b_stream_write_string(b_stdout, ", ", NULL); b_stream_write_string(b_stdout, ", ", NULL);
} }
write_raw_string(it.key); write_raw_string(item->key);
b_stream_write_string(b_stdout, ": ", NULL); b_stream_write_string(b_stdout, ": ", NULL);
write_tagged_value(it.value); write_tagged_value(item->value);
} }
b_iterator_unref(it);
b_stream_write_string(b_stdout, " }", NULL); b_stream_write_string(b_stdout, " }", NULL);
} }
@@ -154,15 +154,16 @@ void write_tagged_array(b_array *data)
b_stream_write_string(b_stdout, "[ ", NULL); b_stream_write_string(b_stdout, "[ ", NULL);
int i = 0; int i = 0;
b_array_iterator it; b_iterator *it = b_iterator_begin(data);
b_array_foreach(&it, data) b_foreach(b_object *, obj, it)
{ {
if (i++ > 0) { if (i++ > 0) {
b_stream_write_string(b_stdout, ", ", NULL); b_stream_write_string(b_stdout, ", ", NULL);
} }
write_tagged_value(it.value); write_tagged_value(obj);
} }
b_iterator_unref(it);
b_stream_write_string(b_stdout, " ]", NULL); b_stream_write_string(b_stdout, " ]", NULL);
} }

View File

@@ -1 +1,4 @@
k = "v" # "No newlines are allowed between the curly braces unless they are valid within
# a value"
a = []