| 
														
															@@ -446,29 +446,30 @@ This archive:                   20 B                 10 B                 10 B"" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def test_file_size(): 
														 | 
														
														 | 
														
															 def test_file_size(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     """test the size formatting routines""" 
														 | 
														
														 | 
														
															     """test the size formatting routines""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    si_size_map = { 0: '0 B', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    si_size_map = { 0: '0 B',  # no rounding necessary for those 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     1: '1 B', 
														 | 
														
														 | 
														
															                     1: '1 B', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     142: '142 B', 
														 | 
														
														 | 
														
															                     142: '142 B', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     999: '999 B', 
														 | 
														
														 | 
														
															                     999: '999 B', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    1000: '1.00 kB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    1001: '1.00 kB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    1234: '1.23 kB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**6: '1.00 MB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**6 + 10*10**3: '1.01 MB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**9: '1.00 GB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**9+1: '1.00 GB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**9-1: '1.00 GB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**9-10*10**3: '999.99 MB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**9-10*10**3+5*10**3: '1.00 GB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**12+1: '1.00 TB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**15+1: '1.00 PB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**18+1: '1.00 EB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**21+1: '1.00 ZB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    10**24+1: '1.00 YB', 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    1000: '1.00 kB', # rounding starts here 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    1001: '1.00 kB', # should be rounded away 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    1234: '1.23 kB', # should be rounded down 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    1235: '1.24 kB', # should be rounded up 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    1010: '1.01 kB', # rounded down as well 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    999990000: '999.99 MB', # rounded down 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    999990001: '999.99 MB', # rounded down 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    999995000: '1.00 GB', # rounded up to next unit 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    10**6: '1.00 MB', # and all the remaining units, megabytes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    10**9: '1.00 GB', # gigabytes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    10**12: '1.00 TB', # terabytes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    10**15: '1.00 PB', # petabytes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    10**18: '1.00 EB', # exabytes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    10**21: '1.00 ZB', # zottabytes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    10**24: '1.00 YB', # yottabytes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 } 
														 | 
														
														 | 
														
															                 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     for size, fmt in si_size_map.items(): 
														 | 
														
														 | 
														
															     for size, fmt in si_size_map.items(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assert format_file_size(size) == fmt 
														 | 
														
														 | 
														
															         assert format_file_size(size) == fmt 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def test_file_size_precision(): 
														 | 
														
														 | 
														
															 def test_file_size_precision(): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    assert format_file_size(1254, precision=1) == '1.3 kB' 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    assert format_file_size(1234, precision=1) == '1.2 kB' # rounded down 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    assert format_file_size(1254, precision=1) == '1.3 kB' # rounded up 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     assert format_file_size(999990000, precision=1) == '1.0 GB' # and not 999.9 MB or 1000.0 MB 
														 | 
														
														 | 
														
															     assert format_file_size(999990000, precision=1) == '1.0 GB' # and not 999.9 MB or 1000.0 MB 
														 |