summaryrefslogtreecommitdiff
path: root/llm/tokenbuffer_test.go
diff options
context:
space:
mode:
authorJonas Knobloch <jonas.knobloch@t-online.de>2026-04-02 23:02:09 +0200
committerJonas Knobloch <jonas.knobloch@t-online.de>2026-04-02 23:02:09 +0200
commitef2a19b58792dbd274a03f4696719652e56e4360 (patch)
tree377328730c21efeae440b35fe117d14cc292cd69 /llm/tokenbuffer_test.go
parentf4860bfa53004e6e18968f0650207d5317eebdeb (diff)
Track already seen tokens
Diffstat (limited to 'llm/tokenbuffer_test.go')
-rw-r--r--llm/tokenbuffer_test.go58
1 files changed, 56 insertions, 2 deletions
diff --git a/llm/tokenbuffer_test.go b/llm/tokenbuffer_test.go
index 860c5ab..b03f267 100644
--- a/llm/tokenbuffer_test.go
+++ b/llm/tokenbuffer_test.go
@@ -114,7 +114,7 @@ func TestTokenBuffer_Tail(t *testing.T) {
got = append(got, w)
}
- if tail := tb.Tail(); tail != nil {
+ if tail, _ := tb.Tail(); tail != nil {
got = append(got, tail)
}
@@ -131,6 +131,34 @@ func TestTokenBuffer_Tail(t *testing.T) {
}
}
+func TestTokenBuffer_Seen(t *testing.T) {
+ tb := NewTokenBuffer(byteTokenizer{}, 4, 2)
+
+ tb.SetIncludeTail(false)
+
+ var seen []int
+
+ for _, s := range tb.Push(0, "abcdefgh") {
+ seen = append(seen, s)
+ }
+
+ expected := []int{0, 2, 4}
+
+ if len(seen) != len(expected) {
+ t.Fatalf("expected %d seen values but got %d", len(expected), len(seen))
+ }
+
+ for i := range seen {
+ if seen[i] != expected[i] {
+ t.Errorf("window %d: expected seen=%d but got seen=%d", i, expected[i], seen[i])
+ }
+ }
+
+ if _, s := tb.Tail(); s != 6 {
+ t.Errorf("expected tail seen=6 but got %d", s)
+ }
+}
+
func TestTokenBuffer_DocumentBoundaryYieldsTail(t *testing.T) {
tb := NewTokenBuffer(byteTokenizer{}, 10, 10)
@@ -148,7 +176,7 @@ func TestTokenBuffer_DocumentBoundaryYieldsTail(t *testing.T) {
var b [][]int64
- for w := range tb.Push(2, "fghij") {
+ for w, _ := range tb.Push(2, "fghij") {
b = append(b, w)
}
@@ -162,3 +190,29 @@ func TestTokenBuffer_DocumentBoundaryYieldsTail(t *testing.T) {
t.Errorf("expected %v but got %v", expected, b[0])
}
}
+
+func TestTokenBuffer_TailSeen(t *testing.T) {
+ tb := NewTokenBuffer(byteTokenizer{}, 4, 2)
+
+ tb.SetIncludeTail(true)
+
+ var lastSeen int
+
+ for _, s := range tb.Push(0, "abcdefgh") {
+ lastSeen = s
+ }
+
+ if lastSeen != 4 {
+ t.Errorf("expected last seen=4 but got %d", lastSeen)
+ }
+
+ tail, tailSeen := tb.Tail()
+
+ if !slices.Equal(tail, toInt64(byteTokenizer{}.Tokenize("gh"))) {
+ t.Errorf("unexpected tail: %v", tail)
+ }
+
+ if tailSeen != 6 {
+ t.Errorf("expected tail seen=6 but got %d", tailSeen)
+ }
+}