import pytest

from app.results.record_window import select_positions


def test_select_positions_extracts_requested_rows_in_requested_order():
    rows = [{"id": 1}, {"id": 2}, {"id": 3}, {"id": 4}]
    result = select_positions(rows, [4, 2, 3])
    assert [r["id"] for r in result] == [4, 2, 3]


def test_select_positions_preserves_duplicate_positions():
    rows = [{"id": 1}, {"id": 2}, {"id": 3}]
    result = select_positions(rows, [2, 2, 3])
    assert [r["id"] for r in result] == [2, 2, 3]


def test_select_positions_rejects_out_of_range_position():
    rows = [{"id": 1}, {"id": 2}, {"id": 3}]
    with pytest.raises(IndexError):
        select_positions(rows, [1, 100])
