Skip to content

Commit 7460a59

Browse files
committed
tests
1 parent 66d5ce7 commit 7460a59

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

hugr-py/tests/test_metadata.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from __future__ import annotations
2+
3+
from typing import Any
4+
5+
from semver import Version
6+
7+
from hugr.envelope import EnvelopeConfig, ExtensionDesc, GeneratorDesc
8+
from hugr.hugr import Hugr
9+
from hugr.metadata import HugrGenerator, HugrUsedExtensions
10+
11+
12+
def test_metadata_roundtrip() -> None:
13+
hugr = Hugr[Any]()
14+
15+
gen = GeneratorDesc(name="hugr-py-test", version=Version.parse("1.2.3"))
16+
exts = [
17+
ExtensionDesc(name="ext.a", version=Version.parse("0.1.0")),
18+
ExtensionDesc(name="ext.b", version=Version.parse("2.0.0")),
19+
]
20+
21+
# Set the metadata on the module root node
22+
node = hugr[hugr.module_root]
23+
node.metadata[HugrGenerator] = gen
24+
node.metadata[HugrUsedExtensions] = exts
25+
26+
# Roundtrip serialization
27+
data = hugr.to_bytes(EnvelopeConfig.TEXT)
28+
loaded = Hugr.from_bytes(data)
29+
node = loaded[loaded.module_root]
30+
31+
# Typed readback
32+
assert node.metadata[HugrGenerator] == gen
33+
assert node.metadata.get(HugrGenerator) == gen
34+
assert node.metadata[HugrUsedExtensions] == exts
35+
assert node.metadata.get(HugrUsedExtensions) == exts
36+
37+
# Check the raw JSON encoding
38+
raw = node.metadata.as_dict()
39+
assert raw[HugrGenerator.KEY] == {"name": "hugr-py-test", "version": "1.2.3"}
40+
assert raw[HugrUsedExtensions.KEY] == [
41+
{"name": "ext.a", "version": "0.1.0"},
42+
{"name": "ext.b", "version": "2.0.0"},
43+
]

0 commit comments

Comments
 (0)