commit d7eda42884114bf082e964dc07f95a851172a629
parent 5fa3370eefc3db17228a414b797c9b4c92d97a19
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 14:06:17 +0000
core: add allocation conservation and ordering properties
Diffstat:
1 file changed, 38 insertions(+), 0 deletions(-)
diff --git a/tests/test_journeys.mojo b/tests/test_journeys.mojo
@@ -173,3 +173,41 @@ def test_quantity_and_eligibility_properties() raises:
elif unknown_count > 0:
expected = "conditional"
assert_equal(compose_eligibility(checks), expected)
+
+
+from hyf_application.match_plan import allocate_multiple_lines
+from hyf_application.match_ranking import rank_by_preference
+from hyf_core.domain.plan import LotCapacity, plan_conservation_violations
+
+
+def test_allocation_conservation_and_ordering_properties() raises:
+ for capacity in range(10, 60, 10):
+ var lots = List[LotCapacity]()
+ lots.append(LotCapacity(lot_id="lot-1", revision="l1", value=capacity, scale=0))
+ lots.append(LotCapacity(lot_id="lot-2", revision="l1", value=capacity, scale=0))
+ var lines = List[String]()
+ lines.append("line-1")
+ lines.append("line-2")
+ var required = List[Int]()
+ required.append(capacity)
+ required.append(capacity * 2)
+ var plan = allocate_multiple_lines("p1", "farm-1", lines, required, lots)
+ assert_equal(len(plan_conservation_violations(plan, lots)), 0)
+ var total = 0
+ for entry in plan.allocations:
+ total += entry.value
+ assert_true(total <= capacity * 2)
+
+ var ids = List[String]()
+ ids.append("b")
+ ids.append("a")
+ ids.append("c")
+ var scores = List[Int]()
+ scores.append(1)
+ scores.append(1)
+ scores.append(1)
+ var ranked = rank_by_preference(ids, scores)
+ assert_equal(len(ranked), 3)
+ assert_equal(ranked[0], "a")
+ assert_equal(ranked[1], "b")
+ assert_equal(ranked[2], "c")