From fdf921c0adff5317e426e798f8a716ca97046383 Mon Sep 17 00:00:00 2001
From: Mitya Selivanov <automainint@guattari.tech>
Date: Fri, 12 Jan 2024 16:15:10 +0100
Subject: Refactor; defer with fblocks

---
 source/tests/_exe.c                     |  1 +
 source/tests/array_ref.test.c           |  2 +-
 source/tests/async_function.test.c      |  2 +-
 source/tests/atomic.test.c              |  2 +-
 source/tests/bench.test.c               |  2 +-
 source/tests/bigint.test.c              |  2 +-
 source/tests/condition_variable.test.c  |  2 +-
 source/tests/defer.test.c               | 37 +++++++++++++++++++++++++++++++++
 source/tests/duration.test.c            |  2 +-
 source/tests/dynamic_array.test.c       |  2 +-
 source/tests/file.test.c                |  2 +-
 source/tests/http1.test.c               |  2 +-
 source/tests/input_buffer.test.c        |  2 +-
 source/tests/input_stream.test.c        |  2 +-
 source/tests/lower_bound.test.c         |  2 +-
 source/tests/main.test.c                |  2 +-
 source/tests/mersenne_twister_64.test.c |  2 +-
 source/tests/move_back.test.c           |  2 +-
 source/tests/mutex.test.c               |  2 +-
 source/tests/secure_random.test.c       |  2 +-
 source/tests/sha256.test.c              |  2 +-
 source/tests/string_ref.test.c          |  2 +-
 source/tests/test_cpp.cpp               |  2 +-
 source/tests/test_signals.cpp           |  2 +-
 source/tests/test_too_many_assertions.c |  2 +-
 source/tests/test_too_many_tests.c      |  2 +-
 source/tests/thread.test.c              |  2 +-
 source/tests/xml.test.c                 |  2 +-
 28 files changed, 64 insertions(+), 26 deletions(-)
 create mode 100644 source/tests/defer.test.c

(limited to 'source/tests')

diff --git a/source/tests/_exe.c b/source/tests/_exe.c
index f14e620..99a34b8 100644
--- a/source/tests/_exe.c
+++ b/source/tests/_exe.c
@@ -18,6 +18,7 @@
 #include "string_ref.test.c"
 #include "duration.test.c"
 #include "thread.test.c"
+#include "defer.test.c"
 #include "xml.test.c"
 #include "http1.test.c"
 #include "bench.test.c"
diff --git a/source/tests/array_ref.test.c b/source/tests/array_ref.test.c
index 2037bed..921e9fd 100644
--- a/source/tests/array_ref.test.c
+++ b/source/tests/array_ref.test.c
@@ -1,7 +1,7 @@
 #include "../kit/array_ref.h"
 
 #define KIT_TEST_FILE array_ref
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("array ref wrap") {
   int foo[] = { 1, 2, 3 };
diff --git a/source/tests/async_function.test.c b/source/tests/async_function.test.c
index 9f90474..34cc7d1 100644
--- a/source/tests/async_function.test.c
+++ b/source/tests/async_function.test.c
@@ -1,7 +1,7 @@
 #include "../kit/async_function.h"
 
 #define KIT_TEST_FILE async_function
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 AF_STATE(int, test_foo, );
 static AF_DECL(test_foo);
diff --git a/source/tests/atomic.test.c b/source/tests/atomic.test.c
index 061f5d6..d5c172b 100644
--- a/source/tests/atomic.test.c
+++ b/source/tests/atomic.test.c
@@ -2,7 +2,7 @@
 #include "../kit/threads.h"
 
 #define KIT_TEST_FILE atomic
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("atomic store and load") {
   ATOMIC(int) value;
diff --git a/source/tests/bench.test.c b/source/tests/bench.test.c
index f5d28aa..011817d 100644
--- a/source/tests/bench.test.c
+++ b/source/tests/bench.test.c
@@ -1,5 +1,5 @@
 #define KIT_TEST_FILE bench
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 struct test_foo_ {
   double f;
diff --git a/source/tests/bigint.test.c b/source/tests/bigint.test.c
index 3e55c39..d7375f5 100644
--- a/source/tests/bigint.test.c
+++ b/source/tests/bigint.test.c
@@ -2,7 +2,7 @@
 #include "../kit/bigint.h"
 
 #define KIT_TEST_FILE bigint
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("bigint size check") {
   REQUIRE_EQ(sizeof(u8), 1);
diff --git a/source/tests/condition_variable.test.c b/source/tests/condition_variable.test.c
index 9deb9ae..83bf2b3 100644
--- a/source/tests/condition_variable.test.c
+++ b/source/tests/condition_variable.test.c
@@ -1,7 +1,7 @@
 #include "../kit/threads.h"
 
 #define KIT_TEST_FILE condition_variable
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 typedef struct {
   mtx_t m;
diff --git a/source/tests/defer.test.c b/source/tests/defer.test.c
new file mode 100644
index 0000000..0eb8557
--- /dev/null
+++ b/source/tests/defer.test.c
@@ -0,0 +1,37 @@
+#if defined(__clang__) || defined(__APPLE__)
+#  include "../kit/defer.h"
+
+#  define KIT_TEST_FILE defer_block
+#  include "../kit/test.h"
+
+TEST("defer") {
+  int defer_ref x = 1;
+
+  {
+    defer {
+      x = 2;
+    };
+
+    x = 3;
+  }
+
+  REQUIRE_EQ(x, 2);
+}
+
+TEST("defer capture") {
+  int defer_ref x = 1;
+
+  {
+    defer {
+      if (x == 3)
+        x = 2;
+    };
+
+    x = 3;
+  }
+
+  REQUIRE_EQ(x, 2);
+}
+
+#  undef KIT_TEST_FILE
+#endif
diff --git a/source/tests/duration.test.c b/source/tests/duration.test.c
index 1bdb68b..32865c7 100644
--- a/source/tests/duration.test.c
+++ b/source/tests/duration.test.c
@@ -1,5 +1,5 @@
 #define KIT_TEST_FILE duration
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 #if defined(_WIN32) && !defined(__CYGWIN__)
 __declspec(dllimport) void __stdcall Sleep(unsigned long timeout);
diff --git a/source/tests/dynamic_array.test.c b/source/tests/dynamic_array.test.c
index a1c0ebc..0d07233 100644
--- a/source/tests/dynamic_array.test.c
+++ b/source/tests/dynamic_array.test.c
@@ -1,7 +1,7 @@
 #include "../kit/dynamic_array.h"
 
 #define KIT_TEST_FILE dynamic_array
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("dynamic array empty") {
   DA_CREATE(v, char, 0);
diff --git a/source/tests/file.test.c b/source/tests/file.test.c
index 646d0ef..8edfcca 100644
--- a/source/tests/file.test.c
+++ b/source/tests/file.test.c
@@ -2,7 +2,7 @@
 #include "../kit/string_ref.h"
 
 #define KIT_TEST_FILE file
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("path cache") {
   str_builder_t user  = path_user(NULL);
diff --git a/source/tests/http1.test.c b/source/tests/http1.test.c
index 09da5f4..20c1ea7 100644
--- a/source/tests/http1.test.c
+++ b/source/tests/http1.test.c
@@ -1,7 +1,7 @@
 #include "../kit/http1.h"
 
 #define KIT_TEST_FILE http1
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("http1") {
   //  TODO
diff --git a/source/tests/input_buffer.test.c b/source/tests/input_buffer.test.c
index 89717d1..b8dc19b 100644
--- a/source/tests/input_buffer.test.c
+++ b/source/tests/input_buffer.test.c
@@ -1,7 +1,7 @@
 #include "../kit/input_buffer.h"
 
 #define KIT_TEST_FILE input_buffer
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("input buffer read once") {
   str_t       text  = { .size = 3, .values = "foo" };
diff --git a/source/tests/input_stream.test.c b/source/tests/input_stream.test.c
index 72e43d5..25ef721 100644
--- a/source/tests/input_stream.test.c
+++ b/source/tests/input_stream.test.c
@@ -2,7 +2,7 @@
 #include "../kit/file.h"
 
 #define KIT_TEST_FILE input_stream
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("input stream wrap string") {
   char foo[] = "test";
diff --git a/source/tests/lower_bound.test.c b/source/tests/lower_bound.test.c
index d709446..ae7ed72 100644
--- a/source/tests/lower_bound.test.c
+++ b/source/tests/lower_bound.test.c
@@ -2,7 +2,7 @@
 #include "../kit/array_ref.h"
 
 #define KIT_TEST_FILE lower_bound
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 static int kit_less_int(int left, int right) {
   return left < right;
diff --git a/source/tests/main.test.c b/source/tests/main.test.c
index 6d439b6..d6fabc3 100644
--- a/source/tests/main.test.c
+++ b/source/tests/main.test.c
@@ -1,5 +1,5 @@
 #define KIT_TEST_IMPLEMENTATION
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 int main(int argc, char **argv) {
   int status = run_tests(argc, argv);
diff --git a/source/tests/mersenne_twister_64.test.c b/source/tests/mersenne_twister_64.test.c
index 4d0d97d..df9e508 100644
--- a/source/tests/mersenne_twister_64.test.c
+++ b/source/tests/mersenne_twister_64.test.c
@@ -2,7 +2,7 @@
 #include "../kit/secure_random.h"
 
 #define KIT_TEST_FILE mersenne_twister_64
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 enum { MT64_TEST_SIZE = 1000 };
 
diff --git a/source/tests/move_back.test.c b/source/tests/move_back.test.c
index 626850a..a97a8b9 100644
--- a/source/tests/move_back.test.c
+++ b/source/tests/move_back.test.c
@@ -1,7 +1,7 @@
 #include "../kit/move_back.h"
 
 #define KIT_TEST_FILE move_back
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 static int is_equal(int x, int y) {
   return x == y;
diff --git a/source/tests/mutex.test.c b/source/tests/mutex.test.c
index 578e48b..61c1caa 100644
--- a/source/tests/mutex.test.c
+++ b/source/tests/mutex.test.c
@@ -1,7 +1,7 @@
 #include "../kit/threads.h"
 
 #define KIT_TEST_FILE mutex
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 enum { SLEEP = 400000000, TICK_COUNT = 200, THREAD_COUNT = 100 };
 
diff --git a/source/tests/secure_random.test.c b/source/tests/secure_random.test.c
index 62021b1..3452521 100644
--- a/source/tests/secure_random.test.c
+++ b/source/tests/secure_random.test.c
@@ -2,7 +2,7 @@
 #include <string.h>
 
 #define KIT_TEST_FILE secure_random
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("secure random") {
   int v[20];
diff --git a/source/tests/sha256.test.c b/source/tests/sha256.test.c
index cf67c03..dff3ca6 100644
--- a/source/tests/sha256.test.c
+++ b/source/tests/sha256.test.c
@@ -2,7 +2,7 @@
 #include "../kit/array_ref.h"
 
 #define KIT_TEST_FILE sha256_64
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 #include <string.h>
 
diff --git a/source/tests/string_ref.test.c b/source/tests/string_ref.test.c
index a5863df..8ce9368 100644
--- a/source/tests/string_ref.test.c
+++ b/source/tests/string_ref.test.c
@@ -1,7 +1,7 @@
 #include "../kit/string_ref.h"
 
 #define KIT_TEST_FILE string_ref
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("static string wrap") {
   str_t ref = SZ("foo bar");
diff --git a/source/tests/test_cpp.cpp b/source/tests/test_cpp.cpp
index 3e88ede..d1eab09 100644
--- a/source/tests/test_cpp.cpp
+++ b/source/tests/test_cpp.cpp
@@ -1,5 +1,5 @@
 #define KIT_TEST_IMPLEMENTATION
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("foo") {
   REQUIRE(20 + 22 == 42);
diff --git a/source/tests/test_signals.cpp b/source/tests/test_signals.cpp
index 2a9c009..e0298c4 100644
--- a/source/tests/test_signals.cpp
+++ b/source/tests/test_signals.cpp
@@ -1,5 +1,5 @@
 #define KIT_TEST_IMPLEMENTATION
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 #include <cstdlib>
 #include <stdexcept>
diff --git a/source/tests/test_too_many_assertions.c b/source/tests/test_too_many_assertions.c
index ffff093..f54bc36 100644
--- a/source/tests/test_too_many_assertions.c
+++ b/source/tests/test_too_many_assertions.c
@@ -1,6 +1,6 @@
 #define KIT_TEST_IMPLEMENTATION
 #define KIT_TEST_ASSERTIONS_LIMIT 10
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("foo") {
   int i;
diff --git a/source/tests/test_too_many_tests.c b/source/tests/test_too_many_tests.c
index b03a3b2..8d1aec0 100644
--- a/source/tests/test_too_many_tests.c
+++ b/source/tests/test_too_many_tests.c
@@ -1,6 +1,6 @@
 #define KIT_TEST_IMPLEMENTATION
 #define KIT_TESTS_SIZE_LIMIT 40
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 void bar(int index, kit_test_report_fn report) { }
 
diff --git a/source/tests/thread.test.c b/source/tests/thread.test.c
index 8f849cd..dca2fe0 100644
--- a/source/tests/thread.test.c
+++ b/source/tests/thread.test.c
@@ -1,7 +1,7 @@
 #include "../kit/threads.h"
 
 #define KIT_TEST_FILE thread
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 static int test_nothing(void *_) {
   return 0;
diff --git a/source/tests/xml.test.c b/source/tests/xml.test.c
index 2a0b114..a3e931d 100644
--- a/source/tests/xml.test.c
+++ b/source/tests/xml.test.c
@@ -1,7 +1,7 @@
 #include "../kit/xml.h"
 
 #define KIT_TEST_FILE xml
-#include "../kit/kit_test.h"
+#include "../kit/test.h"
 
 TEST("xml parse tag") {
   is_handle_t        is  = IS_WRAP_STRING(SZ("<foo> </foo>"));
-- 
cgit v1.2.3