import json from gridforge.dsl import Object, Morphism, Functor, TimeMonoid from gridforge.core import canonicalize_dsl def test_canonicalization_basic(): o1 = Object(id="o1", name="Source", description="test", fields={"voltage": 110}) o2 = Object(id="o2", name="Sink", description="test", fields={"load": 5}) m = Morphism(id="m1", name="pipe", source_object_id="o1", target_object_id="o2", schema={"unit": "kW"}) f = Functor(id="f1", name="to_canonical", map_function="lambda x: x") t = TimeMonoid(id="t0", rounds=2, mode="sync") canon = canonicalize_dsl([o1, o2], [m], [f], [], [], t) assert "objects" in canon and len(canon["objects"]) == 2 assert canon["time"]["id"] == "t0" or isinstance(canon["time"], dict)