aboutsummaryrefslogtreecommitdiff
path: root/test/function.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/function.test.cpp')
-rw-r--r--test/function.test.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/function.test.cpp b/test/function.test.cpp
new file mode 100644
index 0000000..9aca0eb
--- /dev/null
+++ b/test/function.test.cpp
@@ -0,0 +1,52 @@
+#include "util/function.hpp"
+
+#include <cstdint>
+#include <doctest/doctest.h>
+
+TEST_CASE("normalize_lamda")
+{
+ SUBCASE("Can return a function that returns a int")
+ {
+ const int number = 58;
+
+ CHECK(normalize_lambda(
+ [number]()
+ {
+ return number;
+ })() == number);
+ }
+
+ SUBCASE("Can preserve object state")
+ {
+ class Book
+ {
+ public:
+ Book() noexcept = default;
+
+ void read_page() noexcept
+ {
+ _pages_read++;
+ }
+
+ [[nodiscard]] uint32_t pages_read() const noexcept
+ {
+ return _pages_read;
+ }
+
+ private:
+ uint32_t _pages_read{0U};
+ };
+
+ auto book = Book();
+
+ book.read_page();
+ book.read_page();
+ book.read_page();
+
+ CHECK(normalize_lambda(
+ [book]()
+ {
+ return book.pages_read();
+ })() == 3);
+ }
+}