about summary refs log tree commit diff
path: root/test/Xanthous/Util/GraphicsSpec.hs
blob: ecd6dbe191970da9a0e5ab6bf39f00c469e2a957 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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)
      @?= [ (1,12)
          , (2,12)
          , (3,12)
          , (4,12)
          , (5,12)
          , (6,11)
          , (7,10)
          , (7,11)
          , (8,10)
          , (9,9)
          , (10,7)
          , (10,8)
          , (11,6)
          , (11,7)
          , (12,1)
          , (12,2)
          , (12,3)
          , (12,4)
          , (12,5)
          ]
    ]

  , 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)
    ]
  ]