import numpy as np from pipeline.cost import CostConstants, estimate_record_us, select_records from pipeline.movie import FrameRecord, TileRecord C = CostConstants() def test_one_solid_tile_cost(): rec = FrameRecord(1, 0, [TileRecord(0, 1, [])]) # 64x64 screen tile = 256 words; 256*0.40 + 3us call assert abs(estimate_record_us(rec, C) - (256 * 0.40 + 3.0)) < 0.01 def test_full_screen_is_over_budget(): recs = [TileRecord(i, 1, []) for i in range(320)] assert estimate_record_us(FrameRecord(1, 0, recs), C) > 13900.0 def test_select_records_holds_time_not_records(): quiet = np.zeros((32, 32), dtype=bool) busy = np.ones((32, 32), dtype=bool) out = select_records([quiet, busy, quiet, quiet], C, budget_us=50.0) assert all(r.ticks >= 1 for r in out) assert sum(r.ticks for r in out) == 4