blob: 421ff20387488792beb7ffa26e9c7b9bc5265e8f [file] [log] [blame]
Gilad Arnold553b0ec2013-01-26 01:00:39 -08001#!/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
9import unittest
10
11import format_utils
12import histogram
13
14
15class 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
59if __name__ == '__main__':
60 unittest.main()