TestUserMessageOrdinalToItemIndex covers the ordinal translation helper: only user-role messages count; system and assistant items are skipped; out-of-range ordinals are rejected.
(t *testing.T)
| 522 | // helper: only user-role messages count; system and assistant items |
| 523 | // are skipped; out-of-range ordinals are rejected. |
| 524 | func TestUserMessageOrdinalToItemIndex(t *testing.T) { |
| 525 | t.Parallel() |
| 526 | |
| 527 | sess := session.New() |
| 528 | // Items 0..3: user, system, assistant, user. Ordinal 0 → item 0, |
| 529 | // ordinal 1 → item 3. |
| 530 | sess.Messages = []session.Item{ |
| 531 | session.NewMessageItem(session.UserMessage("u1")), |
| 532 | session.NewMessageItem(&session.Message{ |
| 533 | Message: chat.Message{Role: chat.MessageRoleSystem, Content: "sys"}, |
| 534 | }), |
| 535 | session.NewMessageItem(session.NewAgentMessage("root", &chat.Message{ |
| 536 | Role: chat.MessageRoleAssistant, |
| 537 | Content: "a1", |
| 538 | })), |
| 539 | session.NewMessageItem(session.UserMessage("u2")), |
| 540 | } |
| 541 | |
| 542 | idx, err := userMessageOrdinalToItemIndex(sess, 0) |
| 543 | require.NoError(t, err) |
| 544 | assert.Equal(t, 0, idx) |
| 545 | |
| 546 | idx, err = userMessageOrdinalToItemIndex(sess, 1) |
| 547 | require.NoError(t, err) |
| 548 | assert.Equal(t, 3, idx, "ordinal 1 must skip past the system and assistant items") |
| 549 | |
| 550 | _, err = userMessageOrdinalToItemIndex(sess, 2) |
| 551 | require.ErrorIs(t, err, ErrForkOutOfRange) |
| 552 | |
| 553 | _, err = userMessageOrdinalToItemIndex(sess, -1) |
| 554 | require.ErrorIs(t, err, ErrForkOutOfRange) |
| 555 | |
| 556 | _, err = userMessageOrdinalToItemIndex(sess, 99) |
| 557 | require.ErrorIs(t, err, ErrForkOutOfRange) |
| 558 | } |
nothing calls this directly
no test coverage detected