packages feed

googlepolyline-0.1.0.1: tests/QuickCheck.hs

module QuickCheck where

import Test.QuickCheck
import Data.Text.GooglePolyline
import Control.Applicative ( (<$>) )

cRound :: Double -> Double
cRound = (/1e5) . fromIntegral . round . (*1e5)

pRound :: LatLong -> LatLong
pRound ( LatLong a b ) = LatLong (cRound a) (cRound b )

arbitraryCoord :: Gen LatLong
arbitraryCoord = do
    lat <- choose (-90.0,90.0)
    lon <- choose (-180.0,180.0)
    return $ pRound (LatLong lat lon)

instance Arbitrary LatLong where
   arbitrary = arbitraryCoord

prop_decodeInverse :: [ LatLong ] -> Bool 
prop_decodeInverse cs =
   fmap pRound ( decode . encode $ cs ) == fmap pRound  cs