summaryrefslogtreecommitdiff
path: root/tests/test_compose_mml_tool.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_compose_mml_tool.py')
-rw-r--r--tests/test_compose_mml_tool.py32
1 files changed, 14 insertions, 18 deletions
diff --git a/tests/test_compose_mml_tool.py b/tests/test_compose_mml_tool.py
index c33e737..4f904e4 100644
--- a/tests/test_compose_mml_tool.py
+++ b/tests/test_compose_mml_tool.py
@@ -1,7 +1,5 @@
"""Exhaustive tests for the compose_mml MCP tool."""
-from pathlib import Path
-
VALID_PPMCK = """#TITLE "Test"
A t120 l4 o4 v15 q2
c e g c
@@ -27,8 +25,10 @@ VALID_PYXEL = """0: T120 L4 O4 V100 @1
def test_compose_ppmck(compose_mml, tmp_output_dir):
result = compose_mml(action="compose", mml=VALID_PPMCK, mode="ppmck")
assert result["success"] is True
- assert result["wav_path"] is not None
- assert Path(result["wav_path"]).exists()
+ assert result["audio"]["mime_type"] == "audio/wav"
+ assert result["audio"]["size_bytes"] > 44
+ assert "wav_path" not in result
+ assert list(tmp_output_dir.rglob("output.wav"))
assert result["duration_sec"] > 0
assert result["note_sequence"] is not None
assert "validation" in result
@@ -39,8 +39,9 @@ def test_compose_ppmck(compose_mml, tmp_output_dir):
def test_compose_pyxel(compose_mml, tmp_output_dir):
result = compose_mml(action="compose", mml=VALID_PYXEL, mode="pyxel")
assert result["success"] is True
- assert result["wav_path"] is not None
- assert Path(result["wav_path"]).exists()
+ assert result["audio"]["mime_type"] == "audio/wav"
+ assert "wav_path" not in result
+ assert list(tmp_output_dir.rglob("output.wav"))
assert result["duration_sec"] > 0
@@ -95,7 +96,7 @@ def test_synthesis_templates_compose(compose_mml, tmp_output_dir):
f"{mode}/{template} synthesis failed: {result['validation']}"
)
assert result["duration_sec"] > 0
- assert Path(result["wav_path"]).exists()
+ assert result["audio"]["size_bytes"] > 44
def test_template_invalid_fallback(compose_mml):
@@ -131,7 +132,8 @@ def test_compose_unknown_mode(compose_mml):
def test_compose_with_syntax_error(compose_mml):
result = compose_mml(action="compose", mml="A t0\n c", mode="ppmck")
assert result["success"] is False
- assert result["wav_path"] is None
+ assert result["audio"] is None
+ assert "wav_path" not in result
assert result["duration_sec"] == 0
assert any(e["severity"] == "error" for e in result["validation"]["errors"])
@@ -168,8 +170,7 @@ def test_compose_normalize(compose_mml, tmp_output_dir):
on = compose_mml(action="compose", mml=base, mode="pyxel", normalize=True)
off = compose_mml(action="compose", mml=base, mode="pyxel", normalize=False)
assert on["success"] and off["success"]
- assert Path(on["wav_path"]).exists()
- assert Path(off["wav_path"]).exists()
+ assert len(list(tmp_output_dir.rglob("output.wav"))) == 2
def test_compose_creates_timestamped_output_directory(compose_mml, tmp_output_dir):
@@ -182,14 +183,9 @@ def test_compose_creates_timestamped_output_directory(compose_mml, tmp_output_di
assert result1["success"] is True
assert result2["success"] is True
- path1 = result1["wav_path"]
- path2 = result2["wav_path"]
- assert path1 is not None
- assert path2 is not None
- assert path1 != path2, "Two compose calls produced the same output directory"
-
- p1 = Path(path1)
- p2 = Path(path2)
+ paths = sorted(tmp_output_dir.rglob("output.wav"))
+ assert len(paths) == 2
+ p1, p2 = paths
assert p1.exists()
assert p2.exists()
assert p1.name == "output.wav"