| // Copyright 2010 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "gpu/command_buffer/service/id_manager.h" | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| namespace gpu { | |
| namespace gles2 { | |
| class IdManagerTest : public testing::Test { | |
| public: | |
| IdManagerTest() = default; | |
| protected: | |
| void SetUp() override {} | |
| void TearDown() override {} | |
| IdManager manager_; | |
| }; | |
| TEST_F(IdManagerTest, Basic) { | |
| const GLuint kClientId1 = 1; | |
| const GLuint kClientId2 = 2; | |
| const GLuint kServiceId1 = 201; | |
| const GLuint kServiceId2 = 202; | |
| // Check we can add an id | |
| EXPECT_TRUE(manager_.AddMapping(kClientId1, kServiceId1)); | |
| // Check we can get that mapping | |
| GLuint service_id = 0; | |
| EXPECT_TRUE(manager_.GetServiceId(kClientId1, &service_id)); | |
| EXPECT_EQ(kServiceId1, service_id); | |
| GLuint client_id = 0; | |
| EXPECT_TRUE(manager_.GetClientId(kServiceId1, &client_id)); | |
| EXPECT_EQ(kClientId1, client_id); | |
| // Check that it fails if we get a non-existent id. | |
| service_id = 0; | |
| client_id = 0; | |
| EXPECT_FALSE(manager_.GetServiceId(kClientId2, &service_id)); | |
| EXPECT_FALSE(manager_.GetClientId(kServiceId2, &client_id)); | |
| EXPECT_EQ(0u, service_id); | |
| EXPECT_EQ(0u, client_id); | |
| // Check we can add a second id. | |
| EXPECT_TRUE(manager_.AddMapping(kClientId2, kServiceId2)); | |
| // Check we can get that mapping | |
| service_id = 0; | |
| EXPECT_TRUE(manager_.GetServiceId(kClientId1, &service_id)); | |
| EXPECT_EQ(kServiceId1, service_id); | |
| EXPECT_TRUE(manager_.GetServiceId(kClientId2, &service_id)); | |
| EXPECT_EQ(kServiceId2, service_id); | |
| client_id = 0; | |
| EXPECT_TRUE(manager_.GetClientId(kServiceId1, &client_id)); | |
| EXPECT_EQ(kClientId1, client_id); | |
| EXPECT_TRUE(manager_.GetClientId(kServiceId2, &client_id)); | |
| EXPECT_EQ(kClientId2, client_id); | |
| // Check if we remove an id we can no longer get it. | |
| EXPECT_TRUE(manager_.RemoveMapping(kClientId1, kServiceId1)); | |
| EXPECT_FALSE(manager_.GetServiceId(kClientId1, &service_id)); | |
| EXPECT_FALSE(manager_.GetClientId(kServiceId1, &client_id)); | |
| // Check we get an error if we try to remove a non-existent id. | |
| EXPECT_FALSE(manager_.RemoveMapping(kClientId1, kServiceId1)); | |
| EXPECT_FALSE(manager_.RemoveMapping(kClientId2, kServiceId1)); | |
| EXPECT_FALSE(manager_.RemoveMapping(kClientId1, kServiceId2)); | |
| // Check we get an error if we try to map an existing id. | |
| EXPECT_FALSE(manager_.AddMapping(kClientId2, kServiceId2)); | |
| EXPECT_FALSE(manager_.AddMapping(kClientId2, kServiceId1)); | |
| } | |
| } // namespace gles2 | |
| } // namespace gpu | |