40 lines
1.4 KiB
Haskell
40 lines
1.4 KiB
Haskell
|
module Xanthous.Util.GraphicsSpec (main, test) where
|
|||
|
--------------------------------------------------------------------------------
|
|||
|
import Test.Prelude hiding (head)
|
|||
|
--------------------------------------------------------------------------------
|
|||
|
import Xanthous.Util.Graphics
|
|||
|
import Xanthous.Util
|
|||
|
import Data.List (head)
|
|||
|
--------------------------------------------------------------------------------
|
|||
|
|
|||
|
main :: IO ()
|
|||
|
main = defaultMain test
|
|||
|
|
|||
|
test :: TestTree
|
|||
|
test = testGroup "Xanthous.Util.Graphics"
|
|||
|
[ testGroup "circle"
|
|||
|
[ testCase "radius 12, origin 0"
|
|||
|
$ (sort . unique @[] @[_]) (circle @Int (0, 0) 12)
|
|||
|
@?= (sort . unique) (
|
|||
|
let quadrant =
|
|||
|
[ (0, 12) , (1, 12) , (2, 12) , (3, 12)
|
|||
|
, (4, 12) , (5, 11) , (6, 11) , (7, 10)
|
|||
|
, (8, 9) , (9, 9) , (9, 8) , (10, 7)
|
|||
|
, (11, 6) , (11, 5) , (12, 4) , (12, 3)
|
|||
|
, (12, 2) , (12, 1) , (12, 0)
|
|||
|
]
|
|||
|
in quadrant
|
|||
|
<> (quadrant <&> _1 %~ negate)
|
|||
|
<> (quadrant <&> _2 %~ negate)
|
|||
|
<> (quadrant <&> both %~ negate)
|
|||
|
)
|
|||
|
]
|
|||
|
|
|||
|
, testGroup "line"
|
|||
|
[ testProperty "starts and ends at the start and end points" $ \start end ->
|
|||
|
let ℓ = line @Int start end
|
|||
|
in counterexample ("line: " <> show ℓ)
|
|||
|
$ length ℓ > 2 ==> (head ℓ === start) .&&. (head (reverse ℓ) === end)
|
|||
|
]
|
|||
|
]
|