summaryrefslogtreecommitdiff
path: root/common/files
diff options
context:
space:
mode:
Diffstat (limited to 'common/files')
-rw-r--r--common/files/bytesize.go19
-rw-r--r--common/files/bytesize_test.go24
-rw-r--r--common/files/filename.go7
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)
+}