/* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include using namespace utils; TEST(StatusTest, DefaultConstructorOkStatus) { Status actual; Status expected(StatusCode::OK, ""); EXPECT_EQ(actual, expected); } TEST(StatusTest, Constructor) { std::string_view errorMessage = "invalid"; Status status(StatusCode::INVALID_ARGUMENT, errorMessage); EXPECT_EQ(status.getCode(), StatusCode::INVALID_ARGUMENT); EXPECT_EQ(status.getMessage(), errorMessage); } TEST(StatusTest, CopyOperator) { Status status1 = Status::ok(); EXPECT_EQ(status1.getCode(), StatusCode::OK); EXPECT_EQ(status1.getMessage(), ""); Status status2(StatusCode::INTERNAL, "internal error"); status1 = status2; EXPECT_EQ(status1, status2); } TEST(StatusTest, CopyConstructor) { Status original = Status::internal("internal error"); Status copy(original); EXPECT_EQ(original, copy); } TEST(StatusTest, MoveOperator) { Status status; EXPECT_EQ(status.getCode(), StatusCode::OK); EXPECT_EQ(status.getMessage(), ""); std::string_view errorMessage = "internal error"; Status another(StatusCode::INTERNAL, errorMessage); status = std::move(another); EXPECT_EQ(status.getCode(), StatusCode::INTERNAL); EXPECT_EQ(status.getMessage(), errorMessage); } TEST(StatusTest, MoveConstructor) { std::string_view errorMessage = "internal error"; Status original = Status::internal(errorMessage); Status moved(std::move(original)); EXPECT_EQ(moved.getCode(), StatusCode::INTERNAL); EXPECT_EQ(moved.getMessage(), errorMessage); } TEST(StatusTest, Equality) { Status status1(StatusCode::INTERNAL, "internal error"); Status status2(StatusCode::INTERNAL, "internal error"); EXPECT_EQ(status1, status2); } TEST(StatusTest, InEqualityWithDifferentStatusCode) { Status status1(StatusCode::INTERNAL, "internal error"); Status status2(StatusCode::INVALID_ARGUMENT, "invalid argument error"); EXPECT_NE(status1, status2); } TEST(StatusTest, InEqualityWithDifferentMessage) { Status status1(StatusCode::INTERNAL, "internal error 1"); Status status2(StatusCode::INTERNAL, "invalid error 2"); EXPECT_NE(status1, status2); } TEST(StatusTest, StaticOk) { Status expected(StatusCode::OK, ""); EXPECT_EQ(Status::ok(), expected); } TEST(StatusTest, StaticOkWithMessage) { std::string_view supplementaryMessage = "some debug string"; Status expected(StatusCode::OK, supplementaryMessage); EXPECT_EQ(Status::ok(supplementaryMessage), expected); } TEST(StatusTest, StaticInvalidArgumentError) { std::string_view errorMessage = "invalid argument"; Status expected(StatusCode::INVALID_ARGUMENT, errorMessage); EXPECT_EQ(Status::invalidArgument(errorMessage), expected); } TEST(StatusTest, StaticInternalError) { std::string_view errorMessage = "internal error"; Status expected(StatusCode::INTERNAL, errorMessage); EXPECT_EQ(Status::internal(errorMessage), expected); } TEST(StatusTest, StaticUnsupportedError) { std::string_view errorMessage = "unsupported error"; Status expected(StatusCode::UNSUPPORTED, errorMessage); EXPECT_EQ(Status::unsupported(errorMessage), expected); } TEST(StatusTest, IsOk) { Status status = Status::ok(); EXPECT_TRUE(status.isOk()); status = Status::invalidArgument("error"); EXPECT_FALSE(status.isOk()); } TEST(StatusTest, SelfAssignment) { Status status = Status::internal("error"); Status self = status; status = status; EXPECT_EQ(status, self); }