Index: gpu/command_buffer/service/valuebuffer_manager_unittest.cc |
diff --git a/gpu/command_buffer/service/valuebuffer_manager_unittest.cc b/gpu/command_buffer/service/valuebuffer_manager_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ead5df5d1663b7b9a09e3be256376d943818ae6f |
--- /dev/null |
+++ b/gpu/command_buffer/service/valuebuffer_manager_unittest.cc |
@@ -0,0 +1,100 @@ |
+// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
+// 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/valuebuffer_manager.h" |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/strings/string_number_conversions.h" |
+#include "base/strings/string_util.h" |
+#include "gpu/command_buffer/common/gles2_cmd_format.h" |
+#include "gpu/command_buffer/common/gles2_cmd_utils.h" |
+#include "gpu/command_buffer/service/common_decoder.h" |
+#include "gpu/command_buffer/service/feature_info.h" |
+#include "gpu/command_buffer/service/gpu_service_test.h" |
+#include "gpu/command_buffer/service/mocks.h" |
+#include "gpu/command_buffer/service/test_helper.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "ui/gl/gl_bindings.h" |
+#include "ui/gl/gl_mock.h" |
+ |
+namespace gpu { |
+namespace gles2 { |
+ |
+class ValuebufferManagerTest : public GpuServiceTest { |
+ public: |
+ ValuebufferManagerTest() : manager_() {} |
+ ~ValuebufferManagerTest() override { manager_.Destroy(); } |
+ |
+ protected: |
+ ValuebufferManager manager_; |
+}; |
+ |
+TEST_F(ValuebufferManagerTest, Basic) { |
+ const GLuint kClient1Id = 1; |
+ const GLuint kClient2Id = 2; |
+ // Check we can create a Valuebuffer |
+ manager_.CreateValuebuffer(kClient1Id); |
+ Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); |
+ ASSERT_TRUE(valuebuffer0 != NULL); |
+ EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); |
+ // Check we get nothing for a non-existent Valuebuffer. |
+ // Check trying to a remove non-existent Valuebuffer does not crash |
+ manager_.RemoveValuebuffer(kClient2Id); |
+ // Check we can't get the renderbuffer after we remove it. |
+ manager_.RemoveValuebuffer(kClient1Id); |
+ EXPECT_TRUE(manager_.GetValuebuffer(kClient1Id) == NULL); |
+} |
+ |
+TEST_F(ValuebufferManagerTest, Destroy) { |
+ const GLuint kClient1Id = 1; |
+ // Check we can create Valuebuffer. |
+ manager_.CreateValuebuffer(kClient1Id); |
+ Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); |
+ ASSERT_TRUE(valuebuffer0 != NULL); |
+ EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); |
+ manager_.Destroy(); |
+ // Check the resources were released. |
+ Valuebuffer* valuebuffer1 = manager_.GetValuebuffer(kClient1Id); |
+ ASSERT_TRUE(valuebuffer1 == NULL); |
+} |
+ |
+TEST_F(ValuebufferManagerTest, ValueBuffer) { |
+ const GLuint kClient1Id = 1; |
+ // Check we can create a Valuebuffer |
+ manager_.CreateValuebuffer(kClient1Id); |
+ Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); |
+ ASSERT_TRUE(valuebuffer0 != NULL); |
+ EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); |
+ EXPECT_FALSE(valuebuffer0->IsValid()); |
+} |
+ |
+TEST_F(ValuebufferManagerTest, UpdateState) { |
+ const GLuint kClient1Id = 1; |
+ ValueState valuestate1; |
+ valuestate1.int_value[0] = 111; |
+ ValueState valuestate2; |
+ valuestate2.int_value[0] = 222; |
+ manager_.CreateValuebuffer(kClient1Id); |
+ Valuebuffer* valuebuffer0 = manager_.GetValuebuffer(kClient1Id); |
+ ASSERT_TRUE(valuebuffer0 != NULL); |
+ EXPECT_EQ(kClient1Id, valuebuffer0->client_id()); |
+ valuebuffer0->AddSubscription(GL_MOUSE_POSITION_CHROMIUM); |
+ ASSERT_TRUE(valuebuffer0->GetState(GL_MOUSE_POSITION_CHROMIUM) == NULL); |
+ manager_.UpdateValueState(GL_MOUSE_POSITION_CHROMIUM, valuestate1); |
+ manager_.UpdateValuebufferState(valuebuffer0); |
+ const ValueState* new_state1 = |
+ valuebuffer0->GetState(GL_MOUSE_POSITION_CHROMIUM); |
+ ASSERT_TRUE(new_state1 != NULL); |
+ ASSERT_TRUE(new_state1->int_value[0] == 111); |
+ // Ensure state changes |
+ manager_.UpdateValueState(GL_MOUSE_POSITION_CHROMIUM, valuestate2); |
+ manager_.UpdateValuebufferState(valuebuffer0); |
+ const ValueState* new_state2 = |
+ valuebuffer0->GetState(GL_MOUSE_POSITION_CHROMIUM); |
+ ASSERT_TRUE(new_state2 != NULL); |
+ ASSERT_TRUE(new_state2->int_value[0] == 222); |
+} |
+ |
+} // namespace gles2 |
+} // namespace gpu |