mirror of
https://github.com/go-micro/go-micro.git
synced 2024-11-30 08:06:40 +02:00
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])
|
|
}
|
|
}
|