ce47bd2cb4012467ae081df9dd2366dbce4fbaa1
[platform/framework/web/crosswalk.git] / src / gpu / command_buffer / service / context_group_unittest.cc
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "gpu/command_buffer/service/context_group.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h"
9 #include "gpu/command_buffer/service/gpu_service_test.h"
10 #include "gpu/command_buffer/service/test_helper.h"
11 #include "gpu/command_buffer/service/texture_manager.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "ui/gl/gl_mock.h"
14
15 using ::testing::_;
16 using ::testing::DoAll;
17 using ::testing::HasSubstr;
18 using ::testing::InSequence;
19 using ::testing::MatcherCast;
20 using ::testing::Not;
21 using ::testing::Pointee;
22 using ::testing::Return;
23 using ::testing::SetArrayArgument;
24 using ::testing::SetArgumentPointee;
25 using ::testing::StrEq;
26
27 namespace gpu {
28 namespace gles2 {
29
30 class ContextGroupTest : public GpuServiceTest {
31  public:
32   static const bool kBindGeneratesResource = false;
33
34   ContextGroupTest() {}
35
36  protected:
37   virtual void SetUp() {
38     GpuServiceTest::SetUp();
39     decoder_.reset(new MockGLES2Decoder());
40     group_ = scoped_refptr<ContextGroup>(
41         new ContextGroup(NULL, NULL, NULL, NULL, kBindGeneratesResource));
42   }
43
44   scoped_ptr<MockGLES2Decoder> decoder_;
45   scoped_refptr<ContextGroup> group_;
46 };
47
48 TEST_F(ContextGroupTest, Basic) {
49   // Test it starts off uninitialized.
50   EXPECT_EQ(0u, group_->max_vertex_attribs());
51   EXPECT_EQ(0u, group_->max_texture_units());
52   EXPECT_EQ(0u, group_->max_texture_image_units());
53   EXPECT_EQ(0u, group_->max_vertex_texture_image_units());
54   EXPECT_EQ(0u, group_->max_fragment_uniform_vectors());
55   EXPECT_EQ(0u, group_->max_varying_vectors());
56   EXPECT_EQ(0u, group_->max_vertex_uniform_vectors());
57   EXPECT_TRUE(group_->buffer_manager() == NULL);
58   EXPECT_TRUE(group_->framebuffer_manager() == NULL);
59   EXPECT_TRUE(group_->renderbuffer_manager() == NULL);
60   EXPECT_TRUE(group_->texture_manager() == NULL);
61   EXPECT_TRUE(group_->program_manager() == NULL);
62   EXPECT_TRUE(group_->shader_manager() == NULL);
63 }
64
65 TEST_F(ContextGroupTest, InitializeNoExtensions) {
66   TestHelper::SetupContextGroupInitExpectations(
67       gl_.get(), DisallowedFeatures(), "", "", kBindGeneratesResource);
68   group_->Initialize(decoder_.get(), DisallowedFeatures());
69   EXPECT_EQ(static_cast<uint32>(TestHelper::kNumVertexAttribs),
70             group_->max_vertex_attribs());
71   EXPECT_EQ(static_cast<uint32>(TestHelper::kNumTextureUnits),
72             group_->max_texture_units());
73   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxTextureImageUnits),
74             group_->max_texture_image_units());
75   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxVertexTextureImageUnits),
76              group_->max_vertex_texture_image_units());
77   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxFragmentUniformVectors),
78             group_->max_fragment_uniform_vectors());
79   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxVaryingVectors),
80             group_->max_varying_vectors());
81   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxVertexUniformVectors),
82             group_->max_vertex_uniform_vectors());
83   EXPECT_TRUE(group_->buffer_manager() != NULL);
84   EXPECT_TRUE(group_->framebuffer_manager() != NULL);
85   EXPECT_TRUE(group_->renderbuffer_manager() != NULL);
86   EXPECT_TRUE(group_->texture_manager() != NULL);
87   EXPECT_TRUE(group_->program_manager() != NULL);
88   EXPECT_TRUE(group_->shader_manager() != NULL);
89
90   group_->Destroy(decoder_.get(), false);
91   EXPECT_TRUE(group_->buffer_manager() == NULL);
92   EXPECT_TRUE(group_->framebuffer_manager() == NULL);
93   EXPECT_TRUE(group_->renderbuffer_manager() == NULL);
94   EXPECT_TRUE(group_->texture_manager() == NULL);
95   EXPECT_TRUE(group_->program_manager() == NULL);
96   EXPECT_TRUE(group_->shader_manager() == NULL);
97 }
98
99 TEST_F(ContextGroupTest, MultipleContexts) {
100   scoped_ptr<MockGLES2Decoder> decoder2_(new MockGLES2Decoder());
101   TestHelper::SetupContextGroupInitExpectations(
102       gl_.get(), DisallowedFeatures(), "", "", kBindGeneratesResource);
103   group_->Initialize(decoder_.get(), DisallowedFeatures());
104   group_->Initialize(decoder2_.get(), DisallowedFeatures());
105
106   EXPECT_TRUE(group_->buffer_manager() != NULL);
107   EXPECT_TRUE(group_->framebuffer_manager() != NULL);
108   EXPECT_TRUE(group_->renderbuffer_manager() != NULL);
109   EXPECT_TRUE(group_->texture_manager() != NULL);
110   EXPECT_TRUE(group_->program_manager() != NULL);
111   EXPECT_TRUE(group_->shader_manager() != NULL);
112
113   group_->Destroy(decoder_.get(), false);
114
115   EXPECT_TRUE(group_->buffer_manager() != NULL);
116   EXPECT_TRUE(group_->framebuffer_manager() != NULL);
117   EXPECT_TRUE(group_->renderbuffer_manager() != NULL);
118   EXPECT_TRUE(group_->texture_manager() != NULL);
119   EXPECT_TRUE(group_->program_manager() != NULL);
120   EXPECT_TRUE(group_->shader_manager() != NULL);
121
122   group_->Destroy(decoder2_.get(), false);
123
124   EXPECT_TRUE(group_->buffer_manager() == NULL);
125   EXPECT_TRUE(group_->framebuffer_manager() == NULL);
126   EXPECT_TRUE(group_->renderbuffer_manager() == NULL);
127   EXPECT_TRUE(group_->texture_manager() == NULL);
128   EXPECT_TRUE(group_->program_manager() == NULL);
129   EXPECT_TRUE(group_->shader_manager() == NULL);
130 }
131
132 }  // namespace gles2
133 }  // namespace gpu
134
135