Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2911)

Unified Diff: base/memory/discardable_memory_unittest.cc

Issue 24988003: Refactor DiscardableMemory for the upcoming DiscardableMemoryAllocator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add death unit test + fix Android implementation Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/memory/discardable_memory_unittest.cc
diff --git a/base/memory/discardable_memory_unittest.cc b/base/memory/discardable_memory_unittest.cc
index 60d35820fbd489a2fea3c9d9af70eb6195a5df0a..55381fd3d94ceb50a83ef83a3ab3b3ce35e388ff 100644
--- a/base/memory/discardable_memory_unittest.cc
+++ b/base/memory/discardable_memory_unittest.cc
@@ -7,36 +7,36 @@
namespace base {
+const size_t kSize = 1024;
+
#if defined(OS_ANDROID) || defined(OS_MACOSX)
// Test Lock() and Unlock() functionalities.
TEST(DiscardableMemoryTest, LockAndUnLock) {
ASSERT_TRUE(DiscardableMemory::Supported());
- const size_t size = 1024;
-
- DiscardableMemory memory;
- ASSERT_TRUE(memory.InitializeAndLock(size));
- void* addr = memory.Memory();
+ const scoped_ptr<DiscardableMemory> memory(
+ DiscardableMemory::CreateLockedMemory(kSize));
+ ASSERT_TRUE(memory);
+ void* addr = memory->Memory();
ASSERT_NE(static_cast<void*>(NULL), addr);
- memory.Unlock();
+ memory->Unlock();
// The system should have no reason to purge discardable blocks in this brief
// interval, though technically speaking this might flake.
- EXPECT_EQ(DISCARDABLE_MEMORY_SUCCESS, memory.Lock());
- addr = memory.Memory();
+ EXPECT_EQ(DISCARDABLE_MEMORY_SUCCESS, memory->Lock());
+ addr = memory->Memory();
ASSERT_NE(static_cast<void*>(NULL), addr);
- memory.Unlock();
+ memory->Unlock();
}
// Test delete a discardable memory while it is locked.
TEST(DiscardableMemoryTest, DeleteWhileLocked) {
ASSERT_TRUE(DiscardableMemory::Supported());
- const size_t size = 1024;
-
- DiscardableMemory memory;
- ASSERT_TRUE(memory.InitializeAndLock(size));
+ const scoped_ptr<DiscardableMemory> memory(
+ DiscardableMemory::CreateLockedMemory(kSize));
+ ASSERT_TRUE(memory);
}
#if defined(OS_MACOSX)
@@ -45,17 +45,26 @@ TEST(DiscardableMemoryTest, Purge) {
ASSERT_TRUE(DiscardableMemory::Supported());
ASSERT_TRUE(DiscardableMemory::PurgeForTestingSupported());
- const size_t size = 1024;
-
- DiscardableMemory memory;
- ASSERT_TRUE(memory.InitializeAndLock(size));
- memory.Unlock();
+ const scoped_ptr<DiscardableMemory> memory(
+ DiscardableMemory::CreateLockedMemory(kSize));
+ ASSERT_TRUE(memory);
+ memory->Unlock();
DiscardableMemory::PurgeForTesting();
- EXPECT_EQ(DISCARDABLE_MEMORY_PURGED, memory.Lock());
+ EXPECT_EQ(DISCARDABLE_MEMORY_PURGED, memory->Lock());
}
#endif // OS_MACOSX
+#if !defined(OS_ANDROID) // Death tests are not supported with Android APKs.
+TEST(DiscardableMemoryTest, UnlockedMemoryAccessCrashesInDebugMode) {
Avi (use Gerrit) 2013/10/17 18:00:27 Actually, can we ifdef this whole test out if we'r
Philippe 2013/10/18 08:25:21 Yeah definitely. I used to have this but lost it a
+ const scoped_ptr<DiscardableMemory> memory(
+ DiscardableMemory::CreateLockedMemory(kSize));
+ ASSERT_TRUE(memory);
+ memory->Unlock();
+ ASSERT_DEATH({ *static_cast<int*>(memory->Memory()) = 0xdeadbeef; }, ".*");
+}
+#endif
+
#endif // OS_*
}

Powered by Google App Engine
This is Rietveld 408576698