1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2015 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // FramebufferImpl_mock.h:
7*8975f5c5SAndroid Build Coastguard Worker // Defines a mock of the FramebufferImpl class.
8*8975f5c5SAndroid Build Coastguard Worker //
9*8975f5c5SAndroid Build Coastguard Worker
10*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_FRAMEBUFFERIMPLMOCK_H_
11*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_FRAMEBUFFERIMPLMOCK_H_
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard Worker #include "gmock/gmock.h"
14*8975f5c5SAndroid Build Coastguard Worker
15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/FramebufferImpl.h"
16*8975f5c5SAndroid Build Coastguard Worker
17*8975f5c5SAndroid Build Coastguard Worker namespace rx
18*8975f5c5SAndroid Build Coastguard Worker {
19*8975f5c5SAndroid Build Coastguard Worker
20*8975f5c5SAndroid Build Coastguard Worker class MockFramebufferImpl : public rx::FramebufferImpl
21*8975f5c5SAndroid Build Coastguard Worker {
22*8975f5c5SAndroid Build Coastguard Worker public:
MockFramebufferImpl()23*8975f5c5SAndroid Build Coastguard Worker MockFramebufferImpl() : rx::FramebufferImpl(gl::FramebufferState(rx::UniqueSerial())) {}
~MockFramebufferImpl()24*8975f5c5SAndroid Build Coastguard Worker virtual ~MockFramebufferImpl() { destructor(); }
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD3(discard, angle::Result(const gl::Context *, size_t, const GLenum *));
27*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD3(invalidate, angle::Result(const gl::Context *, size_t, const GLenum *));
28*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD4(invalidateSub,
29*8975f5c5SAndroid Build Coastguard Worker angle::Result(const gl::Context *, size_t, const GLenum *, const gl::Rectangle &));
30*8975f5c5SAndroid Build Coastguard Worker
31*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD2(clear, angle::Result(const gl::Context *, GLbitfield));
32*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD4(clearBufferfv, angle::Result(const gl::Context *, GLenum, GLint, const GLfloat *));
33*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD4(clearBufferuiv, angle::Result(const gl::Context *, GLenum, GLint, const GLuint *));
34*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD4(clearBufferiv, angle::Result(const gl::Context *, GLenum, GLint, const GLint *));
35*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD5(clearBufferfi, angle::Result(const gl::Context *, GLenum, GLint, GLfloat, GLint));
36*8975f5c5SAndroid Build Coastguard Worker
37*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD7(readPixels,
38*8975f5c5SAndroid Build Coastguard Worker angle::Result(const gl::Context *,
39*8975f5c5SAndroid Build Coastguard Worker const gl::Rectangle &,
40*8975f5c5SAndroid Build Coastguard Worker GLenum,
41*8975f5c5SAndroid Build Coastguard Worker GLenum,
42*8975f5c5SAndroid Build Coastguard Worker const gl::PixelPackState &,
43*8975f5c5SAndroid Build Coastguard Worker gl::Buffer *,
44*8975f5c5SAndroid Build Coastguard Worker void *));
45*8975f5c5SAndroid Build Coastguard Worker
46*8975f5c5SAndroid Build Coastguard Worker MOCK_CONST_METHOD3(getSamplePosition, angle::Result(const gl::Context *, size_t, GLfloat *));
47*8975f5c5SAndroid Build Coastguard Worker
48*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD5(blit,
49*8975f5c5SAndroid Build Coastguard Worker angle::Result(const gl::Context *,
50*8975f5c5SAndroid Build Coastguard Worker const gl::Rectangle &,
51*8975f5c5SAndroid Build Coastguard Worker const gl::Rectangle &,
52*8975f5c5SAndroid Build Coastguard Worker GLbitfield,
53*8975f5c5SAndroid Build Coastguard Worker GLenum));
54*8975f5c5SAndroid Build Coastguard Worker
55*8975f5c5SAndroid Build Coastguard Worker MOCK_CONST_METHOD1(checkStatus, gl::FramebufferStatus(const gl::Context *));
56*8975f5c5SAndroid Build Coastguard Worker
57*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD4(syncState,
58*8975f5c5SAndroid Build Coastguard Worker angle::Result(const gl::Context *,
59*8975f5c5SAndroid Build Coastguard Worker GLenum,
60*8975f5c5SAndroid Build Coastguard Worker const gl::Framebuffer::DirtyBits &,
61*8975f5c5SAndroid Build Coastguard Worker gl::Command command));
62*8975f5c5SAndroid Build Coastguard Worker
63*8975f5c5SAndroid Build Coastguard Worker MOCK_METHOD0(destructor, void());
64*8975f5c5SAndroid Build Coastguard Worker };
65*8975f5c5SAndroid Build Coastguard Worker
MakeFramebufferMock()66*8975f5c5SAndroid Build Coastguard Worker inline ::testing::NiceMock<MockFramebufferImpl> *MakeFramebufferMock()
67*8975f5c5SAndroid Build Coastguard Worker {
68*8975f5c5SAndroid Build Coastguard Worker ::testing::NiceMock<MockFramebufferImpl> *framebufferImpl =
69*8975f5c5SAndroid Build Coastguard Worker new ::testing::NiceMock<MockFramebufferImpl>();
70*8975f5c5SAndroid Build Coastguard Worker // TODO(jmadill): add ON_CALLS for other returning methods
71*8975f5c5SAndroid Build Coastguard Worker ON_CALL(*framebufferImpl, checkStatus(testing::_))
72*8975f5c5SAndroid Build Coastguard Worker .WillByDefault(::testing::Return(gl::FramebufferStatus::Complete()));
73*8975f5c5SAndroid Build Coastguard Worker
74*8975f5c5SAndroid Build Coastguard Worker // We must mock the destructor since NiceMock doesn't work for destructors.
75*8975f5c5SAndroid Build Coastguard Worker EXPECT_CALL(*framebufferImpl, destructor()).Times(1).RetiresOnSaturation();
76*8975f5c5SAndroid Build Coastguard Worker
77*8975f5c5SAndroid Build Coastguard Worker return framebufferImpl;
78*8975f5c5SAndroid Build Coastguard Worker }
79*8975f5c5SAndroid Build Coastguard Worker
80*8975f5c5SAndroid Build Coastguard Worker } // namespace rx
81*8975f5c5SAndroid Build Coastguard Worker
82*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_RENDERER_FRAMEBUFFERIMPLMOCK_H_
83