blob: 69b385c272d24c6b16f679a76206fbb4e3443e14 [file] [log] [blame]
// Copyright 2022 The Fuchsia 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 ZIRCON_KERNEL_LIB_EFI_TESTING_INCLUDE_LIB_EFI_TESTING_MOCK_FILE_H_
#define ZIRCON_KERNEL_LIB_EFI_TESTING_INCLUDE_LIB_EFI_TESTING_MOCK_FILE_H_
#include <efi/protocol/file.h>
#include <gmock/gmock.h>
#include "mock_protocol_base.h"
namespace efi {
// gmock wrapper for efi_file_protocol.
class MockFileProtocol : public MockProtocolBase<MockFileProtocol, efi_file_protocol> {
public:
MockFileProtocol()
: MockProtocolBase<MockFileProtocol, efi_file_protocol>({
.Revision = EFI_FILE_PROTOCOL_LATEST_REVISION,
.Open = Bounce<&MockFileProtocol::Open>,
.Close = Bounce<&MockFileProtocol::Close>,
.Delete = Bounce<&MockFileProtocol::Delete>,
.Read = Bounce<&MockFileProtocol::Read>,
.Write = Bounce<&MockFileProtocol::Write>,
.GetPosition = Bounce<&MockFileProtocol::GetPosition>,
.SetPosition = Bounce<&MockFileProtocol::SetPosition>,
.GetInfo = Bounce<&MockFileProtocol::GetInfo>,
.SetInfo = Bounce<&MockFileProtocol::SetInfo>,
.Flush = Bounce<&MockFileProtocol::Flush>,
.OpenEx = Bounce<&MockFileProtocol::OpenEx>,
.ReadEx = Bounce<&MockFileProtocol::ReadEx>,
.WriteEx = Bounce<&MockFileProtocol::WriteEx>,
.FlushEx = Bounce<&MockFileProtocol::FlushEx>,
}) {}
MOCK_METHOD(efi_status, Open,
(efi_file_protocol * *new_handle, const char16_t* filename, uint64_t open_mode,
uint64_t attributes));
MOCK_METHOD(efi_status, Close, ());
MOCK_METHOD(efi_status, Delete, ());
MOCK_METHOD(efi_status, Read, (size_t * len, void* buf));
MOCK_METHOD(efi_status, Write, (size_t * len, const void* buf));
MOCK_METHOD(efi_status, GetPosition, (uint64_t * position));
MOCK_METHOD(efi_status, SetPosition, (uint64_t position));
MOCK_METHOD(efi_status, GetInfo, (const efi_guid* info_type, size_t* buf_size, void* buf));
MOCK_METHOD(efi_status, SetInfo, (const efi_guid* info_type, size_t buf_size, void* buf));
MOCK_METHOD(efi_status, Flush, ());
MOCK_METHOD(efi_status, OpenEx,
(struct efi_file_protocol * new_handle, char16_t* filename, uint64_t open_mode,
uint64_t attributes, efi_file_io_token* token));
MOCK_METHOD(efi_status, ReadEx, (efi_file_io_token * token));
MOCK_METHOD(efi_status, WriteEx, (efi_file_io_token * token));
MOCK_METHOD(efi_status, FlushEx, (efi_file_io_token * token));
};
} // namespace efi
#endif // ZIRCON_KERNEL_LIB_EFI_TESTING_INCLUDE_LIB_EFI_TESTING_MOCK_FILE_H_