File tree Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Original file line number Diff line number Diff line change 1010#include < NazaraUtils/Prerequisites.hpp>
1111#include < optional>
1212
13+ #define NAZARA_DEFER (expr ) Nz::CallOnExit NazaraSuffixMacro (defer_, __LINE__)([&] { expr })
14+
1315namespace Nz
1416{
1517 template <typename F>
Original file line number Diff line number Diff line change 1+ #include < NazaraUtils/CallOnExit.hpp>
2+ #include < catch2/catch_test_macros.hpp>
3+
4+ SCENARIO (" CallOnExit" , " [CallOnExit]" )
5+ {
6+ WHEN (" Checking if CallOnExit is called at end of scope" )
7+ {
8+ bool called = false ;
9+ {
10+ Nz::CallOnExit callOnExit ([&]{ called = true ; });
11+ CHECK_FALSE (called);
12+ }
13+ CHECK (called);
14+ }
15+
16+ WHEN (" Checking if CallOnExit is called when reset" )
17+ {
18+ bool called = false ;
19+ {
20+ Nz::CallOnExit callOnExit ([&] { called = true ; });
21+ CHECK_FALSE (called);
22+ callOnExit.Reset ();
23+ }
24+ CHECK_FALSE (called);
25+ }
26+
27+ WHEN (" Checking that CallOnExit is still called only once when CallAndReset is used" )
28+ {
29+ unsigned int callCount = 0 ;
30+ {
31+ Nz::CallOnExit callOnExit ([&] { callCount++; });
32+ CHECK (callCount == 0 );
33+ callOnExit.CallAndReset ();
34+ }
35+ CHECK (callCount == 1 );
36+ }
37+
38+ WHEN (" Testing NAZARA_DEFER" )
39+ {
40+ bool called = false ;
41+ {
42+ NAZARA_DEFER ({ called = true ; });
43+ CHECK_FALSE (called);
44+ }
45+ CHECK (called);
46+ }
47+ }
You can’t perform that action at this time.
0 commit comments