Home | History | Annotate | Download | only in memory
      1 // Copyright (c) 2013 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 "base/memory/discardable_memory.h"
      6 #include "testing/gtest/include/gtest/gtest.h"
      7 
      8 namespace base {
      9 
     10 #if defined(OS_ANDROID) || defined(OS_MACOSX)
     11 // Test Lock() and Unlock() functionalities.
     12 TEST(DiscardableMemoryTest, LockAndUnLock) {
     13   ASSERT_TRUE(DiscardableMemory::Supported());
     14 
     15   const size_t size = 1024;
     16 
     17   DiscardableMemory memory;
     18   ASSERT_TRUE(memory.InitializeAndLock(size));
     19   void* addr = memory.Memory();
     20   ASSERT_NE(static_cast<void*>(NULL), addr);
     21 
     22   memory.Unlock();
     23   // The system should have no reason to purge discardable blocks in this brief
     24   // interval, though technically speaking this might flake.
     25   EXPECT_EQ(DISCARDABLE_MEMORY_SUCCESS, memory.Lock());
     26   addr = memory.Memory();
     27   ASSERT_NE(static_cast<void*>(NULL), addr);
     28 
     29   memory.Unlock();
     30 }
     31 
     32 // Test delete a discardable memory while it is locked.
     33 TEST(DiscardableMemoryTest, DeleteWhileLocked) {
     34   ASSERT_TRUE(DiscardableMemory::Supported());
     35 
     36   const size_t size = 1024;
     37 
     38   DiscardableMemory memory;
     39   ASSERT_TRUE(memory.InitializeAndLock(size));
     40 }
     41 
     42 #if defined(OS_MACOSX)
     43 // Test forced purging.
     44 TEST(DiscardableMemoryTest, Purge) {
     45   ASSERT_TRUE(DiscardableMemory::Supported());
     46   ASSERT_TRUE(DiscardableMemory::PurgeForTestingSupported());
     47 
     48   const size_t size = 1024;
     49 
     50   DiscardableMemory memory;
     51   ASSERT_TRUE(memory.InitializeAndLock(size));
     52   memory.Unlock();
     53 
     54   DiscardableMemory::PurgeForTesting();
     55   EXPECT_EQ(DISCARDABLE_MEMORY_PURGED, memory.Lock());
     56 }
     57 #endif  // OS_MACOSX
     58 
     59 #endif  // OS_*
     60 
     61 }
     62