Files
vt1200/bad-apple/tests/test_cost.py
T

27 lines
839 B
Python

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