45 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# Tests for SI prefix in Utils.py
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								from decimal import Decimal
							 | 
						||
| 
								 | 
							
								from Utils import format_SI_prefix
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestGenerateMain(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								    """This tests SI prefix formatting in Utils.py"""
							 | 
						||
| 
								 | 
							
								    def assertEqual(self, first, second, msg=None):
							 | 
						||
| 
								 | 
							
								        # we strip spaces everywhere because that is an undefined implementation detail
							 | 
						||
| 
								 | 
							
								        super().assertEqual(first.replace(" ", ""), second.replace(" ", ""), msg)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_rounding(self):
							 | 
						||
| 
								 | 
							
								        # we don't care if float(999.995) would fail due to error in precision
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(999.999), "1.00k")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(1000.001), "1.00k")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(Decimal("999.995")), "1.00k")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(Decimal("1000.004")), "1.00k")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_letters(self):
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(0e0), "0.00")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(1e3), "1.00k")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(2e6), "2.00M")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(3e9), "3.00G")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(4e12), "4.00T")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(5e15), "5.00P")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(6e18), "6.00E")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(7e21), "7.00Z")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(8e24), "8.00Y")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_multiple_letters(self):
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(9e27), "9.00kY")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_custom_power(self):
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(1023.99, 1024), "1023.99")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(1034.24, 1024), "1.01k")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_custom_labels(self):
							 | 
						||
| 
								 | 
							
								        labels = ("E", "da", "h", "k")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(1, 10, labels), "1.00E")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(10, 10, labels), "1.00da")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(100, 10, labels), "1.00h")
							 | 
						||
| 
								 | 
							
								        self.assertEqual(format_SI_prefix(1000, 10, labels), "1.00k")
							 |