VibecoderMcSwaggins's picture
feat(phase-1): implement data access layer with TDD (#2)
3c4c67b unverified
raw
history blame
2.25 kB
"""Tests for case adapter module."""
from __future__ import annotations
from typing import TYPE_CHECKING
import pytest
from stroke_deepisles_demo.data.adapter import CaseAdapter
if TYPE_CHECKING:
from unittest.mock import MagicMock
class TestCaseAdapter:
"""Tests for CaseAdapter."""
def test_list_case_ids_returns_strings(self, mock_hf_dataset: MagicMock) -> None:
"""list_case_ids returns list of string identifiers."""
adapter = CaseAdapter(mock_hf_dataset)
case_ids = adapter.list_case_ids()
assert isinstance(case_ids, list)
assert all(isinstance(cid, str) for cid in case_ids)
assert case_ids == ["sub-001"]
def test_len_matches_dataset_size(self, mock_hf_dataset: MagicMock) -> None:
"""len(adapter) equals number of cases in dataset."""
adapter = CaseAdapter(mock_hf_dataset)
assert len(adapter) == len(mock_hf_dataset)
def test_get_case_by_string_id(self, mock_hf_dataset: MagicMock) -> None:
"""Can retrieve case by string identifier."""
adapter = CaseAdapter(mock_hf_dataset)
case_ids = adapter.list_case_ids()
case = adapter.get_case(case_ids[0])
assert isinstance(case, dict)
assert "dwi" in case
assert "adc" in case
# Paths should be Path objects or convertible
from pathlib import Path
assert isinstance(case["dwi"], (Path, str))
def test_get_case_by_index(self, mock_hf_dataset: MagicMock) -> None:
"""Can retrieve case by integer index."""
adapter = CaseAdapter(mock_hf_dataset)
case_id, case = adapter.get_case_by_index(0)
assert isinstance(case_id, str)
assert case["dwi"] is not None
def test_get_case_invalid_id_raises(self, mock_hf_dataset: MagicMock) -> None:
"""Raises KeyError for invalid case ID."""
adapter = CaseAdapter(mock_hf_dataset)
with pytest.raises(KeyError):
adapter.get_case("nonexistent-case-id")
def test_iteration(self, mock_hf_dataset: MagicMock) -> None:
"""Can iterate over case IDs."""
adapter = CaseAdapter(mock_hf_dataset)
case_ids = list(adapter)
assert len(case_ids) == len(adapter)