mirror of
https://git.k-space.ee/arti/vt1200.git
synced 2026-11-01 12:14:56 +02:00
27 lines
839 B
Python
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
|