110 lines
3.4 KiB
Python
110 lines
3.4 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from repixelizer.cli import main
|
|
from repixelizer.io import save_rgba
|
|
from repixelizer.synthetic import fake_pixelize, make_emblem
|
|
|
|
|
|
def test_default_command_runs_without_explicit_run_subcommand(tmp_path: Path) -> None:
|
|
source = make_emblem(16, 16)
|
|
fake = fake_pixelize(source, upscale=8, blur_radius=0.4)
|
|
input_path = tmp_path / "input.png"
|
|
output_path = tmp_path / "output.png"
|
|
save_rgba(input_path, fake)
|
|
exit_code = main([str(input_path), "--out", str(output_path), "--steps", "8"])
|
|
assert exit_code == 0
|
|
assert output_path.exists()
|
|
|
|
|
|
def test_default_command_accepts_strip_background_flag(tmp_path: Path) -> None:
|
|
source = make_emblem(16, 16)
|
|
fake = fake_pixelize(source, upscale=8, blur_radius=0.4)
|
|
input_path = tmp_path / "input.png"
|
|
output_path = tmp_path / "output.png"
|
|
save_rgba(input_path, fake)
|
|
exit_code = main([str(input_path), "--out", str(output_path), "--steps", "0", "--strip-background"])
|
|
assert exit_code == 0
|
|
assert output_path.exists()
|
|
|
|
|
|
def test_default_command_accepts_fixed_lattice_flags(tmp_path: Path) -> None:
|
|
source = make_emblem(16, 16)
|
|
fake = fake_pixelize(source, upscale=8, blur_radius=0.4)
|
|
input_path = tmp_path / "input.png"
|
|
output_path = tmp_path / "output.png"
|
|
save_rgba(input_path, fake)
|
|
exit_code = main(
|
|
[
|
|
str(input_path),
|
|
"--out",
|
|
str(output_path),
|
|
"--steps",
|
|
"0",
|
|
"--target-width",
|
|
"16",
|
|
"--target-height",
|
|
"16",
|
|
"--skip-candidate-rerank",
|
|
]
|
|
)
|
|
assert exit_code == 0
|
|
assert output_path.exists()
|
|
|
|
|
|
def test_gui_command_dispatches_to_gui_main(monkeypatch) -> None:
|
|
called = {}
|
|
|
|
def fake_gui_main(*, host: str, port: int, reload: bool) -> int:
|
|
called["host"] = host
|
|
called["port"] = port
|
|
called["reload"] = reload
|
|
return 0
|
|
|
|
monkeypatch.setattr("repixelizer.cli.gui_main", fake_gui_main)
|
|
exit_code = main(["gui", "--host", "127.0.0.1", "--port", "8123", "--reload"])
|
|
assert exit_code == 0
|
|
assert called == {"host": "127.0.0.1", "port": 8123, "reload": True}
|
|
|
|
|
|
def test_spritesheet_command_dispatches_to_spritesheet_runner(monkeypatch, tmp_path: Path) -> None:
|
|
called = {}
|
|
|
|
def fake_run_spritesheet(input_path, output_path, **kwargs):
|
|
called["input_path"] = input_path
|
|
called["output_path"] = output_path
|
|
called["sprite_count"] = kwargs["sprite_count"]
|
|
called["target_width"] = kwargs["target_width"]
|
|
called["target_height"] = kwargs["target_height"]
|
|
called["enable_candidate_rerank"] = kwargs["enable_candidate_rerank"]
|
|
|
|
monkeypatch.setattr("repixelizer.cli.run_spritesheet", fake_run_spritesheet)
|
|
input_path = tmp_path / "sheet.png"
|
|
output_path = tmp_path / "out.png"
|
|
|
|
exit_code = main(
|
|
[
|
|
"spritesheet",
|
|
str(input_path),
|
|
"--out",
|
|
str(output_path),
|
|
"--sprite-count",
|
|
"6",
|
|
"--target-width",
|
|
"32",
|
|
"--target-height",
|
|
"32",
|
|
"--skip-candidate-rerank",
|
|
]
|
|
)
|
|
|
|
assert exit_code == 0
|
|
assert called == {
|
|
"input_path": str(input_path),
|
|
"output_path": str(output_path),
|
|
"sprite_count": 6,
|
|
"target_width": 32,
|
|
"target_height": 32,
|
|
"enable_candidate_rerank": False,
|
|
}
|