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