xref: /aosp_15_r20/external/angle/src/libANGLE/ResourceManager_unittest.cpp (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 // Unit tests for ResourceManager.
7*8975f5c5SAndroid Build Coastguard Worker //
8*8975f5c5SAndroid Build Coastguard Worker 
9*8975f5c5SAndroid Build Coastguard Worker #include <gmock/gmock.h>
10*8975f5c5SAndroid Build Coastguard Worker #include <gtest/gtest.h>
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/ResourceManager.h"
13*8975f5c5SAndroid Build Coastguard Worker #include "tests/angle_unittests_utils.h"
14*8975f5c5SAndroid Build Coastguard Worker 
15*8975f5c5SAndroid Build Coastguard Worker using namespace rx;
16*8975f5c5SAndroid Build Coastguard Worker using namespace gl;
17*8975f5c5SAndroid Build Coastguard Worker 
18*8975f5c5SAndroid Build Coastguard Worker using ::testing::_;
19*8975f5c5SAndroid Build Coastguard Worker 
20*8975f5c5SAndroid Build Coastguard Worker namespace
21*8975f5c5SAndroid Build Coastguard Worker {
22*8975f5c5SAndroid Build Coastguard Worker 
23*8975f5c5SAndroid Build Coastguard Worker class ResourceManagerTest : public testing::Test
24*8975f5c5SAndroid Build Coastguard Worker {
25*8975f5c5SAndroid Build Coastguard Worker   protected:
SetUp()26*8975f5c5SAndroid Build Coastguard Worker     void SetUp() override
27*8975f5c5SAndroid Build Coastguard Worker     {
28*8975f5c5SAndroid Build Coastguard Worker         mTextureManager      = new TextureManager();
29*8975f5c5SAndroid Build Coastguard Worker         mBufferManager       = new BufferManager();
30*8975f5c5SAndroid Build Coastguard Worker         mRenderbuffermanager = new RenderbufferManager();
31*8975f5c5SAndroid Build Coastguard Worker     }
32*8975f5c5SAndroid Build Coastguard Worker 
TearDown()33*8975f5c5SAndroid Build Coastguard Worker     void TearDown() override
34*8975f5c5SAndroid Build Coastguard Worker     {
35*8975f5c5SAndroid Build Coastguard Worker         mTextureManager->release(nullptr);
36*8975f5c5SAndroid Build Coastguard Worker         mBufferManager->release(nullptr);
37*8975f5c5SAndroid Build Coastguard Worker         mRenderbuffermanager->release(nullptr);
38*8975f5c5SAndroid Build Coastguard Worker     }
39*8975f5c5SAndroid Build Coastguard Worker 
40*8975f5c5SAndroid Build Coastguard Worker     MockGLFactory mMockFactory;
41*8975f5c5SAndroid Build Coastguard Worker     TextureManager *mTextureManager;
42*8975f5c5SAndroid Build Coastguard Worker     BufferManager *mBufferManager;
43*8975f5c5SAndroid Build Coastguard Worker     RenderbufferManager *mRenderbuffermanager;
44*8975f5c5SAndroid Build Coastguard Worker };
45*8975f5c5SAndroid Build Coastguard Worker 
TEST_F(ResourceManagerTest,ReallocateBoundTexture)46*8975f5c5SAndroid Build Coastguard Worker TEST_F(ResourceManagerTest, ReallocateBoundTexture)
47*8975f5c5SAndroid Build Coastguard Worker {
48*8975f5c5SAndroid Build Coastguard Worker     EXPECT_CALL(mMockFactory, createTexture(_)).Times(1).RetiresOnSaturation();
49*8975f5c5SAndroid Build Coastguard Worker 
50*8975f5c5SAndroid Build Coastguard Worker     mTextureManager->checkTextureAllocation(&mMockFactory, {1}, TextureType::_2D);
51*8975f5c5SAndroid Build Coastguard Worker     TextureID newTexture = mTextureManager->createTexture();
52*8975f5c5SAndroid Build Coastguard Worker     EXPECT_NE(1u, newTexture.value);
53*8975f5c5SAndroid Build Coastguard Worker }
54*8975f5c5SAndroid Build Coastguard Worker 
TEST_F(ResourceManagerTest,ReallocateBoundBuffer)55*8975f5c5SAndroid Build Coastguard Worker TEST_F(ResourceManagerTest, ReallocateBoundBuffer)
56*8975f5c5SAndroid Build Coastguard Worker {
57*8975f5c5SAndroid Build Coastguard Worker     EXPECT_CALL(mMockFactory, createBuffer(_)).Times(1).RetiresOnSaturation();
58*8975f5c5SAndroid Build Coastguard Worker 
59*8975f5c5SAndroid Build Coastguard Worker     mBufferManager->checkBufferAllocation(&mMockFactory, {1});
60*8975f5c5SAndroid Build Coastguard Worker     BufferID newBuffer = mBufferManager->createBuffer();
61*8975f5c5SAndroid Build Coastguard Worker     EXPECT_NE(1u, newBuffer.value);
62*8975f5c5SAndroid Build Coastguard Worker }
63*8975f5c5SAndroid Build Coastguard Worker 
TEST_F(ResourceManagerTest,ReallocateBoundRenderbuffer)64*8975f5c5SAndroid Build Coastguard Worker TEST_F(ResourceManagerTest, ReallocateBoundRenderbuffer)
65*8975f5c5SAndroid Build Coastguard Worker {
66*8975f5c5SAndroid Build Coastguard Worker     EXPECT_CALL(mMockFactory, createRenderbuffer(_)).Times(1).RetiresOnSaturation();
67*8975f5c5SAndroid Build Coastguard Worker 
68*8975f5c5SAndroid Build Coastguard Worker     mRenderbuffermanager->checkRenderbufferAllocation(&mMockFactory, {1});
69*8975f5c5SAndroid Build Coastguard Worker     RenderbufferID newRenderbuffer = mRenderbuffermanager->createRenderbuffer();
70*8975f5c5SAndroid Build Coastguard Worker     EXPECT_NE(1u, newRenderbuffer.value);
71*8975f5c5SAndroid Build Coastguard Worker }
72*8975f5c5SAndroid Build Coastguard Worker 
73*8975f5c5SAndroid Build Coastguard Worker }  // anonymous namespace
74