From 7fd817f6d1ead3de85294c1893a6e1572a1d12e3 Mon Sep 17 00:00:00 2001 From: Keuin Date: Fri, 7 Jul 2023 00:34:55 +0800 Subject: Refactor: move file operations into single package. --- common/files/bytesize.go | 19 +++++++++++++++++++ common/files/bytesize_test.go | 24 ++++++++++++++++++++++++ common/files/filename.go | 7 +++++++ 3 files changed, 50 insertions(+) create mode 100644 common/files/bytesize.go create mode 100644 common/files/bytesize_test.go create mode 100644 common/files/filename.go (limited to 'common/files') 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) +} -- cgit v1.2.3