xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/FramebufferImpl_mock.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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