1#!/usr/bin/python2 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 format_utils.py.""" 8 9import unittest 10 11from update_payload import format_utils 12 13 14class NumToPercentTest(unittest.TestCase): 15 """ Tests number conversion to percentage format.""" 16 def testHundredPercent(self): 17 self.assertEqual(format_utils.NumToPercent(1, 1), '100%') 18 19 def testOverHundredPercent(self): 20 self.assertEqual(format_utils.NumToPercent(5, 2), '250%') 21 22 def testWholePercent(self): 23 self.assertEqual(format_utils.NumToPercent(3, 10), '30%') 24 25 def testDefaultMinPrecision(self): 26 self.assertEqual(format_utils.NumToPercent(3, 9), '33.3%') 27 self.assertEqual(format_utils.NumToPercent(3, 900), '0.3%') 28 29 def testDefaultMaxPrecision(self): 30 self.assertEqual(format_utils.NumToPercent(3, 9000000), '0.00003%') 31 self.assertEqual(format_utils.NumToPercent(3, 90000000), '0%') 32 33 def testCustomMinPrecision(self): 34 self.assertEqual(format_utils.NumToPercent(3, 9, min_precision=3), 35 '33.333%') 36 self.assertEqual(format_utils.NumToPercent(3, 9, min_precision=0), 37 '33%') 38 39 def testCustomMaxPrecision(self): 40 self.assertEqual(format_utils.NumToPercent(3, 900, max_precision=1), 41 '0.3%') 42 self.assertEqual(format_utils.NumToPercent(3, 9000, max_precision=1), 43 '0%') 44 45 46class BytesToHumanReadableTest(unittest.TestCase): 47 """ Tests number conversion to human readable format.""" 48 def testBaseTwo(self): 49 self.assertEqual(format_utils.BytesToHumanReadable(0x1000), '4 KiB') 50 self.assertEqual(format_utils.BytesToHumanReadable(0x400000), '4 MiB') 51 self.assertEqual(format_utils.BytesToHumanReadable(0x100000000), '4 GiB') 52 self.assertEqual(format_utils.BytesToHumanReadable(0x40000000000), '4 TiB') 53 54 def testDecimal(self): 55 self.assertEqual(format_utils.BytesToHumanReadable(5000, decimal=True), 56 '5 kB') 57 self.assertEqual(format_utils.BytesToHumanReadable(5000000, decimal=True), 58 '5 MB') 59 self.assertEqual(format_utils.BytesToHumanReadable(5000000000, 60 decimal=True), 61 '5 GB') 62 63 def testDefaultPrecision(self): 64 self.assertEqual(format_utils.BytesToHumanReadable(5000), '4.8 KiB') 65 self.assertEqual(format_utils.BytesToHumanReadable(500000), '488.2 KiB') 66 self.assertEqual(format_utils.BytesToHumanReadable(5000000), '4.7 MiB') 67 68 def testCustomPrecision(self): 69 self.assertEqual(format_utils.BytesToHumanReadable(5000, precision=3), 70 '4.882 KiB') 71 self.assertEqual(format_utils.BytesToHumanReadable(500000, precision=0), 72 '488 KiB') 73 self.assertEqual(format_utils.BytesToHumanReadable(5000000, precision=5), 74 '4.76837 MiB') 75 76 77if __name__ == '__main__': 78 unittest.main() 79