idea41-monoidalscheduler-ca.../test/test_scheduler.py

35 lines
1.2 KiB
Python

import pytest
from idea41_monoidalscheduler_category_theoretic.dsl import ResourceType, Morphism, MonoidalCategory
from idea41_monoidalscheduler_category_theoretic.optimizer import LocalProblem, solve_local_problem
def test_basic_dsl_build_and_tensor_compose():
a = ResourceType(name="RobotArm", capacity=10.0)
b = ResourceType(name="Conveyor", capacity=5.0)
m1 = Morphism(name="arm_to_conv", input_type=a, output_type=b, latency_ms=2.0)
m2 = Morphism(name="conv_to_arm", input_type=b, output_type=a, latency_ms=3.0)
cat1 = MonoidalCategory(objects=[a], morphisms=[m1])
cat2 = MonoidalCategory(objects=[b], morphisms=[m2])
tensor = cat1.tensor(cat2)
composed = tensor.compose(cat1)
assert len(composed.objects) >= 1
assert len(composed.morphisms) >= 1
def test_solve_local_problem_basic_feasibility():
lp = LocalProblem(
name="demo",
resources={"R1": 5.0, "R2": 0.0},
constraints={"c1": 1.0},
)
res = solve_local_problem(lp)
assert res["problem"] == "demo"
assert isinstance(res["feasible"], bool)
# With non-negative inputs, our stub should be feasible
assert res["feasible"] is True