never executed always true always false
1 module Conjure.Language.DomainSizeTest ( tests ) where
2
3 -- conjure
4 import Conjure.Prelude
5 import Conjure.Language.Constant
6 import Conjure.Language.Type
7 import Conjure.Language.Domain
8 import Conjure.Language.DomainSizeOf ( domainSizeOf )
9
10 -- tasty
11 import Test.Tasty ( TestTree, testGroup )
12 import Test.Tasty.HUnit ( testCase, (@?=) )
13
14
15 domainSizeConstant :: (MonadFailDoc m ) => Domain () Constant -> m Integer
16 domainSizeConstant = domainSizeOf
17
18 tests :: TestTree
19 tests = testGroup "domainSize"
20 [ testCase "domain size of bool is 2" $
21 domainSizeConstant DomainBool @?= Right 2
22 , testCase "domain size of int(1..100)" $
23 domainSizeConstant (DomainInt TagInt [RangeBounded ((ConstantInt TagInt) 1) ((ConstantInt TagInt) 100)]) @?= Right 100
24 , testCase "domain size of int(1,...,100)" $
25 domainSizeConstant (DomainInt TagInt (map (RangeSingle . (ConstantInt TagInt)) [1 .. 100])) @?= Right 100
26 , testCase "domain size of int(13)" $
27 domainSizeConstant (DomainInt TagInt [RangeSingle ((ConstantInt TagInt) 13)]) @?= Right 1
28 , testCase "domain size of int(13,1..100)" $
29 domainSizeConstant (DomainInt TagInt [ RangeSingle ((ConstantInt TagInt) 13)
30 , RangeBounded ((ConstantInt TagInt) 1) ((ConstantInt TagInt) 100)
31 ]) @?= Right 100
32 , testCase "domain size of int(113,1..100)" $
33 domainSizeConstant (DomainInt TagInt [ RangeSingle ((ConstantInt TagInt) 113)
34 , RangeBounded ((ConstantInt TagInt) 1) ((ConstantInt TagInt) 100)
35 ]) @?= Right 101
36 , testCase "domain size of set of bool #1" $
37 domainSizeConstant (DomainSet () (SetAttr SizeAttr_None) DomainBool) @?= Right 4
38 , testCase "domain size of set of bool #2" $
39 let setOfSize n = DomainSet () (SetAttr (SizeAttr_Size n))
40 in domainSizeConstant (setOfSize ((ConstantInt TagInt) 2) DomainBool) @?= Right 1
41 ]
42