pepper_interface_mock.h revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef LIBRARIES_NACL_IO_TEST_PEPPER_INTERFACE_MOCK_H_ 6#define LIBRARIES_NACL_IO_TEST_PEPPER_INTERFACE_MOCK_H_ 7 8#include "gmock/gmock.h" 9#include "nacl_io/pepper_interface.h" 10 11// Mock interface class definitions. 12#include "nacl_io/pepper/undef_macros.h" 13#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \ 14 class BaseClass##Mock : public nacl_io::BaseClass { \ 15 public: \ 16 BaseClass##Mock(); \ 17 virtual ~BaseClass##Mock(); 18#define END_INTERFACE(BaseClass, PPInterface) \ 19 }; 20#define METHOD0(Class, ReturnType, MethodName) \ 21 MOCK_METHOD0(MethodName, ReturnType()); 22#define METHOD1(Class, ReturnType, MethodName, Type0) \ 23 MOCK_METHOD1(MethodName, ReturnType(Type0)); 24#define METHOD2(Class, ReturnType, MethodName, Type0, Type1) \ 25 MOCK_METHOD2(MethodName, ReturnType(Type0, Type1)); 26#define METHOD3(Class, ReturnType, MethodName, Type0, Type1, Type2) \ 27 MOCK_METHOD3(MethodName, ReturnType(Type0, Type1, Type2)); 28#define METHOD4(Class, ReturnType, MethodName, Type0, Type1, Type2, Type3) \ 29 MOCK_METHOD4(MethodName, ReturnType(Type0, Type1, Type2, Type3)); 30#define METHOD5(Class, ReturnType, MethodName, Type0, Type1, Type2, Type3, \ 31 Type4) \ 32 MOCK_METHOD5(MethodName, ReturnType(Type0, Type1, Type2, Type3, Type4)); 33#include "nacl_io/pepper/all_interfaces.h" 34 35 36class PepperInterfaceMock : public nacl_io::PepperInterface { 37 public: 38 explicit PepperInterfaceMock(PP_Instance instance); 39 ~PepperInterfaceMock(); 40 41 virtual PP_Instance GetInstance(); 42 43// Interface getters. 44#include "nacl_io/pepper/undef_macros.h" 45#include "nacl_io/pepper/define_empty_macros.h" 46#undef BEGIN_INTERFACE 47#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \ 48 virtual BaseClass##Mock* Get##BaseClass(); 49#include "nacl_io/pepper/all_interfaces.h" 50 51 private: 52 PP_Instance instance_; 53 54// Interface pointers. 55#include "nacl_io/pepper/undef_macros.h" 56#include "nacl_io/pepper/define_empty_macros.h" 57#undef BEGIN_INTERFACE 58#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \ 59 BaseClass##Mock* BaseClass##interface_; 60#include "nacl_io/pepper/all_interfaces.h" 61}; 62 63 64#endif // LIBRARIES_NACL_IO_TEST_PEPPER_INTERFACE_MOCK_H_ 65