results_unittest.py revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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 5import re 6import unittest 7 8from memory_inspector.classification import results 9from memory_inspector.classification import rules 10 11 12class ResultsTest(unittest.TestCase): 13 def runTest(self): 14 rules_dict = [ 15 { 16 'name': 'a*', 17 'regex': '^a.*', 18 'children': [ 19 { 20 'name': 'az*', 21 'regex': '^az.*' 22 } 23 ] 24 }, 25 { 26 'name': 'b*', 27 'regex': '^b.*', 28 }, 29 ] 30 31 rule = rules.Load(str(rules_dict), MockRegexMatchingRule) 32 result = results.AggreatedResults(rule, keys=['X', 'Y']) 33 self.assertEqual(result.total.name, 'Total') 34 self.assertEqual(len(result.total.children), 3) 35 self.assertEqual(result.total.children[0].name, 'a*') 36 self.assertEqual(result.total.children[1].name, 'b*') 37 self.assertEqual(result.total.children[2].name, 'Total-other') 38 self.assertEqual(result.total.children[0].children[0].name, 'az*') 39 self.assertEqual(result.total.children[0].children[1].name, 'a*-other') 40 41 result.AddToMatchingNodes('aa1', [1, 2]) # -> a* 42 result.AddToMatchingNodes('aa2', [3, 4]) # -> a* 43 result.AddToMatchingNodes('az', [5, 6]) # -> a*/az* 44 result.AddToMatchingNodes('z1', [7, 8]) # -> T-other 45 result.AddToMatchingNodes('b1', [9, 10]) # -> b* 46 result.AddToMatchingNodes('b2', [11, 12]) # -> b* 47 result.AddToMatchingNodes('z2', [13, 14]) # -> T-other 48 49 self.assertEqual(result.total.values, [49, 56]) 50 self.assertEqual(result.total.children[0].values, [9, 12]) 51 self.assertEqual(result.total.children[1].values, [20, 22]) 52 self.assertEqual(result.total.children[0].children[0].values, [5, 6]) 53 self.assertEqual(result.total.children[0].children[1].values, [4, 6]) 54 self.assertEqual(result.total.children[2].values, [20, 22]) 55 56 57class MockRegexMatchingRule(rules.Rule): 58 def __init__(self, name, filters): 59 super(MockRegexMatchingRule, self).__init__(name) 60 self._regex = filters['regex'] 61 62 def Match(self, s): 63 return bool(re.match(self._regex, s))