diff --git a/src/Track.elm b/src/Track.elm index c324d6a..12075c8 100644 --- a/src/Track.elm +++ b/src/Track.elm @@ -1,8 +1,7 @@ -module Track exposing (Track, parse) +module Track exposing (Track, Point, parse) import Result -import Xml.Decode as XD exposing (path, single, list, float) - +import Xml.Decode as XD exposing (path, list, floatAttr) type alias Point = { lat : Float @@ -12,11 +11,11 @@ type alias Point = type alias Track = List Point pointDecoder = XD.map2 Point - (XD.path ["ele"] (single float)) - (XD.path ["ele"] (single float)) + (floatAttr "lat") + (floatAttr "lon") gpxDecoder = - (XD.path [ "trk", "trkseg", "trkpt" ] (XD.list pointDecoder)) + (path [ "trk", "trkseg", "trkpt" ] (list pointDecoder)) parse str = XD.run gpxDecoder str diff --git a/tests/TrackTest.elm b/tests/TrackTest.elm index 406e83f..9f2f4f8 100644 --- a/tests/TrackTest.elm +++ b/tests/TrackTest.elm @@ -1,7 +1,7 @@ module TrackTest exposing (specs) import Fixtures -import Track exposing (Track) +import Track exposing (Track, Point) import Test exposing (..) import Expect exposing (Expectation) @@ -12,8 +12,14 @@ specs = \_ -> let r = Track.parse Fixtures.threepoints + expected = + [ (Point 51.600643 -0.01856) + , (Point 51.600679 -0.018179) + , (Point 51.600697 -0.018064) + ] + in case r of - (Ok trk) -> Expect.equal (List.length trk) 3 + (Ok trk) -> Expect.equalLists trk expected _ -> Expect.fail "not ok" ]