Files
logimage-generator/tests/fakes/fakes.py
T
Vincent Bourdon 5a03f8a38d import initial
2026-06-10 10:21:18 +02:00

51 lines
1.6 KiB
Python

from pathlib import Path
from logimage.domain.ports.image_source import ImageSource
from logimage.domain.ports.image_converter import ImageConverter
from logimage.domain.ports.pdf_exporter import PdfExporter
from logimage.domain.value_objects.image_data import ImageData
from logimage.domain.value_objects.grid import Grid
from logimage.domain.entities.puzzle import NonogramPuzzle
_MINIMAL_CELLS = [[i % 2 == 0] * 5 for i in range(5)]
MINIMAL_GRID = Grid.from_list(_MINIMAL_CELLS)
class FakeImageSource(ImageSource):
def __init__(
self,
content: bytes = b"fake",
title: str = "Fake Puzzle",
) -> None:
self._content = content
self._title = title
self.fetch_calls: list[str | None] = []
def fetch(self, theme: str | None = None) -> ImageData:
self.fetch_calls.append(theme)
return ImageData(content=self._content, title=self._title)
class FakeImageConverter(ImageConverter):
def __init__(self, grid: Grid = MINIMAL_GRID) -> None:
self._grid = grid
def to_grid(self, image_bytes: bytes, width: int, height: int) -> Grid:
return self._grid
class FakePdfExporter(PdfExporter):
def __init__(self) -> None:
self.exported_puzzles: list[NonogramPuzzle] = []
self.last_path: Path | None = None
self.last_with_solution: bool = False
def export(
self,
puzzles: list[NonogramPuzzle],
path: Path,
with_solution: bool = False,
) -> None:
self.exported_puzzles = list(puzzles)
self.last_path = path
self.last_with_solution = with_solution