summaryrefslogtreecommitdiff
path: root/src/pkg/container/ring/ring_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/container/ring/ring_test.go')
-rw-r--r--src/pkg/container/ring/ring_test.go228
1 files changed, 0 insertions, 228 deletions
diff --git a/src/pkg/container/ring/ring_test.go b/src/pkg/container/ring/ring_test.go
deleted file mode 100644
index 552f0e24b..000000000
--- a/src/pkg/container/ring/ring_test.go
+++ /dev/null
@@ -1,228 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ring
-
-import (
- "fmt"
- "testing"
-)
-
-// For debugging - keep around.
-func dump(r *Ring) {
- if r == nil {
- fmt.Println("empty")
- return
- }
- i, n := 0, r.Len()
- for p := r; i < n; p = p.next {
- fmt.Printf("%4d: %p = {<- %p | %p ->}\n", i, p, p.prev, p.next)
- i++
- }
- fmt.Println()
-}
-
-func verify(t *testing.T, r *Ring, N int, sum int) {
- // Len
- n := r.Len()
- if n != N {
- t.Errorf("r.Len() == %d; expected %d", n, N)
- }
-
- // iteration
- n = 0
- s := 0
- r.Do(func(p interface{}) {
- n++
- if p != nil {
- s += p.(int)
- }
- })
- if n != N {
- t.Errorf("number of forward iterations == %d; expected %d", n, N)
- }
- if sum >= 0 && s != sum {
- t.Errorf("forward ring sum = %d; expected %d", s, sum)
- }
-
- if r == nil {
- return
- }
-
- // connections
- if r.next != nil {
- var p *Ring // previous element
- for q := r; p == nil || q != r; q = q.next {
- if p != nil && p != q.prev {
- t.Errorf("prev = %p, expected q.prev = %p\n", p, q.prev)
- }
- p = q
- }
- if p != r.prev {
- t.Errorf("prev = %p, expected r.prev = %p\n", p, r.prev)
- }
- }
-
- // Next, Prev
- if r.Next() != r.next {
- t.Errorf("r.Next() != r.next")
- }
- if r.Prev() != r.prev {
- t.Errorf("r.Prev() != r.prev")
- }
-
- // Move
- if r.Move(0) != r {
- t.Errorf("r.Move(0) != r")
- }
- if r.Move(N) != r {
- t.Errorf("r.Move(%d) != r", N)
- }
- if r.Move(-N) != r {
- t.Errorf("r.Move(%d) != r", -N)
- }
- for i := 0; i < 10; i++ {
- ni := N + i
- mi := ni % N
- if r.Move(ni) != r.Move(mi) {
- t.Errorf("r.Move(%d) != r.Move(%d)", ni, mi)
- }
- if r.Move(-ni) != r.Move(-mi) {
- t.Errorf("r.Move(%d) != r.Move(%d)", -ni, -mi)
- }
- }
-}
-
-func TestCornerCases(t *testing.T) {
- var (
- r0 *Ring
- r1 Ring
- )
- // Basics
- verify(t, r0, 0, 0)
- verify(t, &r1, 1, 0)
- // Insert
- r1.Link(r0)
- verify(t, r0, 0, 0)
- verify(t, &r1, 1, 0)
- // Insert
- r1.Link(r0)
- verify(t, r0, 0, 0)
- verify(t, &r1, 1, 0)
- // Unlink
- r1.Unlink(0)
- verify(t, &r1, 1, 0)
-}
-
-func makeN(n int) *Ring {
- r := New(n)
- for i := 1; i <= n; i++ {
- r.Value = i
- r = r.Next()
- }
- return r
-}
-
-func sumN(n int) int { return (n*n + n) / 2 }
-
-func TestNew(t *testing.T) {
- for i := 0; i < 10; i++ {
- r := New(i)
- verify(t, r, i, -1)
- }
- for i := 0; i < 10; i++ {
- r := makeN(i)
- verify(t, r, i, sumN(i))
- }
-}
-
-func TestLink1(t *testing.T) {
- r1a := makeN(1)
- var r1b Ring
- r2a := r1a.Link(&r1b)
- verify(t, r2a, 2, 1)
- if r2a != r1a {
- t.Errorf("a) 2-element link failed")
- }
-
- r2b := r2a.Link(r2a.Next())
- verify(t, r2b, 2, 1)
- if r2b != r2a.Next() {
- t.Errorf("b) 2-element link failed")
- }
-
- r1c := r2b.Link(r2b)
- verify(t, r1c, 1, 1)
- verify(t, r2b, 1, 0)
-}
-
-func TestLink2(t *testing.T) {
- var r0 *Ring
- r1a := &Ring{Value: 42}
- r1b := &Ring{Value: 77}
- r10 := makeN(10)
-
- r1a.Link(r0)
- verify(t, r1a, 1, 42)
-
- r1a.Link(r1b)
- verify(t, r1a, 2, 42+77)
-
- r10.Link(r0)
- verify(t, r10, 10, sumN(10))
-
- r10.Link(r1a)
- verify(t, r10, 12, sumN(10)+42+77)
-}
-
-func TestLink3(t *testing.T) {
- var r Ring
- n := 1
- for i := 1; i < 100; i++ {
- n += i
- verify(t, r.Link(New(i)), n, -1)
- }
-}
-
-func TestUnlink(t *testing.T) {
- r10 := makeN(10)
- s10 := r10.Move(6)
-
- sum10 := sumN(10)
-
- verify(t, r10, 10, sum10)
- verify(t, s10, 10, sum10)
-
- r0 := r10.Unlink(0)
- verify(t, r0, 0, 0)
-
- r1 := r10.Unlink(1)
- verify(t, r1, 1, 2)
- verify(t, r10, 9, sum10-2)
-
- r9 := r10.Unlink(9)
- verify(t, r9, 9, sum10-2)
- verify(t, r10, 9, sum10-2)
-}
-
-func TestLinkUnlink(t *testing.T) {
- for i := 1; i < 4; i++ {
- ri := New(i)
- for j := 0; j < i; j++ {
- rj := ri.Unlink(j)
- verify(t, rj, j, -1)
- verify(t, ri, i-j, -1)
- ri.Link(rj)
- verify(t, ri, i, -1)
- }
- }
-}
-
-// Test that calling Move() on an empty Ring initializes it.
-func TestMoveEmptyRing(t *testing.T) {
- var r Ring
-
- r.Move(1)
- verify(t, &r, 1, 0)
-}