#!/usr/bin/env python3 """ Unit tests for `planet_simulation.oasis_ring_iterations` (T-964, PR #210 review — hoshe). GRID_W is ALREADY 1024 in production (not a future value) — this pins the `binary_dilation` iteration counts the oasis-vegetation-ring code actually uses TODAY (4/8), not just the historical 512-baseline values (2/4) the original authored constants were tuned at. See the module docstring on `oasis_ring_iterations` in `planet_simulation.py` for the scaling rationale. Pure arithmetic (no numpy/scipy dependency) — stdlib `unittest` only. Run directly or via `make test-tooling`: .venv/bin/python tooling/test_planet_oasis_rings.py """ import sys import unittest from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from tooling.domains.atlas.planet.planet_simulation import GRID_W, oasis_ring_iterations # noqa: E402 class OasisRingScalingTests(unittest.TestCase): def test_historical_512_baseline_yields_authored_2_and_4(self): # The values the oasis-ring code was originally authored/tuned at. self.assertEqual(oasis_ring_iterations(512), (2, 4)) def test_current_production_1024_doubles_to_4_and_8(self): # GRID_W is 1024 in production TODAY (T-964 finding, PR #210 review) — # this is the LIVE behavior every planet generation run exercises now, # not a future/hypothetical value. self.assertEqual(oasis_ring_iterations(1024), (4, 8)) def test_matches_the_actual_module_global_grid_w(self): # Fixture sanity: whatever GRID_W the module currently declares must # be the value this test suite is pinning against — if GRID_W ever # changes again, this test (not just the two explicit-value tests # above) will fail, forcing the new value to be pinned deliberately. self.assertEqual(GRID_W, 1024) def test_minimum_one_iteration_guard_at_a_small_grid_width(self): # A degenerate small grid_w must never round down to 0 iterations # (binary_dilation(iterations=0) is a no-op, silently disabling the # vegetation ring rather than erroring). ring1, ring2 = oasis_ring_iterations(1) self.assertGreaterEqual(ring1, 1) self.assertGreaterEqual(ring2, 1) if __name__ == "__main__": unittest.main(verbosity=2)