1bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com/* 2bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com * Copyright 2013 Google Inc. 3bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com * 4bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com * Use of this source code is governed by a BSD-style license that can be 5bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com * found in the LICENSE file. 6bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com */ 7bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com 8bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com#include "SkDiscardableMemory.h" 9bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com 10bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com#include "Test.h" 11bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com 12bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.comDEF_TEST(DiscardableMemory, reporter) { 13bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com const char testString[] = "HELLO, WORLD!"; 14bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com const size_t len = sizeof(testString); 15bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com SkAutoTDelete<SkDiscardableMemory> dm(SkDiscardableMemory::Create(len)); 16bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com REPORTER_ASSERT(reporter, dm.get() != NULL); 17bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com if (NULL == dm.get()) { 18bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com return; 19bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com } 20bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com void* ptr = dm->data(); 21bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com REPORTER_ASSERT(reporter, ptr != NULL); 22bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com memcpy(ptr, testString, sizeof(testString)); 23bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com dm->unlock(); 24bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com bool success = dm->lock(); 25bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com REPORTER_ASSERT(reporter, success); 26bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com if (!success) { 27bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com return; 28bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com } 29bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com ptr = dm->data(); 30bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com REPORTER_ASSERT(reporter, 0 == memcmp(ptr, testString, len)); 31bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com dm->unlock(); 32bc55eec80ef376208b3c1bfc65d8dc8b672d59f0halcanary@google.com} 33