diff options
Diffstat (limited to 'asl/base/defer_tests.cpp')
-rw-r--r-- | asl/base/defer_tests.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/asl/base/defer_tests.cpp b/asl/base/defer_tests.cpp new file mode 100644 index 0000000..b5139d5 --- /dev/null +++ b/asl/base/defer_tests.cpp @@ -0,0 +1,32 @@ +#include "asl/base/defer.hpp"
+#include "asl/testing/testing.hpp"
+
+ASL_TEST(defer)
+{
+ uint32_t a = 0;
+
+ {
+ ASL_DEFER [&a]() { a |= 1; };
+ ASL_TEST_EXPECT(a == 0);
+
+ {
+ ASL_DEFER [&a]() { a |= 2; };
+ ASL_DEFER [&a]() { a |= 4; };
+ ASL_TEST_EXPECT(a == 0);
+ }
+
+ ASL_TEST_EXPECT(a == 6);
+
+ {
+ ASL_DEFER [&a]() { a |= 8; };
+ ASL_TEST_EXPECT(a == 6);
+ }
+
+ ASL_TEST_EXPECT(a == 14);
+
+ ASL_DEFER [&a]() { a |= 16; };
+ ASL_TEST_EXPECT(a == 14);
+ }
+
+ ASL_TEST_EXPECT(a == 31);
+}
|