Home | History | Annotate | Download | only in update_payload
      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 
      9 import unittest
     10 
     11 from update_payload import format_utils
     12 
     13 
     14 class 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 
     46 class 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 
     77 if __name__ == '__main__':
     78   unittest.main()
     79