summaryrefslogtreecommitdiff
path: root/src/slices/slices_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/slices/slices_test.go')
-rw-r--r--src/slices/slices_test.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/slices/slices_test.go b/src/slices/slices_test.go
index c13a67c2d4..2f3a03bd9f 100644
--- a/src/slices/slices_test.go
+++ b/src/slices/slices_test.go
@@ -781,3 +781,39 @@ func TestRotate(t *testing.T) {
}
}
}
+
+func TestInsertGrowthRate(t *testing.T) {
+ b := make([]byte, 1)
+ maxCap := cap(b)
+ nGrow := 0
+ const N = 1e6
+ for i := 0; i < N; i++ {
+ b = Insert(b, len(b)-1, 0)
+ if cap(b) > maxCap {
+ maxCap = cap(b)
+ nGrow++
+ }
+ }
+ want := int(math.Log(N) / math.Log(1.25)) // 1.25 == growth rate for large slices
+ if nGrow > want {
+ t.Errorf("too many grows. got:%d want:%d", nGrow, want)
+ }
+}
+
+func TestReplaceGrowthRate(t *testing.T) {
+ b := make([]byte, 2)
+ maxCap := cap(b)
+ nGrow := 0
+ const N = 1e6
+ for i := 0; i < N; i++ {
+ b = Replace(b, len(b)-2, len(b)-1, 0, 0)
+ if cap(b) > maxCap {
+ maxCap = cap(b)
+ nGrow++
+ }
+ }
+ want := int(math.Log(N) / math.Log(1.25)) // 1.25 == growth rate for large slices
+ if nGrow > want {
+ t.Errorf("too many grows. got:%d want:%d", nGrow, want)
+ }
+}