packages feed

domain-0.1: test/Main.hs

module Main where

import Prelude hiding (assert)
import Language.Haskell.TH.Instances ()
import Test.QuickCheck.Instances
import Test.Tasty
import Test.Tasty.Runners
import Test.Tasty.HUnit
import Test.Tasty.QuickCheck
import qualified Domain
import qualified DomainCore.Model as Model
import qualified Test.QuickCheck as QuickCheck
import qualified Data.Text as Text
import qualified Util.TH as TH
import qualified Util.TH.LeafTypes as THLeafTypes
import qualified Language.Haskell.TH.Syntax as TH


main =
  defaultMain $ 
  testGroup "All tests" [
    testCase "Should fail when wrong member of sum-type is supplied" $ let
      res :: Maybe [Model.TypeDec]
      res =
        [TH.maybeDecsQQ|
          A:
            sum:
              a:
                c: Int
              b: Char, Double
          |]
      in case res of
        Just res ->
          assertFailure (show res)
        Nothing ->
          return ()
    ,
    testCase "Nested structures shouldn't contain any unit-tuple types" $ let
      decs :: [TH.Dec]
      decs =
        $(TH.lift
            =<< Domain.declare Nothing mempty [Domain.schema|
                  A:
                    product:
                      a: Maybe (Maybe Int)
                  |])
      leafTypes =
        foldMap THLeafTypes.fromDec decs
      in case elemIndex (TH.TupleT 1) leafTypes of
        Just _ ->
          assertFailure (show decs)
        Nothing ->
          return ()
    ]