{-# LANGUAGE BlockArguments #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE OverloadedStrings #-} module Spec.Point (tests) where import Geomancy import Hedgehog import Test.Tasty (TestTree, testGroup) import Test.Tasty.Hedgehog (testPropertyNamed) import Geomancy.Point qualified tests :: TestTree tests = testGroup "Point" [ testPropertyNamed "dpoint" "prop_dpoint" prop_dpoint ] prop_dpoint :: Property prop_dpoint = withTests 1 $ property do let far = 1e9 a = Point (dvec3 far 0 0) :: DPoint3 b = Point (dvec3 (far + 0.5) 0 0) 0.5 === Geomancy.Point.distance a b b === a .+^ dvec3 0.5 0 0 dvec3 0.5 0 0 === b .-. a Point (dvec3 (far + 0.25) 0 0) === Geomancy.Point.lerp a b 0.5 5 === Geomancy.Point.distance (Point (vec3 0 0 0)) (Point (vec3 3 4 0))