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