Index: tools/memory_inspector/memory_inspector/classification/results_unittest.py |
diff --git a/tools/memory_inspector/memory_inspector/classification/results_unittest.py b/tools/memory_inspector/memory_inspector/classification/results_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f0af824d8ea6239a2b9f1711b4d1d85f8db79dde |
--- /dev/null |
+++ b/tools/memory_inspector/memory_inspector/classification/results_unittest.py |
@@ -0,0 +1,63 @@ |
+# Copyright 2014 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import re |
+import unittest |
+ |
+from memory_inspector.classification import results |
+from memory_inspector.classification import rules |
+ |
+ |
+class ResultsTest(unittest.TestCase): |
+ def runTest(self): |
+ rules_dict = [ |
+ { |
+ 'name': 'a*', |
+ 'regex': '^a.*', |
+ 'children': [ |
+ { |
+ 'name': 'az*', |
+ 'regex': '^az.*' |
+ } |
+ ] |
+ }, |
+ { |
+ 'name': 'b*', |
+ 'regex': '^b.*', |
+ }, |
+ ] |
+ |
+ rule = rules.Load(str(rules_dict), MockRegexMatchingRule) |
+ result = results.AggreatedResults(rule, keys=['X', 'Y']) |
+ self.assertEqual(result.total.name, 'Total') |
+ self.assertEqual(len(result.total.children), 3) |
+ self.assertEqual(result.total.children[0].name, 'a*') |
+ self.assertEqual(result.total.children[1].name, 'b*') |
+ self.assertEqual(result.total.children[2].name, 'Total-other') |
+ self.assertEqual(result.total.children[0].children[0].name, 'az*') |
+ self.assertEqual(result.total.children[0].children[1].name, 'a*-other') |
+ |
+ result.AddToMatchingNodes('aa1', [1, 2]) # -> a* |
+ result.AddToMatchingNodes('aa2', [3, 4]) # -> a* |
+ result.AddToMatchingNodes('az', [5, 6]) # -> a*/az* |
+ result.AddToMatchingNodes('z1', [7, 8]) # -> T-other |
+ result.AddToMatchingNodes('b1', [9, 10]) # -> b* |
+ result.AddToMatchingNodes('b2', [11, 12]) # -> b* |
+ result.AddToMatchingNodes('z2', [13, 14]) # -> T-other |
+ |
+ self.assertEqual(result.total.values, [49, 56]) |
+ self.assertEqual(result.total.children[0].values, [9, 12]) |
+ self.assertEqual(result.total.children[1].values, [20, 22]) |
+ self.assertEqual(result.total.children[0].children[0].values, [5, 6]) |
+ self.assertEqual(result.total.children[0].children[1].values, [4, 6]) |
+ self.assertEqual(result.total.children[2].values, [20, 22]) |
+ |
+ |
+class MockRegexMatchingRule(rules.Rule): |
+ def __init__(self, name, filters): |
+ super(MockRegexMatchingRule, self).__init__(name) |
+ self._regex = filters['regex'] |
+ |
+ def Match(self, s): |
+ return bool(re.match(self._regex, s)) |