| 218 | } |
| 219 | |
| 220 | func TestRingComplex(t *testing.T) { |
| 221 | ringSize := 10 |
| 222 | data := []byte("hello!") |
| 223 | ring := NewRing(New(int64(ringSize))) |
| 224 | buf := make([]byte, ringSize) |
| 225 | |
| 226 | for i := 0; i < 10; i++ { |
| 227 | ring.Write(data) |
| 228 | n, err := ring.Read(buf) |
| 229 | if err != nil { |
| 230 | t.Errorf("unexpected error %s", err) |
| 231 | } else if !bytes.Equal(buf[:n], data) { |
| 232 | t.Errorf("expected %s got %s", data, buf[:n]) |
| 233 | } |
| 234 | } |
| 235 | |
| 236 | // we are going to overflow the buffer here, we expect the last 10 bytes to remain |
| 237 | repData := bytes.Repeat(data, 3) |
| 238 | leftover := repData[len(repData)-ringSize:] |
| 239 | for i := 0; i < 10; i++ { |
| 240 | ring.Write(repData) |
| 241 | n, err := ring.Read(buf) |
| 242 | if err != nil { |
| 243 | t.Errorf("unexpected error %s", err) |
| 244 | } else if !bytes.Equal(buf[:n], leftover) { |
| 245 | t.Errorf("expected %s got %s", leftover, buf[:n]) |
| 246 | } |
| 247 | } |
| 248 | } |
| 249 | |
| 250 | func TestRing(t *testing.T) { |
| 251 | ring := NewRing(New(3)) |