File size: 2,247 Bytes
3c4c67b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
"""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)
|