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