15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/tests/test_memory.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/dev/ppb_memory_dev.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/instance.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/module.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/tests/testing_instance.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)size_t kTestBufferSize = 1000; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REGISTER_TEST_CASE(Memory); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestMemory::Init() { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memory_dev_interface_ = static_cast<const PPB_Memory_Dev*>( 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pp::Module::Get()->GetBrowserInterface(PPB_MEMORY_DEV_INTERFACE)); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return memory_dev_interface_ && CheckTestingInterface(); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestMemory::RunTests(const std::string& filter) { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RUN_TEST(MemAlloc, filter); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RUN_TEST(NullMemFree, filter); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string TestMemory::TestMemAlloc() { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char* buffer = static_cast<char*>( 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memory_dev_interface_->MemAlloc(kTestBufferSize)); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Touch a couple of locations. Failure will crash the test. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) buffer[0] = '1'; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) buffer[kTestBufferSize - 1] = '1'; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memory_dev_interface_->MemFree(buffer); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PASS(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string TestMemory::TestNullMemFree() { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Failure crashes the test. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) memory_dev_interface_->MemFree(NULL); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PASS(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49