1package logging
2
3import "testing"
4
5func TestBufferStoresLines(t *testing.T) {
6 buffer := NewBuffer(DefaultMaxEntries)
7
8 if _, err := buffer.Write([]byte("first\nsecond\n")); err != nil {
9 t.Fatalf("Write returned error: %v", err)
10 }
11
12 got := buffer.Tail(DefaultMaxEntries)
13 if len(got) != 2 {
14 t.Fatalf("Tail returned %d entries, want 2", len(got))
15 }
16 if got[0].Text != "first" || got[1].Text != "second" {
17 t.Fatalf("unexpected entries: %+v", got)
18 }
19}
20
21func TestBufferKeepsLastMaxEntries(t *testing.T) {
22 buffer := NewBuffer(DefaultMaxEntries)
23
24 for i := 0; i < DefaultMaxEntries+2; i++ {
25 if _, err := buffer.Write([]byte{byte('a' + i), '\n'}); err != nil {
26 t.Fatalf("Write returned error: %v", err)
27 }
28 }
29
30 got := buffer.Tail(DefaultMaxEntries)
31 if len(got) != DefaultMaxEntries {
32 t.Fatalf("Tail returned %d entries, want %d", len(got), DefaultMaxEntries)
33 }
34 if got[0].Text != "c" {
35 t.Fatalf("first retained entry = %q, want %q", got[0].Text, "c")
36 }
37}
38
39func TestBufferTailReturnsRequestedCount(t *testing.T) {
40 buffer := NewBuffer(DefaultMaxEntries)
41
42 for _, line := range []string{"first\n", "second\n", "third\n"} {
43 if _, err := buffer.Write([]byte(line)); err != nil {
44 t.Fatalf("Write returned error: %v", err)
45 }
46 }
47
48 got := buffer.Tail(2)
49 if len(got) != 2 {
50 t.Fatalf("Tail returned %d entries, want 2", len(got))
51 }
52 if got[0].Text != "second" || got[1].Text != "third" {
53 t.Fatalf("unexpected entries: %+v", got)
54 }
55}
56
57func TestBufferTailReturnsNilForNonPositiveCount(t *testing.T) {
58 buffer := NewBuffer(DefaultMaxEntries)
59
60 if _, err := buffer.Write([]byte("first\n")); err != nil {
61 t.Fatalf("Write returned error: %v", err)
62 }
63 if got := buffer.Tail(0); got != nil {
64 t.Fatalf("Tail(0) returned %+v, want nil", got)
65 }
66}
67
68func TestNewBufferUsesDefaultForInvalidMax(t *testing.T) {
69 buffer := NewBuffer(0)
70 if got := buffer.MaxEntries(); got != DefaultMaxEntries {
71 t.Fatalf("MaxEntries = %d, want %d", got, DefaultMaxEntries)
72 }
73}