{-# LANGUAGE OverloadedStrings #-}
module Copilot.Verifier.Examples
( shouldFailExamples
, shouldPassExamples
) where
import qualified Data.CaseInsensitive as CI
import Data.CaseInsensitive (CI)
import qualified Data.Map as Map
import Data.Map (Map)
import Data.Text (Text)
import Copilot.Verifier (Verbosity)
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.AbsIntMin as Fail.AbsIntMin
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.AddSignedWrap as Fail.AddSignedWrap
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.DivByZero as Fail.DivByZero
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.IndexOutOfBounds as Fail.IndexOutOfBounds
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.ModByZero as Fail.ModByZero
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.MulSignedWrap as Fail.MulSignedWrap
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.ShiftLTooLarge as Fail.ShiftLTooLarge
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.ShiftRTooLarge as Fail.ShiftRTooLarge
import qualified Copilot.Verifier.Examples.ShouldFail.Partial.SubSignedWrap as Fail.SubSignedWrap
import qualified Copilot.Verifier.Examples.ShouldPass.Array as Array
import qualified Copilot.Verifier.Examples.ShouldPass.ArrayGen as ArrayGen
import qualified Copilot.Verifier.Examples.ShouldPass.ArrayOfStructs as ArrayOfStructs
import qualified Copilot.Verifier.Examples.ShouldPass.ArrayTriggerArgument as ArrayTriggerArgument
import qualified Copilot.Verifier.Examples.ShouldPass.Arith as Arith
import qualified Copilot.Verifier.Examples.ShouldPass.Clock as Clock
import qualified Copilot.Verifier.Examples.ShouldPass.Counter as Counter
import qualified Copilot.Verifier.Examples.ShouldPass.Engine as Engine
import qualified Copilot.Verifier.Examples.ShouldPass.FPNegation as FPNegation
import qualified Copilot.Verifier.Examples.ShouldPass.FPOps as FPOps
import qualified Copilot.Verifier.Examples.ShouldPass.Heater as Heater
import qualified Copilot.Verifier.Examples.ShouldPass.IntOps as IntOps
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.AbsIntMin as Pass.AbsIntMin
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.AddSignedWrap as Pass.AddSignedWrap
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.IndexOutOfBounds as Pass.IndexOutOfBounds
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.DivByZero as Pass.DivByZero
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.ModByZero as Pass.ModByZero
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.MulSignedWrap as Pass.MulSignedWrap
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.ShiftLTooLarge as Pass.ShiftLTooLarge
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.ShiftRTooLarge as Pass.ShiftRTooLarge
import qualified Copilot.Verifier.Examples.ShouldPass.Partial.SubSignedWrap as Pass.SubSignedWrap
import qualified Copilot.Verifier.Examples.ShouldPass.Structs as Structs
import qualified Copilot.Verifier.Examples.ShouldPass.UpdateArray as UpdateArray
import qualified Copilot.Verifier.Examples.ShouldPass.UpdateStruct as UpdateStruct
import qualified Copilot.Verifier.Examples.ShouldPass.Voting as Voting
import qualified Copilot.Verifier.Examples.ShouldPass.WCV as WCV
shouldFailExamples :: Verbosity -> Map (CI Text) (IO ())
shouldFailExamples :: Verbosity -> Map (CI Text) (IO ())
shouldFailExamples Verbosity
verb = [(CI Text, IO ())] -> Map (CI Text) (IO ())
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[
Text -> IO () -> (CI Text, IO ())
example Text
"AbsIntMin-fail" (Verbosity -> IO ()
Fail.AbsIntMin.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"AddSignedWrap-fail" (Verbosity -> IO ()
Fail.AddSignedWrap.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"DivByZero-fail" (Verbosity -> IO ()
Fail.DivByZero.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"IndexOutOfBounds-fail" (Verbosity -> IO ()
Fail.IndexOutOfBounds.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ModByZero-fail" (Verbosity -> IO ()
Fail.ModByZero.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"MulSignedWrap-fail" (Verbosity -> IO ()
Fail.MulSignedWrap.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ShiftLTooLarge-fail" (Verbosity -> IO ()
Fail.ShiftLTooLarge.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ShiftRTooLarge-fail" (Verbosity -> IO ()
Fail.ShiftRTooLarge.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"SubSignedWrap-fail" (Verbosity -> IO ()
Fail.SubSignedWrap.verifySpec Verbosity
verb)
]
shouldPassExamples :: Verbosity -> Map (CI Text) (IO ())
shouldPassExamples :: Verbosity -> Map (CI Text) (IO ())
shouldPassExamples Verbosity
verb = [(CI Text, IO ())] -> Map (CI Text) (IO ())
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
[ Text -> IO () -> (CI Text, IO ())
example Text
"Array" (Verbosity -> IO ()
Array.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ArrayGen" (Verbosity -> IO ()
ArrayGen.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ArrayOfStructs" (Verbosity -> IO ()
ArrayOfStructs.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ArrayTriggerArgument" (Verbosity -> IO ()
ArrayTriggerArgument.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"Arith" (Verbosity -> IO ()
Arith.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"Clock" (Verbosity -> IO ()
Clock.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"Counter" (Verbosity -> IO ()
Counter.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"Engine" (Verbosity -> IO ()
Engine.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"FPNegation" (Verbosity -> IO ()
FPNegation.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"FPOps" (Verbosity -> IO ()
FPOps.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"Heater" (Verbosity -> IO ()
Heater.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"IntOps" (Verbosity -> IO ()
IntOps.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"Structs" (Verbosity -> IO ()
Structs.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"UpdateArray" (Verbosity -> IO ()
UpdateArray.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"UpdateStruct" (Verbosity -> IO ()
UpdateStruct.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"Voting" (Verbosity -> IO ()
Voting.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"WCV" (Verbosity -> IO ()
WCV.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"AbsIntMin-pass" (Verbosity -> IO ()
Pass.AbsIntMin.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"AddSignedWrap-pass" (Verbosity -> IO ()
Pass.AddSignedWrap.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"DivByZero-pass" (Verbosity -> IO ()
Pass.DivByZero.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"IndexOutOfBounds-pass" (Verbosity -> IO ()
Pass.IndexOutOfBounds.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ModByZero-pass" (Verbosity -> IO ()
Pass.ModByZero.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"MulSignedWrap-pass" (Verbosity -> IO ()
Pass.MulSignedWrap.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ShiftLTooLarge-pass" (Verbosity -> IO ()
Pass.ShiftLTooLarge.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"ShiftRTooLarge-pass" (Verbosity -> IO ()
Pass.ShiftRTooLarge.verifySpec Verbosity
verb)
, Text -> IO () -> (CI Text, IO ())
example Text
"SubSignedWrap-pass" (Verbosity -> IO ()
Pass.SubSignedWrap.verifySpec Verbosity
verb)
]
example :: Text -> IO () -> (CI Text, IO ())
example :: Text -> IO () -> (CI Text, IO ())
example Text
name IO ()
action = (Text -> CI Text
forall s. FoldCase s => s -> CI s
CI.mk Text
name, IO ()
action)