/** @file
  Google Test mocks for UefiRuntimeServicesTableLib

  Copyright (c) 2022, Intel Corporation. All rights reserved.
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#pragma once

#include <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>
extern "C" {
  #include <Uefi.h>
  #include <Library/UefiRuntimeServicesTableLib.h>
}

struct MockUefiRuntimeServicesTableLib {
  MOCK_INTERFACE_DECLARATION (MockUefiRuntimeServicesTableLib);

  MOCK_FUNCTION_DECLARATION (
    EFI_STATUS,
    gRT_GetVariable,
    (IN      CHAR16    *VariableName,
     IN      EFI_GUID  *VendorGuid,
     OUT     UINT32    *Attributes OPTIONAL,
     IN OUT  UINTN     *DataSize,
     OUT     VOID      *Data)
    );

  MOCK_FUNCTION_DECLARATION (
    EFI_STATUS,
    gRT_SetVariable,
    (IN CHAR16    *VariableName,
     IN EFI_GUID  *VendorGuid,
     IN UINT32    Attributes,
     IN UINTN     DataSize,
     IN VOID      *Data)
    );

  MOCK_FUNCTION_DECLARATION (
    EFI_STATUS,
    gRT_GetTime,
    (OUT  EFI_TIME                    *Time,
     OUT  EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL)
    );
};
