80 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package ring
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
func TestBuffer(t *testing.T) {
 | 
						|
	b := New(10)
 | 
						|
 | 
						|
	// test one value
 | 
						|
	b.Put("foo")
 | 
						|
	v := b.Get(1)
 | 
						|
 | 
						|
	if val := v[0].Value.(string); val != "foo" {
 | 
						|
		t.Fatalf("expected foo got %v", val)
 | 
						|
	}
 | 
						|
 | 
						|
	b = New(10)
 | 
						|
 | 
						|
	// test 10 values
 | 
						|
	for i := 0; i < 10; i++ {
 | 
						|
		b.Put(i)
 | 
						|
	}
 | 
						|
 | 
						|
	d := time.Now()
 | 
						|
	v = b.Get(10)
 | 
						|
 | 
						|
	for i := 0; i < 10; i++ {
 | 
						|
		val := v[i].Value.(int)
 | 
						|
 | 
						|
		if val != i {
 | 
						|
			t.Fatalf("expected %d got %d", i, val)
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// test more values
 | 
						|
 | 
						|
	for i := 0; i < 10; i++ {
 | 
						|
		v := i * 2
 | 
						|
		b.Put(v)
 | 
						|
	}
 | 
						|
 | 
						|
	v = b.Get(10)
 | 
						|
 | 
						|
	for i := 0; i < 10; i++ {
 | 
						|
		val := v[i].Value.(int)
 | 
						|
		expect := i * 2
 | 
						|
		if val != expect {
 | 
						|
			t.Fatalf("expected %d got %d", expect, val)
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// sleep 100 ms
 | 
						|
	time.Sleep(time.Millisecond * 100)
 | 
						|
 | 
						|
	// assume we'll get everything
 | 
						|
	v = b.Since(d)
 | 
						|
 | 
						|
	if len(v) != 10 {
 | 
						|
		t.Fatalf("expected 10 entries but got %d", len(v))
 | 
						|
	}
 | 
						|
 | 
						|
	// write 1 more entry
 | 
						|
	d = time.Now()
 | 
						|
	b.Put(100)
 | 
						|
 | 
						|
	// sleep 100 ms
 | 
						|
	time.Sleep(time.Millisecond * 100)
 | 
						|
 | 
						|
	v = b.Since(d)
 | 
						|
	if len(v) != 1 {
 | 
						|
		t.Fatalf("expected 1 entries but got %d", len(v))
 | 
						|
	}
 | 
						|
 | 
						|
	if v[0].Value.(int) != 100 {
 | 
						|
		t.Fatalf("expected value 100 got %v", v[0])
 | 
						|
	}
 | 
						|
}
 |