Index: o3d/gpu_plugin/system_services/shared_memory_unittest.cc |
=================================================================== |
--- o3d/gpu_plugin/system_services/shared_memory_unittest.cc (revision 0) |
+++ o3d/gpu_plugin/system_services/shared_memory_unittest.cc (revision 0) |
@@ -0,0 +1,112 @@ |
+// Copyright (c) 2006-2008 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 "base/process_util.h" |
+#include "o3d/gpu_plugin/np_utils/np_browser_stub.h" |
+#include "o3d/gpu_plugin/system_services/shared_memory.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+ |
+using testing::_; |
+using testing::DoAll; |
+using testing::Return; |
+using testing::SetArgumentPointee; |
+using testing::StrictMock; |
+ |
+namespace o3d { |
+namespace gpu_plugin { |
+ |
+class SharedMemoryTest : public testing::Test { |
+ protected: |
+ virtual void SetUp() { |
+ shared_memory_ = NPCreateObject<SharedMemory>(NULL); |
+ } |
+ |
+ StubNPBrowser stub_browser_; |
+ NPObjectPointer<SharedMemory> shared_memory_; |
+}; |
+ |
+TEST_F(SharedMemoryTest, MemoryIsNotMappedBeforeInitialization) { |
+ EXPECT_TRUE(NULL == shared_memory_->handle); |
+ EXPECT_TRUE(NULL == shared_memory_->ptr); |
+ EXPECT_EQ(0, shared_memory_->size); |
+ EXPECT_EQ(0, shared_memory_->GetSize()); |
+} |
+ |
+TEST_F(SharedMemoryTest, InitializesAndReturnsMappedMemory) { |
+ EXPECT_TRUE(shared_memory_->Initialize(65536)); |
+ EXPECT_TRUE(NULL != shared_memory_->handle); |
+ EXPECT_TRUE(NULL == shared_memory_->ptr); |
+ EXPECT_EQ(65536, shared_memory_->size); |
+ EXPECT_EQ(65536, shared_memory_->GetSize()); |
+ |
+ EXPECT_TRUE(shared_memory_->Map()); |
+ ASSERT_TRUE(NULL != shared_memory_->ptr); |
+ EXPECT_EQ(65536, shared_memory_->size); |
+ |
+ // Test that memory can be written to. |
+ int8* ptr = static_cast<int8*>(shared_memory_->ptr); |
+ for (int i = 0; i < 65536; ++i) { |
+ ptr[i] = 7; |
+ } |
+} |
+ |
+TEST_F(SharedMemoryTest, MapFailsBeforeInitialization) { |
+ EXPECT_FALSE(shared_memory_->Map()); |
+} |
+ |
+TEST_F(SharedMemoryTest, InitializeFailsForNegativeSize) { |
+ EXPECT_FALSE(shared_memory_->Initialize(-1)); |
+} |
+ |
+TEST_F(SharedMemoryTest, SecondCallToInitializeFails) { |
+ EXPECT_TRUE(shared_memory_->Initialize(65536)); |
+ EXPECT_FALSE(shared_memory_->Initialize(65536)); |
+} |
+ |
+TEST_F(SharedMemoryTest, InitializeRoundsUpToPageSizeButReportsRequestedSize) { |
+ EXPECT_TRUE(shared_memory_->Initialize(7)); |
+ |
+ EXPECT_TRUE(shared_memory_->Map()); |
+ EXPECT_EQ(7, shared_memory_->size); |
+ |
+ // Test that memory can be written to. |
+ int8* ptr = static_cast<int8*>(shared_memory_->ptr); |
+ for (int i = 0; i < 7; ++i) { |
+ ptr[i] = 7; |
+ } |
+} |
+ |
+TEST_F(SharedMemoryTest, SecondMapDoesNothing) { |
+ EXPECT_TRUE(shared_memory_->Initialize(65536)); |
+ |
+ EXPECT_TRUE(shared_memory_->Map()); |
+ ASSERT_TRUE(NULL != shared_memory_->handle); |
+ ASSERT_TRUE(NULL != shared_memory_->ptr); |
+ EXPECT_EQ(65536, shared_memory_->size); |
+ |
+ void* handle = shared_memory_->handle; |
+ void* ptr = shared_memory_->ptr; |
+ EXPECT_TRUE(shared_memory_->Map()); |
+ ASSERT_EQ(ptr, shared_memory_->ptr); |
+ EXPECT_EQ(65536, shared_memory_->size); |
+} |
+ |
+TEST_F(SharedMemoryTest, CanInitializeWithHandle) { |
+ base::SharedMemory* temp_shared_memory = new base::SharedMemory; |
+ EXPECT_TRUE(temp_shared_memory->Create(std::wstring(), false, false, 65536)); |
+ |
+ shared_memory_->Initialize(temp_shared_memory, 65536); |
+ EXPECT_TRUE(NULL != shared_memory_->handle); |
+ EXPECT_TRUE(NULL == shared_memory_->ptr); |
+ EXPECT_EQ(65536, shared_memory_->size); |
+ |
+ EXPECT_TRUE(shared_memory_->Map()); |
+ EXPECT_TRUE(NULL != shared_memory_->handle); |
+ EXPECT_TRUE(NULL != shared_memory_->ptr); |
+ EXPECT_EQ(65536, shared_memory_->size); |
+} |
+ |
+} // namespace gpu_plugin |
+} // namespace o3d |