blob: b775548a10377fe9ba8e8b1facbb98f9bdc0655d [file] [log] [blame] [edit]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <rmad/utils/hwid_utils_impl.h>
#include <optional>
#include <gtest/gtest.h>
namespace rmad {
class HwidUtilsTest : public testing::Test {
public:
HwidUtilsTest() = default;
~HwidUtilsTest() override = default;
};
TEST_F(HwidUtilsTest, CalculateChecksumSuccess) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
auto checksum = hwid_utils->CalculateChecksum("MODEL-CODE A1B-C2D-E");
EXPECT_TRUE(checksum.has_value());
EXPECT_EQ("2J", checksum.value());
}
TEST_F(HwidUtilsTest, CalculateChecksumFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
auto checksum = hwid_utils->CalculateChecksum("MODEL TEST A1B-C2D-E");
EXPECT_FALSE(checksum.has_value());
}
TEST_F(HwidUtilsTest, VerifyChecksumSuccess) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
EXPECT_TRUE(hwid_utils->VerifyChecksum("MODEL-CODE A1B-C2D-E2J"));
}
TEST_F(HwidUtilsTest, VerifyChecksumInvalidLengthFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
EXPECT_FALSE(hwid_utils->VerifyChecksum("HI"));
}
TEST_F(HwidUtilsTest, VerifyChecksumFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
EXPECT_FALSE(hwid_utils->VerifyChecksum("MODEL-CODE A1B-C2D-E2K"));
}
TEST_F(HwidUtilsTest, VerifyHwidFormatSuccess) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
EXPECT_TRUE(hwid_utils->VerifyHwidFormat("MODEL-CODE A1B-C2D-E2J",
/*has_checksum=*/true));
}
TEST_F(HwidUtilsTest, VerifyHwidFormatFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
EXPECT_FALSE(hwid_utils->VerifyHwidFormat("MODEL-CODE A1B-C2D-E",
/*has_checksum=*/true));
}
TEST_F(HwidUtilsTest, VerifyHwidFormatNoChecksumSuccess) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
EXPECT_TRUE(hwid_utils->VerifyHwidFormat("MODEL-CODE A1B-C2D-E",
/*has_checksum=*/false));
}
TEST_F(HwidUtilsTest, VerifyHwidFormatNoChecksumFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
EXPECT_FALSE(hwid_utils->VerifyHwidFormat("MODEL-CODE A1B-C2D-E2J",
/*has_checksum=*/false));
}
TEST_F(HwidUtilsTest, VerifyHwidFormatModelBrandCodeOnlyFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
std::string output;
EXPECT_FALSE(
hwid_utils->VerifyHwidFormat("MODEL-CODE", /*has_checksum=*/true));
}
TEST_F(HwidUtilsTest, VerifyHwidFormatTestHwidFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
std::string output;
EXPECT_FALSE(hwid_utils->VerifyHwidFormat("MODEL-CODE TEST 1126",
/*has_checksum=*/true));
}
TEST_F(HwidUtilsTest, VerifyHwidFormatInvalidFirstPartFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
std::string output;
EXPECT_FALSE(hwid_utils->VerifyHwidFormat("MODEL-CODE-INVALID A1B-C2D-E2J",
/*has_checksum=*/true));
}
TEST_F(HwidUtilsTest, DecomposeHwidSuccess) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
HwidElements expected = {.model_name = "MODEL",
.brand_code = "CODE",
.encoded_components = "A1B-C2D-E",
.checksum = "2J"};
const auto result = hwid_utils->DecomposeHwid("MODEL-CODE A1B-C2D-E2J");
EXPECT_TRUE(result.has_value());
EXPECT_EQ(result.value(), expected);
}
TEST_F(HwidUtilsTest, DecomposeHwidModelOnlySuccess) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
HwidElements expected = {.model_name = "MODEL",
.brand_code = std::nullopt,
.encoded_components = "A1B-C2D-E",
.checksum = "2J"};
const auto result = hwid_utils->DecomposeHwid("MODEL A1B-C2D-E2J");
EXPECT_TRUE(result.has_value());
EXPECT_EQ(result.value(), expected);
}
TEST_F(HwidUtilsTest, DecomposeTestHwidFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
const auto result = hwid_utils->DecomposeHwid("MODEL TEST 1126");
EXPECT_FALSE(result.has_value());
}
TEST_F(HwidUtilsTest, DecomposeHwidInvalidLengthFail) {
auto hwid_utils = std::make_unique<HwidUtilsImpl>();
const auto result = hwid_utils->DecomposeHwid("MODEL-CODE A1B-C2D-E");
EXPECT_FALSE(result.has_value());
}
} // namespace rmad