Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / tools / memory_inspector / memory_inspector / core / backends_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 backends
8
9
10 class MockDevice(backends.Device):  # pylint: disable=W0223
11   def __init__(self, backend, device_id):
12     super(MockDevice, self).__init__(backend)
13     self.device_id = device_id
14
15   @property
16   def name(self):
17     return "Mock Device %s" % self.device_id
18
19   @property
20   def id(self):
21     return self.device_id
22
23
24 class MockBackend(backends.Backend):
25   _SETTINGS = {'key_1': 'key descritpion 1'}
26
27   def __init__(self, backend_name):
28     super(MockBackend, self).__init__(MockBackend._SETTINGS)
29     self.backend_name = backend_name
30
31   def EnumerateDevices(self):
32     yield MockDevice(self, 'device-1')
33     yield MockDevice(self, 'device-2')
34
35   def ExtractSymbols(self, native_heaps, sym_paths):
36     raise NotImplementedError()
37
38   @property
39   def name(self):
40     return self.backend_name
41
42
43 class BackendRegisterTest(unittest.TestCase):
44   def runTest(self):
45     mock_backend_1 = MockBackend('mock-backend-1')
46     mock_backend_2 = MockBackend('mock-backend-2')
47     self.assertEqual(mock_backend_1.settings['key_1'], 'key descritpion 1')
48     backends.Register(mock_backend_1)
49     backends.Register(mock_backend_2)
50     devices = list(backends.ListDevices())
51     self.assertEqual(len(devices), 4)
52     self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-1'))
53     self.assertIsNotNone(backends.GetDevice('mock-backend-1', 'device-2'))
54     self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
55     self.assertIsNotNone(backends.GetDevice('mock-backend-2', 'device-1'))
56     self.assertTrue('key_1' in mock_backend_1.settings)