stgi-1: test/Testsuite/Test/Prelude/Maybe.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Test.Prelude.Maybe (tests) where
import Stg.Marshal
import Stg.Parser.QuasiQuoter
import qualified Stg.Prelude as Stg
import Test.Machine.Evaluate.TestTemplates.MarshalledValue
import Test.Orphans ()
import Test.Tasty
tests :: TestTree
tests = testGroup "Maybe"
[ testMaybe ]
testMaybe :: TestTree
testMaybe = marshalledValueTest defSpec
{ testName = "maybe"
, sourceSpec = \(nothingCase, maybeInt :: Maybe Integer, offset) -> MarshalSourceSpec
{ resultVar = "main"
, expectedValue = maybe nothingCase (+offset) maybeInt
, source = mconcat
[ toStg "nothingCase" nothingCase
, toStg "maybeInt" maybeInt
, toStg "offset" offset
, Stg.maybe
, Stg.add
, [stg|
main = \ =>
let addOffset = \x -> add x offset
in maybe nothingCase addOffset maybeInt |]]}}