from __future__ import annotations

import unittest

from amundsen.core.elevation_filter import ElevationFilter
from amundsen.core.models import TrackPoint


class ElevationFilterTest(unittest.TestCase):
    def test_moving_average_and_hysteresis_ignore_small_changes(self) -> None:
        points = [
            TrackPoint(0.0, 0.0, elevation=value)
            for value in [100.0, 101.0, 102.0, 107.0, 108.0]
        ]
        result = ElevationFilter(window_points=1, hysteresis_m=3.0).filter_points(points)

        self.assertEqual(result, [100.0, 100.0, 100.0, 107.0, 107.0])


if __name__ == "__main__":
    unittest.main()
