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