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)
|
||||
|
||||
history := []providers.Message{
|
||||
{Role: "system", Content: "sys"},
|
||||
{Role: "assistant", Content: "hi"},
|
||||
{Role: "user", Content: "first"},
|
||||
}
|
||||
|
|
@ -31,16 +30,28 @@ func TestBuildMessages_CoalescesConsecutiveUserMessages(t *testing.T) {
|
|||
if len(msgs) < 2 {
|
||||
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" {
|
||||
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]
|
||||
if last.Role != "user" {
|
||||
t.Fatalf("expected last message role=user, got %s", last.Role)
|
||||
}
|
||||
if last.Content != "first\n\nsecond" {
|
||||
t.Fatalf("expected coalesced content 'first\\n\\nsecond', got %q", last.Content)
|
||||
if got, want := last.Content, "first\n\nsecond"; got != want {
|
||||
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")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
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