|
1 | | -export module CppUtils.UnitTests.UnitTest.DummyObject; |
| 1 | +export module CppUtils.UnitTests.UnitTest.LifetimeChecker; |
2 | 2 |
|
3 | 3 | import std; |
4 | 4 | import CppUtils; |
5 | 5 |
|
6 | 6 | namespace CppUtils::UnitTest |
7 | 7 | { |
8 | | - auto _ = TestSuite{"UnitTest/DummyObject", [](TestSuite& suite) { |
| 8 | + auto _ = TestSuite{"UnitTest/LifetimeChecker", [](TestSuite& suite) { |
9 | 9 | using Logger = TestSuite::Logger; |
10 | 10 |
|
11 | 11 | suite.addTest("No Copy No Move", [&] { |
12 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
| 12 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
13 | 13 | suite.expectEqual(object.getCopyCount(), 0uz); |
14 | 14 | suite.expectEqual(object.getMoveCount(), 0uz); |
15 | 15 | }); |
16 | 16 |
|
17 | 17 | suite.addTest("Copy Construction", [&] { |
18 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
| 18 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
19 | 19 | auto copied = object; |
20 | 20 | suite.expectEqual(copied.getCopyCount(), 1uz); |
21 | 21 | suite.expectEqual(copied.getMoveCount(), 0uz); |
22 | 22 | }); |
23 | 23 |
|
24 | 24 | suite.addTest("Move Construction", [&] { |
25 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
| 25 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
26 | 26 | auto moved = std::move(object); |
27 | 27 | suite.expectEqual(moved.getCopyCount(), 0uz); |
28 | 28 | suite.expectEqual(moved.getMoveCount(), 1uz); |
29 | 29 | }); |
30 | 30 |
|
31 | 31 | suite.addTest("Copy Assignment", [&] { |
32 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
33 | | - auto target = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "Target"}; |
| 32 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
| 33 | + auto target = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "Target"}; |
34 | 34 | target = object; |
35 | 35 | suite.expectEqual(target.getCopyCount(), 1uz); |
36 | 36 | suite.expectEqual(target.getMoveCount(), 0uz); |
37 | 37 | }); |
38 | 38 |
|
39 | 39 | suite.addTest("Move Assignment", [&] { |
40 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
41 | | - auto target = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "Target"}; |
| 40 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
| 41 | + auto target = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "Target"}; |
42 | 42 | target = std::move(object); |
43 | 43 | suite.expectEqual(target.getCopyCount(), 0uz); |
44 | 44 | suite.expectEqual(target.getMoveCount(), 1uz); |
45 | 45 | }); |
46 | 46 |
|
47 | 47 | suite.addTest("Two Copies", [&] { |
48 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
| 48 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
49 | 49 | auto copy1 = object; |
50 | 50 | auto copy2 = copy1; |
51 | 51 | suite.expectEqual(copy2.getCopyCount(), 2uz); |
52 | 52 | suite.expectEqual(copy2.getMoveCount(), 0uz); |
53 | 53 | }); |
54 | 54 |
|
55 | 55 | suite.addTest("Two Moves", [&] { |
56 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
| 56 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
57 | 57 | auto moved1 = std::move(object); |
58 | 58 | auto moved2 = std::move(moved1); |
59 | 59 | suite.expectEqual(moved2.getCopyCount(), 0uz); |
60 | 60 | suite.expectEqual(moved2.getMoveCount(), 2uz); |
61 | 61 | }); |
62 | 62 |
|
63 | 63 | suite.addTest("Copy then Move", [&] { |
64 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
| 64 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
65 | 65 | auto copy = object; |
66 | 66 | auto moved = std::move(copy); |
67 | 67 | suite.expectEqual(moved.getCopyCount(), 1uz); |
68 | 68 | suite.expectEqual(moved.getMoveCount(), 1uz); |
69 | 69 | }); |
70 | 70 |
|
71 | 71 | suite.addTest("Move then Copy", [&] { |
72 | | - auto object = DummyObject{[](std::string_view message) { Logger::print<"info">("{}", message); }, "DummyObject"}; |
| 72 | + auto object = LifetimeChecker{[](std::string_view message) { Logger::print<"info">("{}", message); }, "LifetimeChecker"}; |
73 | 73 | auto moved = std::move(object); |
74 | 74 | auto copy = moved; |
75 | 75 | suite.expectEqual(copy.getCopyCount(), 1uz); |
|
0 commit comments