| Gilad Arnold | 553b0ec | 2013-01-26 01:00:39 -0800 | [diff] [blame] | 1 | #!/usr/bin/python | 
|  | 2 | # | 
|  | 3 | # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. | 
|  | 4 | # Use of this source code is governed by a BSD-style license that can be | 
|  | 5 | # found in the LICENSE file. | 
|  | 6 |  | 
|  | 7 | """Unit tests for histogram.py.""" | 
|  | 8 |  | 
|  | 9 | import unittest | 
|  | 10 |  | 
|  | 11 | import format_utils | 
|  | 12 | import histogram | 
|  | 13 |  | 
|  | 14 |  | 
|  | 15 | class HistogramTest(unittest.TestCase): | 
|  | 16 |  | 
|  | 17 | @staticmethod | 
|  | 18 | def AddHumanReadableSize(size): | 
|  | 19 | fmt = format_utils.BytesToHumanReadable(size) | 
|  | 20 | return '%s (%s)' % (size, fmt) if fmt else str(size) | 
|  | 21 |  | 
|  | 22 | def CompareToExpectedDefault(self, actual_str): | 
|  | 23 | expected_str = ( | 
|  | 24 | 'Yes |################    | 5 (83.3%)\n' | 
|  | 25 | 'No  |###                 | 1 (16.6%)' | 
|  | 26 | ) | 
|  | 27 | self.assertEqual(actual_str, expected_str) | 
|  | 28 |  | 
|  | 29 | def testExampleHistogram(self): | 
|  | 30 | self.CompareToExpectedDefault(str(histogram.Histogram( | 
|  | 31 | [('Yes', 5), ('No', 1)]))) | 
|  | 32 |  | 
|  | 33 | def testFromCountDict(self): | 
|  | 34 | self.CompareToExpectedDefault(str(histogram.Histogram.FromCountDict( | 
|  | 35 | {'Yes': 5, 'No': 1}))) | 
|  | 36 |  | 
|  | 37 | def testFromKeyList(self): | 
|  | 38 | self.CompareToExpectedDefault(str(histogram.Histogram.FromKeyList( | 
|  | 39 | ['Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes']))) | 
|  | 40 |  | 
|  | 41 | def testCustomScale(self): | 
|  | 42 | expected_str = ( | 
|  | 43 | 'Yes |#### | 5 (83.3%)\n' | 
|  | 44 | 'No  |     | 1 (16.6%)' | 
|  | 45 | ) | 
|  | 46 | actual_str = str(histogram.Histogram([('Yes', 5), ('No', 1)], scale=5)) | 
|  | 47 | self.assertEqual(actual_str, expected_str) | 
|  | 48 |  | 
|  | 49 | def testCustomFormatter(self): | 
|  | 50 | expected_str = ( | 
|  | 51 | 'Yes |################    | 5000 (4.8 KiB) (83.3%)\n' | 
|  | 52 | 'No  |###                 | 1000 (16.6%)' | 
|  | 53 | ) | 
|  | 54 | actual_str = str(histogram.Histogram( | 
|  | 55 | [('Yes', 5000), ('No', 1000)], formatter=self.AddHumanReadableSize)) | 
|  | 56 | self.assertEqual(actual_str, expected_str) | 
|  | 57 |  | 
|  | 58 |  | 
|  | 59 | if __name__ == '__main__': | 
|  | 60 | unittest.main() |