summaryrefslogtreecommitdiff
path: root/cmd/restic/cmd_stats_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/restic/cmd_stats_test.go')
-rw-r--r--cmd/restic/cmd_stats_test.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/cmd/restic/cmd_stats_test.go b/cmd/restic/cmd_stats_test.go
new file mode 100644
index 000000000..02d37acd9
--- /dev/null
+++ b/cmd/restic/cmd_stats_test.go
@@ -0,0 +1,62 @@
+package main
+
+import (
+ "testing"
+
+ rtest "github.com/restic/restic/internal/test"
+)
+
+func TestSizeHistogramNew(t *testing.T) {
+ h := newSizeHistogram(42)
+
+ exp := &sizeHistogram{
+ count: 0,
+ totalSize: 0,
+ buckets: []sizeClass{
+ {0, 0, 0},
+ {1, 9, 0},
+ {10, 42, 0},
+ },
+ }
+
+ rtest.Equals(t, exp, h)
+}
+
+func TestSizeHistogramAdd(t *testing.T) {
+ h := newSizeHistogram(42)
+ for i := uint64(0); i < 45; i++ {
+ h.Add(i)
+ }
+
+ exp := &sizeHistogram{
+ count: 45,
+ totalSize: 990,
+ buckets: []sizeClass{
+ {0, 0, 1},
+ {1, 9, 9},
+ {10, 42, 33},
+ },
+ oversized: []uint64{43, 44},
+ }
+
+ rtest.Equals(t, exp, h)
+}
+
+func TestSizeHistogramString(t *testing.T) {
+ t.Run("overflow", func(t *testing.T) {
+ h := newSizeHistogram(42)
+ h.Add(8)
+ h.Add(50)
+
+ rtest.Equals(t, "Count: 2\nTotal Size: 58 B\nSize Count\n-----------------\n1 - 9 Byte 1\n-----------------\nOversized: [50]\n", h.String())
+ })
+
+ t.Run("withZero", func(t *testing.T) {
+ h := newSizeHistogram(42)
+ h.Add(0)
+ h.Add(1)
+ h.Add(10)
+
+ rtest.Equals(t, "Count: 3\nTotal Size: 11 B\nSize Count\n-------------------\n 0 - 0 Byte 1\n 1 - 9 Byte 1\n10 - 42 Byte 1\n-------------------\n", h.String())
+ })
+}