diff options
Diffstat (limited to 'test/function.test.cpp')
-rw-r--r-- | test/function.test.cpp | 52 |
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); + } +} |