/**
 * @file       mocks.h
 * @brief      Process authenticator API mocking function for unit-tests
 * @author     Viacheslav Vovchenko (v.vovchenko@samsung.com)
 * @version    1.0
 * @date       Created May 30, 2016
 * @copyright  In Samsung Ukraine R&D Center (SURC) under a contract between
 * @copyright  LLC "Samsung Electronics Ukraine Company" (Kiev, Ukraine) and
 * @copyright  "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
 * @copyright  Copyright: (c) Samsung Electronics Co, Ltd 2016. All rights reserved.
**/

#ifndef PA_TZ_DRV_TESTS_MOCKS_MOCKS_H_
#define PA_TZ_DRV_TESTS_MOCKS_MOCKS_H_

#include <stdint.h>

#include "memory.h"

/**
 * @brief Initialization mocking a default values must be invoke in each test
 */
void InitMocks();

/**
 * @brief Deinitialization mocking must be invoke in each test
 */
void DeinitMocks();

/**
 * @brief Get counter of mock function for mapping
 * @return ::uint32_t Number of calls
 */
uint32_t GetMockCallMapCounter();

/**
 * @brief Get counter of mock function for unmapping
 * @return ::uint32_t Number of calls
 */
uint32_t GetMockCallUnmapCounter();

/**
 * @brief Get counter of mock function to convert a virtual to physical address
 * @return ::uint32_t Number of calls
 */
uint32_t GetMockCallVirtToPhysCounter();

/**
 * @brief Get counter of mock function for mapping
 * @return ::uint32_t Number of calls
 */
uint32_t GetTestSize();

/**
 * @brief Get address of test buffer
 * @param [in] offset Offset for test buffer in bytes
 * @return :: Pointer to address of memory
 */
uint8_t *GetMockBuffer(int offset);

/**
 * @brief Get counter of mock function for mapping
 * @return ::PhysicalAddress Physical address for testing
 */
PhysicalAddress GetTestPhysicalAddress();

#endif  // PA_TZ_DRV_TESTS_MOCKS_MOCKS_H_
