Skip to content

Commit 66caad6

Browse files
committed
LifetimeChecker
1 parent 8abe124 commit 66caad6

6 files changed

Lines changed: 27 additions & 27 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122
- [`Variant`](modules/Type/Variant.mpp) - Generic print and comparison operators for `std::variant`
123123

124124
### 🧪 Unit Testing
125-
- [`DummyObject`](modules/UnitTest/DummyObject.mpp) - Dummy object that prints construction, destruction, copy and move operations, while counting copies and moves for test verification
125+
- [`LifetimeChecker`](modules/UnitTest/LifetimeChecker.mpp) - Object that prints construction, destruction, copy and move operations, while counting copies and moves for test verification
126126
- [`UnitTest`](modules/UnitTest/UnitTest.mpp) - Minimal test framework with assertions and filters
127127

128128
### 🧩 Miscellaneous
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
export module CppUtils.UnitTest.DummyObject;
1+
export module CppUtils.UnitTest.LifetimeChecker;
22

33
import std;
44

55
export namespace CppUtils::UnitTest
66
{
7-
class DummyObject
7+
class LifetimeChecker
88
{
99
public:
10-
inline DummyObject(std::function<void(std::string_view)> callback, std::string name, std::size_t indentationLevel = 0):
10+
inline LifetimeChecker(std::function<void(std::string_view)> callback, std::string name, std::size_t indentationLevel = 0):
1111
m_callback{std::move(callback)},
1212
m_name{std::move(name)},
1313
m_indentationLevel{indentationLevel}
@@ -25,12 +25,12 @@ export namespace CppUtils::UnitTest
2525
return m_moveCount;
2626
}
2727

28-
virtual ~DummyObject()
28+
virtual ~LifetimeChecker()
2929
{
3030
m_callback(std::format("{}~{}()", std::string(m_indentationLevel, '\t'), m_name));
3131
}
3232

33-
inline DummyObject(const DummyObject& other):
33+
inline LifetimeChecker(const LifetimeChecker& other):
3434
m_callback{other.m_callback},
3535
m_name{other.m_name},
3636
m_indentationLevel{other.m_indentationLevel},
@@ -40,7 +40,7 @@ export namespace CppUtils::UnitTest
4040
m_callback(std::format("{}{}(const {}&)", std::string(m_indentationLevel, '\t'), m_name, m_name));
4141
}
4242

43-
inline DummyObject(DummyObject&& other) noexcept:
43+
inline LifetimeChecker(LifetimeChecker&& other) noexcept:
4444
m_callback{other.m_callback},
4545
m_name{std::move(other.m_name)},
4646
m_indentationLevel{other.m_indentationLevel},
@@ -51,7 +51,7 @@ export namespace CppUtils::UnitTest
5151
m_callback(std::format("{}{}({}&&)", std::string(m_indentationLevel, '\t'), m_name, m_name));
5252
}
5353

54-
inline auto operator=(const DummyObject& rhs) -> DummyObject&
54+
inline auto operator=(const LifetimeChecker& rhs) -> LifetimeChecker&
5555
{
5656
m_callback = rhs.m_callback;
5757
m_name = rhs.m_name;
@@ -62,7 +62,7 @@ export namespace CppUtils::UnitTest
6262
return *this;
6363
}
6464

65-
inline auto operator=(DummyObject&& rhs) noexcept -> DummyObject&
65+
inline auto operator=(LifetimeChecker&& rhs) noexcept -> LifetimeChecker&
6666
{
6767
m_callback = rhs.m_callback;
6868
m_name = std::move(rhs.m_name);

modules/UnitTest/UnitTest.mpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import CppUtils.String;
1515
import CppUtils.Terminal;
1616
import CppUtils.System.Main;
1717

18-
export import CppUtils.UnitTest.DummyObject;
18+
export import CppUtils.UnitTest.LifetimeChecker;
1919

2020
namespace CppUtils::UnitTest
2121
{
@@ -249,7 +249,7 @@ namespace CppUtils::UnitTest
249249

250250
// Todo C++23: std::stacktrace stacktrace = std::current_stacktrace()
251251
inline auto expect(const auto& condition, std::source_location sourceLocation = std::source_location::current()) -> void
252-
requires requires { static_cast<bool>(condition); }
252+
requires requires { static_cast<bool>(condition); }
253253
{
254254
if (not static_cast<bool>(condition)) [[unlikely]]
255255
throw TestException{std::format("In {}\nAt line {}, column {}\nIn expect(condition)",

tests/Container/NetworkPtr.mpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ namespace CppUtils::UnitTest::Container::NetworkPtr
77
{
88
auto _ = TestSuite{"Container/NetworkPtr", {"Logger", "Thread/UniqueLocker", "Container/SafeShared"}, [](TestSuite& suite) {
99
using Logger = TestSuite::Logger;
10-
using DummyObject = CppUtils::UnitTest::DummyObject;
11-
using NetworkPtr = CppUtils::Container::NetworkPtr<DummyObject>;
10+
using LifetimeChecker = CppUtils::UnitTest::LifetimeChecker;
11+
using NetworkPtr = CppUtils::Container::NetworkPtr<LifetimeChecker>;
1212
using StringNetworkPtr = CppUtils::Container::NetworkPtr<std::string>;
1313

1414
auto logger = [](std::string_view message) {
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,75 @@
1-
export module CppUtils.UnitTests.UnitTest.DummyObject;
1+
export module CppUtils.UnitTests.UnitTest.LifetimeChecker;
22

33
import std;
44
import CppUtils;
55

66
namespace CppUtils::UnitTest
77
{
8-
auto _ = TestSuite{"UnitTest/DummyObject", [](TestSuite& suite) {
8+
auto _ = TestSuite{"UnitTest/LifetimeChecker", [](TestSuite& suite) {
99
using Logger = TestSuite::Logger;
1010

1111
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"};
1313
suite.expectEqual(object.getCopyCount(), 0uz);
1414
suite.expectEqual(object.getMoveCount(), 0uz);
1515
});
1616

1717
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"};
1919
auto copied = object;
2020
suite.expectEqual(copied.getCopyCount(), 1uz);
2121
suite.expectEqual(copied.getMoveCount(), 0uz);
2222
});
2323

2424
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"};
2626
auto moved = std::move(object);
2727
suite.expectEqual(moved.getCopyCount(), 0uz);
2828
suite.expectEqual(moved.getMoveCount(), 1uz);
2929
});
3030

3131
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"};
3434
target = object;
3535
suite.expectEqual(target.getCopyCount(), 1uz);
3636
suite.expectEqual(target.getMoveCount(), 0uz);
3737
});
3838

3939
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"};
4242
target = std::move(object);
4343
suite.expectEqual(target.getCopyCount(), 0uz);
4444
suite.expectEqual(target.getMoveCount(), 1uz);
4545
});
4646

4747
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"};
4949
auto copy1 = object;
5050
auto copy2 = copy1;
5151
suite.expectEqual(copy2.getCopyCount(), 2uz);
5252
suite.expectEqual(copy2.getMoveCount(), 0uz);
5353
});
5454

5555
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"};
5757
auto moved1 = std::move(object);
5858
auto moved2 = std::move(moved1);
5959
suite.expectEqual(moved2.getCopyCount(), 0uz);
6060
suite.expectEqual(moved2.getMoveCount(), 2uz);
6161
});
6262

6363
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"};
6565
auto copy = object;
6666
auto moved = std::move(copy);
6767
suite.expectEqual(moved.getCopyCount(), 1uz);
6868
suite.expectEqual(moved.getMoveCount(), 1uz);
6969
});
7070

7171
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"};
7373
auto moved = std::move(object);
7474
auto copy = moved;
7575
suite.expectEqual(copy.getCopyCount(), 1uz);

tests/UnitTests.mpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,4 @@ export import CppUtils.UnitTests.Type.Enum;
7070
export import CppUtils.UnitTests.Type.Mapping;
7171
export import CppUtils.UnitTests.Type.Tuple;
7272
export import CppUtils.UnitTests.UnitTest;
73-
export import CppUtils.UnitTests.UnitTest.DummyObject;
73+
export import CppUtils.UnitTests.UnitTest.LifetimeChecker;

0 commit comments

Comments
 (0)