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 "crazy_linker_ashmem.h"
6
7 #include <sys/mman.h>
8
9 #include <minitest/minitest.h>
10
11 namespace crazy {
12
TEST(AshmemRegion,Construction)13 TEST(AshmemRegion, Construction) {
14 AshmemRegion region;
15 EXPECT_EQ(-1, region.fd());
16 }
17
TEST(AshmemRegion,Allocate)18 TEST(AshmemRegion, Allocate) {
19 AshmemRegion region;
20 const size_t kSize = 4096 * 10;
21 EXPECT_TRUE(region.Allocate(kSize, __FUNCTION__));
22 void* map = ::mmap(NULL,
23 kSize,
24 PROT_READ | PROT_WRITE,
25 MAP_ANONYMOUS | MAP_SHARED,
26 region.fd(),
27 0);
28 EXPECT_NE(MAP_FAILED, map);
29
30 for (size_t n = 0; n < kSize; ++n) {
31 TEST_TEXT << "Checking region[" << n << "]";
32 EXPECT_EQ(0, ((char*)map)[n]);
33 }
34
35 EXPECT_EQ(0, ::munmap(map, kSize));
36 }
37
38 } // namespace crazy
39