import pytest from sparsevlm.scheduler import SparsityScheduler, make_scheduler def test_bucket_bounds(): s = SparsityScheduler(256, 10, 32) assert s.buckets[0] == 32 assert s.buckets[-1] == 256 def test_snap_always_gte(): s = SparsityScheduler(256, 10, 32) for n in range(32, 257, 7): assert s.snap_to_bucket(n) >= n def test_snap_in_buckets(): s = SparsityScheduler(256, 10, 32) for n in range(32, 257, 5): assert s.snap_to_bucket(n) in s.buckets def test_make_scheduler(): s = make_scheduler(256) assert s.n_vis_max == 256 assert len(s.buckets) > 0 def test_bucket_idx(): s = SparsityScheduler(256, 10, 32) for n in [32, 64, 128, 256]: idx = s.get_bucket_idx(n) assert 0 <= idx < len(s.buckets) def test_summary(): s = make_scheduler(256) assert isinstance(s.summary(), str) assert len(s.summary()) > 0