blob: 8b6ba62945eea2caf46c0bfba68007116b519046 [file]
// Copyright 2026 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "libec/rollback_info_command_factory.h"
#include <memory>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "libec/mock_ec_command_version_supported.h"
namespace ec {
namespace {
using ::testing::_;
using ::testing::Return;
TEST(RollbackInfoCommandFactoryTest, Create_v0) {
MockEcCommandVersionSupported mock_version_supported;
EXPECT_CALL(mock_version_supported,
EcCmdVersionSupported(EC_CMD_ROLLBACK_INFO, 1))
.WillOnce(Return(EcCmdVersionSupportStatus::UNSUPPORTED));
auto cmd = RollbackInfoCommandFactory::Create(&mock_version_supported);
ASSERT_NE(cmd, nullptr);
EXPECT_EQ(cmd->Version(), 0);
EXPECT_EQ(cmd->GetVersion(), 0);
EXPECT_EQ(cmd->Command(), EC_CMD_ROLLBACK_INFO);
}
TEST(RollbackInfoCommandFactoryTest, Create_v1) {
MockEcCommandVersionSupported mock_version_supported;
EXPECT_CALL(mock_version_supported,
EcCmdVersionSupported(EC_CMD_ROLLBACK_INFO, 1))
.WillOnce(Return(EcCmdVersionSupportStatus::SUPPORTED));
auto cmd = RollbackInfoCommandFactory::Create(&mock_version_supported);
ASSERT_NE(cmd, nullptr);
EXPECT_EQ(cmd->Version(), 1);
EXPECT_EQ(cmd->GetVersion(), 1);
EXPECT_EQ(cmd->Command(), EC_CMD_ROLLBACK_INFO);
}
TEST(RollbackInfoCommandFactoryTest, Create_Version_Supported_Unknown) {
MockEcCommandVersionSupported mock_version_supported;
EXPECT_CALL(mock_version_supported,
EcCmdVersionSupported(EC_CMD_ROLLBACK_INFO, 1))
.WillOnce(Return(EcCmdVersionSupportStatus::UNKNOWN));
auto cmd = RollbackInfoCommandFactory::Create(&mock_version_supported);
ASSERT_NE(cmd, nullptr);
EXPECT_EQ(cmd->Version(), 0);
EXPECT_EQ(cmd->GetVersion(), 0);
EXPECT_EQ(cmd->Command(), EC_CMD_ROLLBACK_INFO);
}
} // namespace
} // namespace ec