1b05a65a748bd2e2542e7b05f629d3bc69c8d8135Amin Hassani#!/usr/bin/python2 2553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold# 3553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 4553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold# Use of this source code is governed by a BSD-style license that can be 5553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold# found in the LICENSE file. 6553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 7553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold"""Unit tests for histogram.py.""" 8553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 9553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnoldimport unittest 10553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 11b05a65a748bd2e2542e7b05f629d3bc69c8d8135Amin Hassanifrom update_payload import format_utils 12b05a65a748bd2e2542e7b05f629d3bc69c8d8135Amin Hassanifrom update_payload import histogram 13553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 14553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 15553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnoldclass HistogramTest(unittest.TestCase): 16b05a65a748bd2e2542e7b05f629d3bc69c8d8135Amin Hassani """ Tests histogram""" 17553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 18553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold @staticmethod 19553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold def AddHumanReadableSize(size): 20553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold fmt = format_utils.BytesToHumanReadable(size) 21553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold return '%s (%s)' % (size, fmt) if fmt else str(size) 22553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 23553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold def CompareToExpectedDefault(self, actual_str): 24553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold expected_str = ( 25553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 'Yes |################ | 5 (83.3%)\n' 26553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 'No |### | 1 (16.6%)' 27553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold ) 28553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold self.assertEqual(actual_str, expected_str) 29553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 30553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold def testExampleHistogram(self): 31553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold self.CompareToExpectedDefault(str(histogram.Histogram( 32553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold [('Yes', 5), ('No', 1)]))) 33553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 34553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold def testFromCountDict(self): 35553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold self.CompareToExpectedDefault(str(histogram.Histogram.FromCountDict( 36553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold {'Yes': 5, 'No': 1}))) 37553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 38553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold def testFromKeyList(self): 39553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold self.CompareToExpectedDefault(str(histogram.Histogram.FromKeyList( 40553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold ['Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes']))) 41553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 42553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold def testCustomScale(self): 43553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold expected_str = ( 44553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 'Yes |#### | 5 (83.3%)\n' 45553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 'No | | 1 (16.6%)' 46553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold ) 47553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold actual_str = str(histogram.Histogram([('Yes', 5), ('No', 1)], scale=5)) 48553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold self.assertEqual(actual_str, expected_str) 49553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 50553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold def testCustomFormatter(self): 51553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold expected_str = ( 52553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 'Yes |################ | 5000 (4.8 KiB) (83.3%)\n' 53553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 'No |### | 1000 (16.6%)' 54553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold ) 55553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold actual_str = str(histogram.Histogram( 56553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold [('Yes', 5000), ('No', 1000)], formatter=self.AddHumanReadableSize)) 57553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold self.assertEqual(actual_str, expected_str) 58553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 59553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold 60553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnoldif __name__ == '__main__': 61553b0ec49bc64fc4b7df4358cd31396a87276d2bGilad Arnold unittest.main() 62