{-# LANGUAGE OverloadedStrings #-}
module Units where
import Test.HUnit
import Data.Text.GooglePolyline
import qualified Data.Text as T
maxDiff :: [ LatLong ] -> [ LatLong ] -> Double
maxDiff p q = maximum $
zipWith
( \(LatLong x y) (LatLong a b) ->
sqrt ( ( a - x )^2 + ( b - y )^2 ) ) p q
assertPathEqual :: String -> [ LatLong ] -> [ LatLong ] -> Assertion
assertPathEqual s p1 p2 = assertBool s ( maxDiff p1 p2 < 1e-10 )
datNWenc :: T.Text
datNWenc = "i}q~FrdzuO"
datNWdec :: [ LatLong ]
datNWdec = [LatLong 41.87621 (-87.6297)]
singlePointNWenc :: Assertion
singlePointNWenc =
assertEqual "Encode Single Point NW" datNWenc ( encode datNWdec )
singlePointNWdec :: Assertion
singlePointNWdec =
assertEqual "Decode Single Point NW" datNWdec ( decode datNWenc )
datNEenc :: T.Text
datNEenc = "gqp|F}vjuA"
datNEdec :: [ LatLong ]
datNEdec = [LatLong 41.54148 14.15039]
singlePointNEenc :: Assertion
singlePointNEenc =
assertEqual "Encode Single Point NE" datNEenc ( encode datNEdec )
singlePointNEdec :: Assertion
singlePointNEdec =
assertEqual "Decode Single Point NE" datNEdec ( decode datNEenc )
datSWenc :: T.Text
datSWenc = "x`hmEha|oL"
datSWdec :: [ LatLong ]
datSWdec = [LatLong (-33.79741) (-70.92773)]
singlePointSWenc :: Assertion
singlePointSWenc =
assertEqual "Encode Single Point SW" datSWenc ( encode datSWdec )
singlePointSWdec :: Assertion
singlePointSWdec =
assertEqual "Decode Single Point SW" datSWdec ( decode datSWenc )
datSEenc :: T.Text
datSEenc = "`zfuE__~lY"
datSEdec :: [ LatLong ]
datSEdec = [LatLong (-35.10193) 138.60352]
singlePointSEenc :: Assertion
singlePointSEenc =
assertEqual "Encode Single Point SE" datSEenc ( encode datSEdec )
singlePointSEdec :: Assertion
singlePointSEdec =
assertEqual "Decode Single Point SE" datSEdec ( decode datSEenc )
singlePointZeroEnc :: Assertion
singlePointZeroEnc =
assertEqual "Encode zero point (0,0)" "??" ( encode $ [LatLong 0 0] )
singlePointZeroDec :: Assertion
singlePointZeroDec =
assertEqual "Encode zero point (0,0)" [LatLong 0 0] ( decode "??" )
dat3PathEnc :: T.Text
dat3PathEnc = "iftwFdlsbM~_Ak_AxiAppA"
dat3PathDec :: [ LatLong ]
dat3PathDec = [LatLong 40.74101 (-73.99635)
,LatLong 40.73061 (-73.98605)
,LatLong 40.71864 (-73.99910)]
threePointPathEnc :: Assertion
threePointPathEnc =
assertEqual "Encode Three point path" dat3PathEnc ( encode dat3PathDec )
threePointPathDec :: Assertion
threePointPathDec =
assertPathEqual "Decode Three point path" dat3PathDec ( decode dat3PathEnc )