#include #include #include #include "result.hpp" namespace { void testSuccessCreation() { auto result = core::Result::Success(42); assert(result.isSuccess()); assert(result.getValue() == 42); } void testFailureCreation() { auto result = core::Result::Failure("Invalid value"); assert(result.isFailure()); assert(result.getError() == "Invalid value"); } void testStatusSuccess() { auto status = core::Status::Success(true); assert(status.isSuccess()); assert(status.getValue()); } void testStatusFailure() { auto status = core::Status::Failure("File not found"); assert(status.isFailure()); assert(status.getError() == "File not found"); } void testMoveConstruction() { auto source = core::Result::Success("hello"); auto moved = std::move(source); assert(moved.isSuccess()); assert(moved.getValue() == "hello"); } void testMoveAssignment() { auto first = core::Result::Success(10); auto second = core::Result::Failure("error"); second = std::move(first); assert(second.isSuccess()); assert(second.getValue() == 10); } void testDifferentTypes() { struct User { int id; std::string name; }; auto result = core::Result::Success(User{1, "Alex"}); assert(result.isSuccess()); assert(result.getValue().id == 1); assert(result.getValue().name == "Alex"); } void testValueModification() { auto result = core::Result::Success(10); result.getValue() = 20; assert(result.getValue() == 20); } void testErrorModification() { auto result = core::Result::Failure("old error"); result.getError() = "new error"; assert(result.getError() == "new error"); } void testBasicResultWithCustomError() { enum class ErrorCode { NotFound, PermissionDenied }; using CustomResult = core::BasicResult; auto result = CustomResult::Failure(ErrorCode::PermissionDenied); assert(result.isFailure()); assert(result.getError() == ErrorCode::PermissionDenied); } void runAllTests() { testSuccessCreation(); testFailureCreation(); testStatusSuccess(); testStatusFailure(); testMoveConstruction(); testMoveAssignment(); testDifferentTypes(); testValueModification(); testErrorModification(); testBasicResultWithCustomError(); } } // namespace int main() { runAllTests(); return 0; }