Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / tools / memory_inspector / memory_inspector / core / memory_map_unittest.py
1 # Copyright 2014 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 import unittest
6
7 from memory_inspector.core import memory_map
8
9
10 class MemoryMapTest(unittest.TestCase):
11   def runTest(self):
12     mmap = memory_map.Map()
13     map_entry1 = memory_map.MapEntry(4096, 8191, 'rw--', '/foo', 0)
14     map_entry2 = memory_map.MapEntry(65536, 81919, 'rw--', '/bar', 4096)
15
16     # Test the de-offset logic.
17     self.assertEqual(map_entry1.GetRelativeOffset(4096), 0)
18     self.assertEqual(map_entry1.GetRelativeOffset(4100), 4)
19     self.assertEqual(map_entry2.GetRelativeOffset(65536), 4096)
20
21     # Test the page-resident logic.
22     map_entry2.resident_pages = [5] # 5 -> 101b.
23     self.assertTrue(map_entry2.IsPageResident(0))
24     self.assertFalse(map_entry2.IsPageResident(1))
25     self.assertTrue(map_entry2.IsPageResident(2))
26
27     # Test the lookup logic.
28     mmap.Add(map_entry1)
29     mmap.Add(map_entry2)
30     self.assertIsNone(mmap.Lookup(1024))
31     self.assertEqual(mmap.Lookup(4096), map_entry1)
32     self.assertEqual(mmap.Lookup(6000), map_entry1)
33     self.assertEqual(mmap.Lookup(8191), map_entry1)
34     self.assertIsNone(mmap.Lookup(8192))
35     self.assertIsNone(mmap.Lookup(65535))
36     self.assertEqual(mmap.Lookup(65536), map_entry2)
37     self.assertEqual(mmap.Lookup(67000), map_entry2)
38     self.assertEqual(mmap.Lookup(81919), map_entry2)
39     self.assertIsNone(mmap.Lookup(81920))