blob: 27a309617dd87a6911389b5d4467f2b32de4df3b [file] [log] [blame]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "libec/hello_command.h"
namespace ec {
namespace {
using ::testing::Return;
TEST(HelloCommand, HelloCommand) {
HelloCommand cmd(42);
EXPECT_EQ(cmd.Version(), 0);
EXPECT_EQ(cmd.Command(), EC_CMD_HELLO);
EXPECT_EQ(cmd.Req()->in_data, 42);
}
// Mock the underlying EcCommand to test.
class HelloCommandTest : public testing::Test {
public:
class MockHelloCommand : public HelloCommand {
public:
using HelloCommand::HelloCommand;
MOCK_METHOD(const struct ec_response_hello*, Resp, (), (const, override));
};
};
TEST_F(HelloCommandTest, IsFeatureSupported) {
MockHelloCommand mock_command(1);
struct ec_response_hello response {
.out_data = 1 + 0x01020304
};
EXPECT_CALL(mock_command, Resp).WillRepeatedly(Return(&response));
EXPECT_EQ(mock_command.GetResponseData(), 0x01020305);
}
} // namespace
} // namespace ec