aboutsummaryrefslogtreecommitdiff
path: root/tests/test_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_helpers.py')
-rw-r--r--tests/test_helpers.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/test_helpers.py b/tests/test_helpers.py
new file mode 100644
index 0000000..0c0f875
--- /dev/null
+++ b/tests/test_helpers.py
@@ -0,0 +1,59 @@
+import json
+import pathlib
+
+import pytest
+
+from comfier import Tools
+
+ROOT = pathlib.Path(__file__).parent.parent
+
+
+@pytest.fixture
+def tools(make_tools): # type: ignore[no-untyped-def]
+ return make_tools()[0]
+
+
+def test_normalize_seed(tools: Tools) -> None:
+ assert tools._normalize_seed("42") == 42
+ assert tools._normalize_seed("0x10") == 16
+ assert tools._normalize_seed(7) == 7
+ assert 0 <= tools._normalize_seed(None) < 1 << 63
+ assert 0 <= tools._normalize_seed(-5) < 1 << 63
+ assert tools._normalize_seed((1 << 63) + 3) == 3
+ with pytest.raises(ValueError):
+ tools._normalize_seed("abc")
+
+
+async def test_resolve_dimensions(tools: Tools) -> None:
+ assert await tools._resolve_dimensions("512X768") == (512, 768)
+ assert await tools._resolve_dimensions(None) == (1024, 1024)
+ with pytest.raises(ValueError):
+ await tools._resolve_dimensions("0x10")
+ with pytest.raises(ValueError):
+ await tools._resolve_dimensions("bogus")
+
+
+def test_resolve_node_mappings(tools: Tools) -> None:
+ tools.valves.negative_prompt_node_ids = "1, 2,,"
+ nodes = json.loads((ROOT / "fixtures" / "nodes.json").read_text())
+ m = tools._resolve_node_mappings(nodes)
+ assert m["negative_prompt"]["node_ids"] == ["1", "2"]
+ assert m["positive_prompt"] == {"key": "value", "node_ids": ["520:506"]}
+ assert m["steps"]["node_ids"] == ["459:458"]
+
+
+def test_apply_workflow_parameters(tools: Tools) -> None:
+ wf = json.loads((ROOT / "fixtures" / "workflow.json").read_text())
+ m = tools._resolve_node_mappings(
+ json.loads((ROOT / "fixtures" / "nodes.json").read_text())
+ )
+ applied = tools._apply_workflow_parameters(
+ wf, m, {"seed": 9, "width": 64, "steps": None}
+ )
+ assert wf["520:517"]["inputs"]["seed"] == 9
+ assert wf["520:518"]["inputs"]["value"] == 64
+ assert "steps" not in applied
+ with pytest.raises(KeyError):
+ tools._apply_workflow_parameters(
+ wf, {"seed": {"key": "seed", "node_ids": ["nope"]}}, {"seed": 1}
+ )