chore: update test
This commit is contained in:
parent
c241764b7d
commit
1827dc08a5
1 changed files with 52 additions and 5 deletions
|
|
@ -22,7 +22,6 @@ func TestBuildMessages_CoalescesConsecutiveUserMessages(t *testing.T) {
|
||||||
cb := NewContextBuilder(ws)
|
cb := NewContextBuilder(ws)
|
||||||
|
|
||||||
history := []providers.Message{
|
history := []providers.Message{
|
||||||
{Role: "system", Content: "sys"},
|
|
||||||
{Role: "assistant", Content: "hi"},
|
{Role: "assistant", Content: "hi"},
|
||||||
{Role: "user", Content: "first"},
|
{Role: "user", Content: "first"},
|
||||||
}
|
}
|
||||||
|
|
@ -31,16 +30,28 @@ func TestBuildMessages_CoalescesConsecutiveUserMessages(t *testing.T) {
|
||||||
if len(msgs) < 2 {
|
if len(msgs) < 2 {
|
||||||
t.Fatalf("expected at least 2 messages, got %d", len(msgs))
|
t.Fatalf("expected at least 2 messages, got %d", len(msgs))
|
||||||
}
|
}
|
||||||
|
// BuildMessages should inject a single fresh system message at the start
|
||||||
if msgs[0].Role != "system" {
|
if msgs[0].Role != "system" {
|
||||||
t.Fatalf("expected first message to be system, got %s", msgs[0].Role)
|
t.Fatalf("expected first message to be system, got %s", msgs[0].Role)
|
||||||
}
|
}
|
||||||
// ensure no consecutive user messages and last is a single coalesced user
|
for i := 1; i < len(msgs); i++ {
|
||||||
|
if msgs[i].Role == "system" {
|
||||||
|
t.Fatalf("unexpected system message at index %d; history should not include system messages", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ensure no two consecutive messages are from user anywhere in the list
|
||||||
|
for i := 1; i < len(msgs); i++ {
|
||||||
|
if msgs[i-1].Role == "user" && msgs[i].Role == "user" {
|
||||||
|
t.Fatalf("found consecutive user messages at indices %d and %d", i-1, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// and the last is a single coalesced user message
|
||||||
last := msgs[len(msgs)-1]
|
last := msgs[len(msgs)-1]
|
||||||
if last.Role != "user" {
|
if last.Role != "user" {
|
||||||
t.Fatalf("expected last message role=user, got %s", last.Role)
|
t.Fatalf("expected last message role=user, got %s", last.Role)
|
||||||
}
|
}
|
||||||
if last.Content != "first\n\nsecond" {
|
if got, want := last.Content, "first\n\nsecond"; got != want {
|
||||||
t.Fatalf("expected coalesced content 'first\\n\\nsecond', got %q", last.Content)
|
t.Fatalf("expected coalesced content %q, got %q", want, got)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -62,4 +73,40 @@ func TestBuildMessages_AppendsUserIfNoConsecutive(t *testing.T) {
|
||||||
t.Fatalf("did not expect consecutive user messages")
|
t.Fatalf("did not expect consecutive user messages")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBuildMessages_CoalescesWithEmptyLastUserMessage(t *testing.T) {
|
||||||
|
withTempWorkspace(t, func(ws string) {
|
||||||
|
cb := NewContextBuilder(ws)
|
||||||
|
history := []providers.Message{
|
||||||
|
{Role: "assistant", Content: "hi"},
|
||||||
|
{Role: "user", Content: ""},
|
||||||
|
}
|
||||||
|
msgs := cb.BuildMessages(history, "", "second", nil, "cli", "chat1")
|
||||||
|
if len(msgs) < 2 {
|
||||||
|
t.Fatalf("expected at least 2 messages, got %d", len(msgs))
|
||||||
|
}
|
||||||
|
// Only one injected system message should be at index 0
|
||||||
|
if msgs[0].Role != "system" {
|
||||||
|
t.Fatalf("expected first message to be system, got %s", msgs[0].Role)
|
||||||
|
}
|
||||||
|
for i := 1; i < len(msgs); i++ {
|
||||||
|
if msgs[i].Role == "system" {
|
||||||
|
t.Fatalf("unexpected system message at index %d; history should not include system messages", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ensure no consecutive user messages anywhere
|
||||||
|
for i := 1; i < len(msgs); i++ {
|
||||||
|
if msgs[i-1].Role == "user" && msgs[i].Role == "user" {
|
||||||
|
t.Fatalf("found consecutive user messages at indices %d and %d", i-1, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
last := msgs[len(msgs)-1]
|
||||||
|
if last.Role != "user" {
|
||||||
|
t.Fatalf("expected last message role=user, got %s", last.Role)
|
||||||
|
}
|
||||||
|
if last.Content != "second" {
|
||||||
|
t.Fatalf("expected coalesced content 'second' when last history content is empty, got %q", last.Content)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue