diff options
Diffstat (limited to 'o3d/gpu_plugin/command_buffer_unittest.cc')
-rw-r--r-- | o3d/gpu_plugin/command_buffer_unittest.cc | 162 |
1 files changed, 62 insertions, 100 deletions
diff --git a/o3d/gpu_plugin/command_buffer_unittest.cc b/o3d/gpu_plugin/command_buffer_unittest.cc index 8a542d3..81a7bbb 100644 --- a/o3d/gpu_plugin/command_buffer_unittest.cc +++ b/o3d/gpu_plugin/command_buffer_unittest.cc @@ -4,8 +4,8 @@ #include "base/thread.h" #include "o3d/gpu_plugin/command_buffer.h" -#include "o3d/gpu_plugin/np_utils/dynamic_np_object.h" #include "o3d/gpu_plugin/np_utils/np_browser_mock.h" +#include "o3d/gpu_plugin/np_utils/dynamic_np_object.h" #include "o3d/gpu_plugin/np_utils/np_object_mock.h" #include "o3d/gpu_plugin/np_utils/np_object_pointer.h" #include "o3d/gpu_plugin/system_services/shared_memory_mock.h" @@ -21,41 +21,19 @@ using testing::StrictMock; namespace o3d { namespace gpu_plugin { -class MockSystemNPObject : public DefaultNPObject<NPObject> { - public: - explicit MockSystemNPObject(NPP npp) { - } - - MOCK_METHOD1(CreateSharedMemory, NPObjectPointer<NPObject>(int32 size)); - - NP_UTILS_BEGIN_DISPATCHER_CHAIN(MockSystemNPObject, DefaultNPObject<NPObject>) - NP_UTILS_DISPATCHER(CreateSharedMemory, - NPObjectPointer<NPObject>(int32 size)) - NP_UTILS_END_DISPATCHER_CHAIN - - private: - DISALLOW_COPY_AND_ASSIGN(MockSystemNPObject); -}; - class CommandBufferTest : public testing::Test { protected: virtual void SetUp() { command_buffer_ = NPCreateObject<CommandBuffer>(NULL); + ring_buffer_ = NPCreateObject<MockSharedMemory>(NULL); - window_object_ = NPCreateObject<DynamicNPObject>(NULL); - - chromium_object_ = NPCreateObject<DynamicNPObject>(NULL); - NPSetProperty(NULL, window_object_, "chromium", chromium_object_); - - system_object_ = NPCreateObject<StrictMock<MockSystemNPObject> >(NULL); - NPSetProperty(NULL, chromium_object_, "system", system_object_); + ON_CALL(*ring_buffer_.Get(), GetSize()) + .WillByDefault(Return(1024)); } MockNPBrowser mock_browser_; NPObjectPointer<CommandBuffer> command_buffer_; - NPObjectPointer<DynamicNPObject> window_object_; - NPObjectPointer<DynamicNPObject> chromium_object_; - NPObjectPointer<MockSystemNPObject> system_object_; + NPObjectPointer<MockSharedMemory> ring_buffer_; }; TEST_F(CommandBufferTest, NullRingBufferByDefault) { @@ -64,37 +42,30 @@ TEST_F(CommandBufferTest, NullRingBufferByDefault) { } TEST_F(CommandBufferTest, InitializesCommandBuffer) { - EXPECT_CALL(mock_browser_, GetWindowNPObject(NULL)) - .WillOnce(Return(window_object_.ToReturned())); - - NPObjectPointer<MockSharedMemory> expected_shared_memory = - NPCreateObject<StrictMock<MockSharedMemory> >(NULL); + EXPECT_TRUE(command_buffer_->Initialize(ring_buffer_)); + EXPECT_TRUE(ring_buffer_ == command_buffer_->GetRingBuffer()); + EXPECT_EQ(256, command_buffer_->GetSize()); +} - EXPECT_CALL(*system_object_.Get(), CreateSharedMemory(1024)) - .WillOnce(Return(expected_shared_memory)); +TEST_F(CommandBufferTest, InitializeFailsSecondTime) { + EXPECT_TRUE(command_buffer_->Initialize(ring_buffer_)); + EXPECT_FALSE(command_buffer_->Initialize(ring_buffer_)); +} - EXPECT_TRUE(command_buffer_->Initialize(256)); - EXPECT_EQ(expected_shared_memory, command_buffer_->GetRingBuffer()); +TEST_F(CommandBufferTest, InitializeFailsIfSizeIsNegative) { + ON_CALL(*ring_buffer_.Get(), GetSize()) + .WillByDefault(Return(-1024)); - // Cannot reinitialize. - EXPECT_FALSE(command_buffer_->Initialize(256)); - EXPECT_EQ(expected_shared_memory, command_buffer_->GetRingBuffer()); + EXPECT_FALSE(command_buffer_->Initialize(ring_buffer_)); } -TEST_F(CommandBufferTest, InitializeFailsIfSizeIsTooBig) { - EXPECT_FALSE(command_buffer_->Initialize(0x40000000)); +TEST_F(CommandBufferTest, InitializeFailsIfRingBufferIsNull) { + EXPECT_FALSE(command_buffer_->Initialize(NPObjectPointer<NPObject>())); } -TEST_F(CommandBufferTest, InitializeFailsIfCannotCreateSharedMemory) { - EXPECT_CALL(mock_browser_, GetWindowNPObject(NULL)) - .WillOnce(Return(window_object_.ToReturned())); - - EXPECT_CALL(*system_object_.Get(), CreateSharedMemory(1024)) - .WillOnce(Return(NPObjectPointer<NPObject>())); - - EXPECT_FALSE(command_buffer_->Initialize(256)); - EXPECT_EQ(NPObjectPointer<NPObject>(), - command_buffer_->GetRingBuffer()); +TEST_F(CommandBufferTest, InitializeFailsIfRingBufferDoesNotImplementGetSize) { + EXPECT_FALSE(command_buffer_->Initialize( + NPCreateObject<DynamicNPObject>(NULL))); } TEST_F(CommandBufferTest, GetAndPutOffsetsDefaultToZero) { @@ -108,16 +79,7 @@ class MockCallback : public CallbackRunner<Tuple0> { }; TEST_F(CommandBufferTest, CanSyncGetAndPutOffset) { - EXPECT_CALL(mock_browser_, GetWindowNPObject(NULL)) - .WillOnce(Return(window_object_.ToReturned())); - - NPObjectPointer<MockSharedMemory> expected_shared_memory = - NPCreateObject<StrictMock<MockSharedMemory> >(NULL); - - EXPECT_CALL(*system_object_.Get(), CreateSharedMemory(1024)) - .WillOnce(Return(expected_shared_memory)); - - EXPECT_TRUE(command_buffer_->Initialize(256)); + EXPECT_TRUE(command_buffer_->Initialize(ring_buffer_)); StrictMock<MockCallback>* put_offset_change_callback = new StrictMock<MockCallback>; @@ -157,72 +119,72 @@ TEST_F(CommandBufferTest, RegisteringNullObjectReturnsZero) { } TEST_F(CommandBufferTest, RegistersDistinctNonZeroHandlesForObject) { - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); - EXPECT_EQ(2, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(2)); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(2, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(2)); } TEST_F(CommandBufferTest, RegisterObjectReusesUnregisteredHandles) { - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); - EXPECT_EQ(2, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(2)); - command_buffer_->UnregisterObject(window_object_, 1); - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); - EXPECT_EQ(3, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(3)); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(2, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(2)); + command_buffer_->UnregisterObject(ring_buffer_, 1); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(3, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(3)); } TEST_F(CommandBufferTest, CannotUnregisterHandleZero) { - command_buffer_->UnregisterObject(window_object_, 0); + command_buffer_->UnregisterObject(ring_buffer_, 0); EXPECT_TRUE(NULL == command_buffer_->GetRegisteredObject(0).Get()); - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); } TEST_F(CommandBufferTest, CannotUnregisterNegativeHandles) { - command_buffer_->UnregisterObject(window_object_, -1); - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); + command_buffer_->UnregisterObject(ring_buffer_, -1); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); } TEST_F(CommandBufferTest, CannotUnregisterUnregisteredHandles) { - command_buffer_->UnregisterObject(window_object_, 1); - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); + command_buffer_->UnregisterObject(ring_buffer_, 1); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); } TEST_F(CommandBufferTest, CannotUnregisterHandleWithoutDemonstratingAccessToObject) { - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - command_buffer_->UnregisterObject(chromium_object_, 1); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); - EXPECT_EQ(2, command_buffer_->RegisterObject(window_object_)); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + command_buffer_->UnregisterObject(command_buffer_, 1); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(2, command_buffer_->RegisterObject(ring_buffer_)); } // Testing this case specifically because there is an optimization that takes // a different code path in this case. TEST_F(CommandBufferTest, UnregistersLastRegisteredHandle) { - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); - command_buffer_->UnregisterObject(window_object_, 1); - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); + command_buffer_->UnregisterObject(ring_buffer_, 1); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); } // Testing this case specifically because there is an optimization that takes // a different code path in this case. TEST_F(CommandBufferTest, UnregistersTwoLastRegisteredHandles) { - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); - EXPECT_EQ(2, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(2)); - command_buffer_->UnregisterObject(window_object_, 2); - command_buffer_->UnregisterObject(window_object_, 1); - EXPECT_EQ(1, command_buffer_->RegisterObject(window_object_)); - EXPECT_EQ(window_object_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); + EXPECT_EQ(2, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(2)); + command_buffer_->UnregisterObject(ring_buffer_, 2); + command_buffer_->UnregisterObject(ring_buffer_, 1); + EXPECT_EQ(1, command_buffer_->RegisterObject(ring_buffer_)); + EXPECT_EQ(ring_buffer_, command_buffer_->GetRegisteredObject(1)); } TEST_F(CommandBufferTest, DefaultTokenIsZero) { |