58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
import pytest
|
|
|
|
from lap_detection.api import Collection, Feature, Geometry, Coordinate
|
|
import lap_detection.main as main
|
|
|
|
|
|
# arrange
|
|
@pytest.fixture
|
|
def sample_collection():
|
|
return Collection(
|
|
"FeatureCollection",
|
|
[
|
|
Feature(
|
|
"Feature",
|
|
{},
|
|
Geometry([[123.456, 654.321], [987.654, 101.010]], "LineString"),
|
|
)
|
|
],
|
|
)
|
|
|
|
|
|
# arrange
|
|
@pytest.mark.parametrize(
|
|
"path,expected_laps",
|
|
[
|
|
("src/lap_detection/data/usecase1.json", 3),
|
|
("src/lap_detection/data/usecase2.json", 3),
|
|
("src/lap_detection/data/usecase3.json", 0),
|
|
("src/lap_detection/data/usecase4.json", 2),
|
|
],
|
|
)
|
|
def test_main(path, expected_laps, capsys):
|
|
# act
|
|
main.main(path)
|
|
|
|
# assert
|
|
captured = capsys.readouterr()
|
|
assert captured.out.strip() == f"Anzahl Runden: {expected_laps}"
|
|
|
|
|
|
def test_check_invalid_path():
|
|
# assert
|
|
with pytest.raises(FileNotFoundError, match="invalid_path.json does not exist"):
|
|
# act
|
|
main._check_path("invalid_path.json")
|
|
|
|
|
|
def test_build_coordinates(sample_collection):
|
|
# act
|
|
coordinates = main._build_coordinates(sample_collection)
|
|
|
|
# assert
|
|
assert isinstance(coordinates, list)
|
|
assert len(coordinates) == 2
|
|
assert isinstance(coordinates[1], Coordinate)
|
|
assert coordinates[1].lon == 987.654
|
|
assert coordinates[1].lat == 101.010
|