blob: 9a3d2f09110db1da7e57b61dcbc9d149fb4da7bb [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIBHWSEC_TEST_UTILS_TPM1_TEST_FIXTURE_H_
#define LIBHWSEC_TEST_UTILS_TPM1_TEST_FIXTURE_H_
#include <memory>
#include <gtest/gtest.h>
#include "libhwsec/overalls/mock_overalls.h"
// ON_CALL_OVERALLS and EXPECT_CALL_OVERALLS are meant to be used for specifying
// ON_CALL and EXPECT_CALL for the |MockOveralls| injected to the
// |OverallsSingleton|. It determines the |MockOveralls| objects automatically
// so the users only have to specify the API name and behaviors.
// Example usage:
//
// void SetUp() override {
// ON_CALL_OVERALLS(Ospi_Context_Create(_))
// .WillByDefault(Return(TSS_SUCCESS)));
//
// EXPECT_CALL_OVERALLS(Ospi_Context_Create(_))
// .WillOnce(Return(TSP_ERROR(TSS_E_INTERNAL_ERROR)));
#define ON_CALL_OVERALLS(call) ON_CALL((*mock_overalls_), call)
#define EXPECT_CALL_OVERALLS(call) EXPECT_CALL((*mock_overalls_), call)
namespace hwsec {
// Represents the types of MockOveralls; see the comment inlined below.
enum class MOCK_OVERALLS_TYPE {
// NiceMock<MockOveralls>
NICE,
// MockOveralls
PLAIN,
// StrictMock<MockOveralls>
STRICT,
};
// A test fixture that implements the common setup for TPM1.2
class Tpm1HwsecTest : public ::testing::Test {
public:
// Constructs the test fixture with default setup; specifically, the type of
// |MockOveralls| will be a NiceMock. See the delegated constructor below for
// more information.
Tpm1HwsecTest();
// Constructs the test fixture instructed by the input parameters. The
// MockOveralls is injected into the singleton during the test according to
// |mock_overalls_type|. See |MOCK_OVERALLS_TYPE| for reference.
explicit Tpm1HwsecTest(MOCK_OVERALLS_TYPE mock_overalls_type);
~Tpm1HwsecTest() override;
protected:
// The mock instance of |Overalls| and the backup of normal |Overalls| are
// defined below.
std::unique_ptr<overalls::MockOveralls> mock_overalls_;
overalls::Overalls* original_overalls_{nullptr};
};
} // namespace hwsec
#endif // LIBHWSEC_TEST_UTILS_TPM1_TEST_FIXTURE_H_