summaryrefslogtreecommitdiff
path: root/strings/test.cpp
diff options
context:
space:
mode:
authortalha <talha@talhaamir.xyz>2024-02-15 09:58:42 +0500
committertalha <talha@talhaamir.xyz>2024-02-15 09:58:42 +0500
commitab3edaa58eed4ff73410954ca094531d49eb5844 (patch)
tree4dd8dc896baa5737153ed0d48f27881171fd3287 /strings/test.cpp
added personal libraries to git tracking
Diffstat (limited to 'strings/test.cpp')
-rw-r--r--strings/test.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/strings/test.cpp b/strings/test.cpp
new file mode 100644
index 0000000..49f81c9
--- /dev/null
+++ b/strings/test.cpp
@@ -0,0 +1,65 @@
+#include <stdio.h>
+#include "strings.h"
+#include "strings.cpp"
+
+void TestCstrSize()
+{
+ u64 size = CstrSize("hello sailor\n");
+ assert(size == 13 && "test_cstr_size() failed"
+ "the cstr size was wrong\n");
+}
+
+void TestEmptyCstrSize()
+{
+ u64 size = CstrSize("");
+ assert(size == 0 && "test_empty_cstr_size() failed"
+ "the cstr size was wrong\n");
+}
+
+void TestStr8InitCstr(u8* buffer, u64 buffer_size)
+{
+ struct arena a = {};
+ arena_init(&a, buffer, buffer_size);
+ struct res_str8 qres = Str8InitCstr(&a, "hello sailor");
+ assert((qres.bytes_count == 12) && "Error TestStr8InitCstr:\n"
+ "Reason: Invalid size of allocated string\n"
+ "Hint: check what is happening to the bytes_count and how it is set first\n");
+}
+
+void TestStr8InitCstrEmpty(u8* buffer, u64 buffer_size)
+{
+ struct arena a = {};
+ arena_init(&a, buffer, buffer_size);
+ struct res_str8 qres = Str8InitCstr(&a, "");
+ assert((qres.string.size == 0) && "Error TestStr8InitCstrEmpty:\n"
+ "Reason: Invalid size of allocated string\n"
+ "Hint: check what is happening to the bytes_count and how it is set first\n");
+}
+
+void TestStr8InitCstrNoSpace(u8* buffer, u8 buffer_size)
+{
+ struct arena a = {};
+ arena_init(&a, buffer, buffer_size);
+ struct res_str8 qres = Str8InitCstr(&a, "hello sailor, looks like you've got no space here on this boat!");
+ assert(qres.string.size == 0 && "Error TestStr8InitStrNoSpace:\n"
+ "Reason: the bytes count is not 0, even though the string is larger than the supposedly available\n"
+ "arena space. This is an error and should not occur.\n"
+ "Hint: Look at what is going on in the allocation since that arena helpers handle allocations\n.");
+}
+
+void test_strings()
+{
+ printf("\n======= Testing Strings Library =======\n");
+ printf("===== Testing Cstring Functions =====\n");
+ TestCstrSize();
+ TestEmptyCstrSize();
+
+ u64 buffer_size = KB(64);
+ u8* buffer = (u8*)malloc(sizeof(u8)*buffer_size);
+
+ TestStr8InitCstr(buffer, buffer_size);
+ TestStr8InitCstrEmpty(buffer, buffer_size);
+ TestStr8InitCstrNoSpace(buffer, 8);
+ printf("Cstring tests passed successfully\n");
+ free(buffer);
+}