@@ -789,12 +789,71 @@ bar
789789 block : # formatSize
790790 disableVm:
791791 when hasWorkingInt64:
792+ doAssert formatSize (1024 'i64 * 1024 * 1024 * 2 - 1 ) == " 1.999GiB"
793+ doAssert formatSize (1024 'i64 * 1024 * 1024 * 2 ) == " 2GiB"
792794 doAssert formatSize ((1 'i64 shl 31 ) + (300 'i64 shl 20 )) == " 2.293GiB" # <=== bug #8231
793- doAssert formatSize ((2.234 * 1024 * 1024 ).int ) == " 2.234MiB"
795+ doAssert formatSize (int64 .high) == " 7.999EiB"
796+ doAssert formatSize (int64 .high div 2 + 1 ) == " 4EiB"
797+ doAssert formatSize (int64 .high div 2 ) == " 3.999EiB"
798+ doAssert formatSize (int64 .high div 4 + 1 ) == " 2EiB"
799+ doAssert formatSize (int64 .high div 4 ) == " 1.999EiB"
800+ doAssert formatSize (int64 .high div 8 + 1 ) == " 1EiB"
801+ doAssert formatSize (int64 .high div 8 ) == " 1023.999PiB"
802+ doAssert formatSize (int64 .high div 16 + 1 ) == " 512PiB"
803+ doAssert formatSize (int64 .high div 16 ) == " 511.999PiB"
804+ doAssert formatSize (0 ) == " 0B"
805+ doAssert formatSize (0 , includeSpace = true ) == " 0 B"
806+ doAssert formatSize (1 ) == " 1B"
807+ doAssert formatSize (2 ) == " 2B"
808+ doAssert formatSize (1022 ) == " 1022B"
809+ doAssert formatSize (1023 ) == " 1023B"
810+ doAssert formatSize (1024 ) == " 1KiB"
811+ doAssert formatSize (1025 ) == " 1.001KiB"
812+ doAssert formatSize (1026 ) == " 1.002KiB"
813+ doAssert formatSize (1024 * 2 - 2 ) == " 1.998KiB"
814+ doAssert formatSize (1024 * 2 - 1 ) == " 1.999KiB"
815+ doAssert formatSize (1024 * 2 ) == " 2KiB"
816+ doAssert formatSize (1024 * 2 + 1 ) == " 2.001KiB"
817+ doAssert formatSize (1024 * 2 + 2 ) == " 2.002KiB"
818+ doAssert formatSize (4096 - 1 ) == " 3.999KiB"
794819 doAssert formatSize (4096 ) == " 4KiB"
820+ doAssert formatSize (4096 + 1 ) == " 4.001KiB"
821+ doAssert formatSize (1024 * 512 - 1 ) == " 511.999KiB"
822+ doAssert formatSize (1024 * 512 ) == " 512KiB"
823+ doAssert formatSize (1024 * 512 + 1 ) == " 512.001KiB"
824+ doAssert formatSize (1024 * 1024 - 2 ) == " 1023.998KiB"
825+ doAssert formatSize (1024 * 1024 - 1 ) == " 1023.999KiB"
826+ doAssert formatSize (1024 * 1024 ) == " 1MiB"
827+ doAssert formatSize (1024 * 1024 + 1 ) == " 1MiB"
828+ doAssert formatSize (1024 * 1024 + 1023 ) == " 1MiB"
829+ doAssert formatSize (1024 * 1024 + 1024 ) == " 1.001MiB"
830+ doAssert formatSize (1024 * 1024 + 1024 * 2 ) == " 1.002MiB"
831+ doAssert formatSize (1024 * 1024 * 2 - 1 ) == " 1.999MiB"
832+ doAssert formatSize (1024 * 1024 * 2 ) == " 2MiB"
833+ doAssert formatSize (1024 * 1024 * 2 + 1 ) == " 2MiB"
834+ doAssert formatSize (1024 * 1024 * 2 + 1024 ) == " 2.001MiB"
835+ doAssert formatSize (1024 * 1024 * 2 + 1024 * 2 ) == " 2.002MiB"
836+ doAssert formatSize (1024 * 1024 * 4 - 1 ) == " 3.999MiB"
837+ doAssert formatSize (1024 * 1024 * 4 ) == " 4MiB"
838+ doAssert formatSize (1024 * (1024 * 4 + 1 )) == " 4.001MiB"
839+ doAssert formatSize (1024 * 1024 * 512 - 1025 ) == " 511.998MiB"
840+ doAssert formatSize (1024 * 1024 * 512 - 1 ) == " 511.999MiB"
841+ doAssert formatSize (1024 * 1024 * 512 ) == " 512MiB"
842+ doAssert formatSize (1024 * 1024 * 512 + 1 ) == " 512MiB"
843+ doAssert formatSize (1024 * 1024 * 512 + 1024 ) == " 512.001MiB"
844+ doAssert formatSize (1024 * 1024 * 512 + 1024 * 2 ) == " 512.002MiB"
845+ doAssert formatSize (1024 * 1024 * 1024 - 1 ) == " 1023.999MiB"
846+ doAssert formatSize (1024 * 1024 * 1024 ) == " 1GiB"
847+ doAssert formatSize (1024 * 1024 * 1024 + 1 ) == " 1GiB"
848+ doAssert formatSize (1024 * 1024 * 1025 ) == " 1.001GiB"
849+ doAssert formatSize (1024 * 1024 * 1026 ) == " 1.002GiB"
850+ # != 2.234MiB as (2.234 * 1024 * 1024).int.float / (1024 * 1024) = 2.23399...
851+ # and formatSize round down the value
852+ doAssert formatSize ((2.234 * 1024 * 1024 ).int ) == " 2.233MiB"
795853 doAssert formatSize (4096 , prefix = bpColloquial, includeSpace = true ) == " 4 kB"
796854 doAssert formatSize (4096 , includeSpace = true ) == " 4 KiB"
797- doAssert formatSize (5_378_934 , prefix = bpColloquial, decimalSep = ',' ) == " 5,13MB"
855+ # (5378934).float / (1024 * 1024) = 5.12975...
856+ doAssert formatSize (5_378_934 , prefix = bpColloquial, decimalSep = ',' ) == " 5,129MB"
798857
799858 block : # formatEng
800859 disableVm:
0 commit comments