Files
jundot--omlx/tests/test_specprefill_planning.py
wehub-resource-sync e9a2f726c9
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.13) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:29:51 +08:00

53 lines
1.8 KiB
Python

# SPDX-License-Identifier: Apache-2.0
"""Tests for SpecPrefill target planning."""
from __future__ import annotations
import pytest
from omlx.specprefill.planning import plan_specprefill_target
def _all_tokens(system_token_count: int, conversation_token_count: int) -> list[int]:
return list(range(system_token_count)) + list(
range(1_000, 1_000 + conversation_token_count)
)
@pytest.mark.parametrize(
("selected_indices", "expected_remove", "expected_sparse_count"),
[([0, 2, 7], True, 2), ([0, 2], False, 2), ([7, 1, 7, 4], True, 3)],
)
def test_kickoff_selection_changes_tracker_count_once(
selected_indices: list[int], expected_remove: bool, expected_sparse_count: int
):
plan = plan_specprefill_target(
all_tokens=_all_tokens(system_token_count=3, conversation_token_count=8),
system_token_count=3,
selected_indices=selected_indices,
position_offset=3,
)
assert plan.remove_kickoff_index is expected_remove
assert plan.sparse_selected_token_count == expected_sparse_count
assert plan.total_tracker_prefill_count == 3 + expected_sparse_count
@pytest.mark.parametrize("system_token_count", [0, 3])
def test_target_plan_preserves_phase_inputs_and_position_offset(
system_token_count: int,
):
all_tokens = _all_tokens(system_token_count, conversation_token_count=8)
plan = plan_specprefill_target(
all_tokens=all_tokens,
system_token_count=system_token_count,
selected_indices=[0, 4],
position_offset=17,
)
assert plan.system_token_count == system_token_count
assert list(plan.conversation_tokens) == all_tokens[system_token_count:]
assert plan.conversation_token_count == 8
assert plan.generation_kickoff_index == 7
assert plan.position_offset == 17