(t *testing.T)
| 27 | ) |
| 28 | |
| 29 | func TestLinkBuffer(t *testing.T) { |
| 30 | // clean & new |
| 31 | LinkBufferCap = 128 |
| 32 | |
| 33 | buf := NewLinkBuffer() |
| 34 | Equal(t, buf.Len(), 0) |
| 35 | MustTrue(t, buf.IsEmpty()) |
| 36 | |
| 37 | head := buf.head |
| 38 | |
| 39 | p, err := buf.Next(10) |
| 40 | Equal(t, len(p), 0) |
| 41 | MustTrue(t, err != nil) |
| 42 | |
| 43 | buf.Malloc(128) |
| 44 | MustTrue(t, buf.IsEmpty()) |
| 45 | |
| 46 | p, err = buf.Peek(10) |
| 47 | Equal(t, len(p), 0) |
| 48 | MustTrue(t, err != nil) |
| 49 | |
| 50 | buf.Flush() |
| 51 | Equal(t, buf.Len(), 128) |
| 52 | MustTrue(t, !buf.IsEmpty()) |
| 53 | |
| 54 | p, err = buf.Next(28) |
| 55 | Equal(t, len(p), 28) |
| 56 | Equal(t, buf.Len(), 100) |
| 57 | MustNil(t, err) |
| 58 | MustTrue(t, buf.read.readExposed()) // single-node Next exposes buffer |
| 59 | |
| 60 | p, err = buf.Peek(90) |
| 61 | Equal(t, len(p), 90) |
| 62 | Equal(t, buf.Len(), 100) |
| 63 | MustNil(t, err) |
| 64 | MustTrue(t, buf.read.readExposed()) // single-node Peek exposes buffer |
| 65 | |
| 66 | read := buf.read |
| 67 | Equal(t, buf.head, head) |
| 68 | err = buf.Release() |
| 69 | MustNil(t, err) |
| 70 | Equal(t, buf.head, read) |
| 71 | |
| 72 | inputs := buf.book(block1k, block8k) |
| 73 | Equal(t, len(inputs), block1k) |
| 74 | Equal(t, buf.Len(), 100) |
| 75 | |
| 76 | buf.MallocAck(block1k) |
| 77 | Equal(t, buf.Len(), 100) |
| 78 | Equal(t, buf.MallocLen(), block1k) |
| 79 | buf.Flush() |
| 80 | Equal(t, buf.Len(), 100+block1k) |
| 81 | Equal(t, buf.MallocLen(), 0) |
| 82 | |
| 83 | outputs := buf.GetBytes(make([][]byte, 16)) |
| 84 | Equal(t, len(outputs), 2) |
| 85 | |
| 86 | err = buf.Skip(block1k) |
nothing calls this directly
no test coverage detected
searching dependent graphs…