module Diagrams.Test.TwoD.Offset ( tests ) where import Test.Tasty (TestTree) import Test.Tasty.HUnit import Diagrams.Prelude import Diagrams.TwoD.Offset tests :: [TestTree] tests = [ testCase "line" (offsetTrailVertices [p2 (0, 0), p2 (1, 0)] [p2 (0, -1), p2 (1, -1)]) , testCase "square" (offsetTrailVertices [p2 (0, 0), p2 (1, 0), p2 (1, 1), p2 (0, 1), p2 (0, 0)] [p2 (0, -1), p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, 0)]) , testCase "square loop" (offsetTrailLoopVertices [p2 (0, 0), p2 (1, 0), p2 (1, 1), p2 (0, 1), p2 (0, 0)] [p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, -1)]) , testCase "redundant line" (offsetTrailVertices [p2 (0, 0), p2 (0.5, 0), p2 (1, 0)] [p2 (0, -1), p2 (1, -1)]) , testCase "redundant square" (offsetTrailVertices [p2 (0, 0), p2 (1, 0), p2 (1, 0.5), p2 (1, 1), p2 (0, 1), p2 (0, 0)] [p2 (0, -1), p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, 0)]) , testCase "redundant square loop" (offsetTrailLoopVertices [p2 (0, 0), p2 (1, 0), p2 (1, 0.5), p2 (1, 1), p2 (0, 1), p2 (0, 0)] [p2 (2, -1), p2 (2, 2), p2 (-1, 2), p2 (-1, -1)]) ] offsetTrailVertices :: [Point V2 Double] -> [Point V2 Double] -> Assertion offsetTrailVertices orig off = (trailVertices . offsetTrail 1 . fromVertices $ orig) @?= off offsetTrailLoopVertices :: [Point V2 Double] -> [Point V2 Double] -> Assertion offsetTrailLoopVertices orig off = (trailVertices . offsetTrail 1 . loopTrailFromVertices $ orig) @?= off where loopTrailFromVertices = (`at` origin) . wrapTrail . glueLine . lineFromVertices