diff options
Diffstat (limited to 'common/files')
-rw-r--r-- | common/files/bytesize.go | 19 | ||||
-rw-r--r-- | common/files/bytesize_test.go | 24 | ||||
-rw-r--r-- | common/files/filename.go | 7 |
3 files changed, 50 insertions, 0 deletions
diff --git a/common/files/bytesize.go b/common/files/bytesize.go new file mode 100644 index 0000000..95f857a --- /dev/null +++ b/common/files/bytesize.go @@ -0,0 +1,19 @@ +package files + +import "fmt" + +func PrettyBytes(b uint64) string { + if b < 1000 { + return fmt.Sprintf("%d Byte", b) + } + if b < 1000_000 { + return fmt.Sprintf("%.2f KiB", float64(b)/1024) + } + if b < 1000_000_000 { + return fmt.Sprintf("%.2f MiB", float64(b)/1024/1024) + } + if b < 1000_000_000_000 { + return fmt.Sprintf("%.2f GiB", float64(b)/1024/1024/1024) + } + return fmt.Sprintf("%.2f TiB", float64(b)/1024/1024/1024/1024) +} diff --git a/common/files/bytesize_test.go b/common/files/bytesize_test.go new file mode 100644 index 0000000..970c242 --- /dev/null +++ b/common/files/bytesize_test.go @@ -0,0 +1,24 @@ +package files + +import ( + "testing" +) + +func TestPrettyBytes(t *testing.T) { + tests := []struct { + Expected string + Actual string + }{ + {"128 Byte", PrettyBytes(128)}, + {"128.00 KiB", PrettyBytes(128 * 1024)}, + {"128.00 MiB", PrettyBytes(128 * 1024 * 1024)}, + {"128.00 GiB", PrettyBytes(128 * 1024 * 1024 * 1024)}, + {"128.00 TiB", PrettyBytes(128 * 1024 * 1024 * 1024 * 1024)}, + {"131072.00 TiB", PrettyBytes(128 * 1024 * 1024 * 1024 * 1024 * 1024)}, + } + for i, tc := range tests { + if tc.Expected != tc.Actual { + t.Fatalf("Test %v failed: %v", i, tc) + } + } +} diff --git a/common/files/filename.go b/common/files/filename.go new file mode 100644 index 0000000..725563c --- /dev/null +++ b/common/files/filename.go @@ -0,0 +1,7 @@ +package files + +import "fmt" + +func CombineFileName(base string, ext string) string { + return fmt.Sprintf("%s.%s", base, ext) +} |