hgeometry-0.5.0.0: test/Data/Geometry/PointSpec.hs
module Data.Geometry.PointSpec where
import Data.Ext
import Data.Geometry.Point
import Test.Hspec
import qualified Data.CircularList as C
spec :: Spec
spec = do
describe "Sort Arround a Point test" $ do
it "Sort around origin" $
sortArround (ext origin) (map ext [ point2 (-3) (-3)
, point2 (-1) (-5)
, point2 5 5
, point2 6 (-4)
, point2 (-5) 3
, point2 10 1
, point2 20 0
, point2 0 (-6)
, point2 5 7
, point2 5 5
, point2 2 2
, point2 26 (-2)
, point2 0 (-5)
])
`shouldBe` map ext [ point2 20 0
, point2 10 1
, point2 2 2
, point2 5 5
, point2 5 5
, point2 5 7
, point2 (-5) 3
, point2 (-3) (-3)
, point2 (-1) (-5)
, point2 0 (-5)
, point2 0 (-6)
, point2 6 (-4)
, point2 26 (-2)
]
it "degenerate points on horizontal line" $
sortArround (ext origin) (map ext [ point2 2 0
, point2 (-1) 0
, point2 10 0
])
`shouldBe` map ext [ point2 2 0, point2 10 0, point2 (-1) 0 ]
it "degenerate points on vertical line" $
sortArround (ext origin) (map ext [ point2 0 2
, point2 0 (-1)
, point2 0 10
])
`shouldBe` map ext [ point2 0 2, point2 0 10, point2 0 (-1) ]
describe "Insert point in ciclically ordered list" $ do
it "insert" $
insertIntoCyclicOrder (ext origin) (ext $ point2 (-4) (-5)) (
C.fromList $ map ext [ point2 20 0
, point2 10 1
, point2 2 2
, point2 5 5
, point2 5 5
, point2 5 7
, point2 (-5) 3
, point2 (-3) (-3)
, point2 (-1) (-5)
, point2 0 (-5)
, point2 0 (-6)
, point2 6 (-4)
, point2 26 (-2)
])
`shouldBe`
(C.fromList $ map ext [ point2 20 0
, point2 10 1
, point2 2 2
, point2 5 5
, point2 5 5
, point2 5 7
, point2 (-5) 3
, point2 (-3) (-3)
, point2 (-4) (-5)
, point2 (-1) (-5)
, point2 0 (-5)
, point2 0 (-6)
, point2 6 (-4)
, point2 26 (-2)
])