{-# LANGUAGE TemplateHaskell #-} import Data.Vector.DynamicTimeWarping import Data.Vector.Unboxed (fromList) import Test.QuickCheck dist l r = distanceBy (\x y -> (x-y)^2) l r prop_Reflexivity :: [Float] -> [Float] -> Bool prop_Reflexivity l r = let l' = fromList l r' = fromList r in abs (dist l' r' - dist r' l') <= 1e-10 || (dist l' r' == 1/0 && dist r' l' == 1/0) prop_NonNegative :: [Float] -> [Float] -> Bool prop_NonNegative l r = let l' = fromList l r' = fromList r in dist l' r' >= 0 main = $quickCheckAll