"""Quick consistency checks for multichunk-aligned context selection (run: PYTHONPATH=. python3 tests/test_context_chunk_utils.py).""" import os import sys _repo = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if _repo not in sys.path: sys.path.insert(0, _repo) from src.model_training.multichunk_sample_utils import ( context_frames_for_next_chunk, replay_context_global_indices, replay_context_actions_from_segment_actions, prev_chunk_tail_global_indices, ) def test_replay_indices_match_frame_order(): n, K = 81, 5 frames = list(range(n)) picked = context_frames_for_next_chunk(frames, K) idxs = replay_context_global_indices(n, K) assert [frames[i] for i in idxs] == picked def test_replay_actions_align(): n, K = 81, 5 actions = [[float(i)] * 12 for i in range(n)] out = replay_context_actions_from_segment_actions(actions, n, K) idxs = replay_context_global_indices(n, K) assert out is not None assert len(out) == len(idxs) for row, i in zip(out, idxs): assert row[0] == float(i) def test_prev_chunk_tail_indices(): assert prev_chunk_tail_global_indices(10, 3) == [7, 8, 9] assert prev_chunk_tail_global_indices(10, 3, nearest_first=True) == [9, 8, 7] assert prev_chunk_tail_global_indices(2, 5) is None if __name__ == "__main__": test_replay_indices_match_frame_order() test_replay_actions_align() test_prev_chunk_tail_indices() print("test_context_chunk_utils: ok")