From 84a4ec223cad4b6cbfe2628802e66e6e9dc3d917 Mon Sep 17 00:00:00 2001
From: Abdelrahman <said.abdelrahman89@gmail.com>
Date: Tue, 8 Oct 2024 23:58:24 +0100
Subject: [PATCH] Commit the Str8 tests

---
 tests/str8/test_str8.c | 86 ++++++++++++++++++++++++++++++++++++++++++
 tests/str8/test_str8.h | 20 ++++++++++
 2 files changed, 106 insertions(+)
 create mode 100644 tests/str8/test_str8.c
 create mode 100644 tests/str8/test_str8.h

diff --git a/tests/str8/test_str8.c b/tests/str8/test_str8.c
new file mode 100644
index 0000000..7328d05
--- /dev/null
+++ b/tests/str8/test_str8.c
@@ -0,0 +1,86 @@
+#include "test_str8.h"
+#include "str8.h"
+#include "tester.h"
+#include <stdbool.h>
+
+TestFuncResult test_str8_lit(void) {
+  bool result;
+
+  Str8 s1 = wapp_str8_lit("Hello world");
+  result  = s1.capacity == 11 && s1.capacity == s1.size;
+
+  Str8 s2 = wapp_str8_lit("Different strokes for different folks");
+  result  = result && s2.capacity == 37 && s2.capacity == s2.size;
+
+  Str8 s3 = wapp_str8_lit("Discretion is the better part of valour");
+  result  = result && s3.capacity == 39 && s3.capacity == s3.size;
+
+  Str8 s4 = wapp_str8_lit("Distance lends enchantment to the view");
+  result  = result && s4.capacity == 38 && s4.capacity == s4.size;
+
+  Str8 s5 = wapp_str8_lit("Do as I say, not as I do");
+  result  = result && s5.capacity == 24 && s5.capacity == s5.size;
+
+  Str8 s6 = wapp_str8_lit("Do as you would be done by");
+  result  = result && s6.capacity == 26 && s6.capacity == s6.size;
+
+  Str8 s7 = wapp_str8_lit("Do unto others as you would have them do to you");
+  result  = result && s7.capacity == 47 && s7.capacity == s7.size;
+
+  return wapp_tester_result(result);
+}
+
+TestFuncResult test_str8_buf(void) {
+  bool result;
+
+  Str8 s1 = wapp_str8_buf(1024);
+  result  = s1.capacity == 1024 && s1.size == 0;
+
+  Str8 s2 = wapp_str8_buf(2048);
+  result  = result && s2.capacity == 2048 && s2.size == 0;
+
+  Str8 s3 = wapp_str8_buf(4096);
+  result  = result && s3.capacity == 4096 && s3.size == 0;
+
+  Str8 s4 = wapp_str8_buf(8192);
+  result  = result && s4.capacity == 8192 && s4.size == 0;
+
+  return wapp_tester_result(result);
+}
+
+TestFuncResult test_str8_get_index_within_bounds(void) {
+  bool result;
+
+  Str8 s1 = wapp_str8_lit("Hello world");
+  result  = wapp_str8_get(&s1, 4) == 'o';
+
+  Str8 s2 = wapp_str8_lit("Different strokes for different folks");
+  result  = result && wapp_str8_get(&s2, 0) == 'D';
+
+  Str8 s3 = wapp_str8_lit("Discretion is the better part of valour");
+  result  = result && wapp_str8_get(&s3, 13) == ' ';
+
+  Str8 s4 = wapp_str8_lit("Distance lends enchantment to the view");
+  result  = result && wapp_str8_get(&s4, 20) == 'n';
+
+  Str8 s5 = wapp_str8_lit("Do as I say, not as I do");
+  result  = result && wapp_str8_get(&s5, 11) == ',';
+
+  Str8 s6 = wapp_str8_lit("Do as you would be done by");
+  result  = result && wapp_str8_get(&s6, 25) == 'y';
+
+  Str8 s7 = wapp_str8_lit("Do unto others as you would have them do to you");
+  result  = result && wapp_str8_get(&s7, 16) == 's';
+
+  return wapp_tester_result(result);
+}
+
+TestFuncResult test_str8_get_index_out_of_bounds(void) {
+  Str8 s1      = wapp_str8_lit("Hello world");
+  bool result  = wapp_str8_get(&s1, 20) == '\0';
+  return wapp_tester_result(result);
+}
+
+TestFuncResult test_str8_set(void) {
+  return wapp_tester_result(true);
+}
diff --git a/tests/str8/test_str8.h b/tests/str8/test_str8.h
new file mode 100644
index 0000000..2563410
--- /dev/null
+++ b/tests/str8/test_str8.h
@@ -0,0 +1,20 @@
+#ifndef TEST_STR8_H
+#define TEST_STR8_H
+
+#include "tester.h"
+
+#ifdef __cplusplus
+BEGIN_C_LINKAGE
+#endif // __cplusplus
+
+TestFuncResult test_str8_lit(void);
+TestFuncResult test_str8_buf(void);
+TestFuncResult test_str8_get_index_within_bounds(void);
+TestFuncResult test_str8_get_index_out_of_bounds(void);
+TestFuncResult test_str8_set(void);
+
+#ifdef __cplusplus
+END_C_LINKAGE
+#endif // __cplusplus
+
+#endif // !TEST_STR8_H