1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-14 08:27:03 +03:00
juvix/test/BackendC/Examples.hs
2022-07-15 11:17:22 +01:00

44 lines
1.4 KiB
Haskell

module BackendC.Examples where
import BackendC.Base
import Base
import Data.FileEmbed
data ExampleTest = ExampleTest
{ _name :: String,
_relDir :: FilePath,
_mainFile :: FilePath,
_expectedDir :: FilePath,
_stdinText :: Text,
_stdlibMode :: StdlibMode
}
makeLenses ''ExampleTest
exampleRoot :: FilePath
exampleRoot = "examples/milestone"
testDescr :: ExampleTest -> TestDescr
testDescr ExampleTest {..} =
let mainRoot = exampleRoot </> _relDir
expectedFile = $(makeRelativeToProject "tests/examplesExpected" >>= strToExp) </> _expectedDir </> "expected.golden"
in TestDescr
{ _testName = _name,
_testRoot = mainRoot,
_testAssertion = Steps $ clangAssertion _stdlibMode _mainFile expectedFile _stdinText
}
allTests :: TestTree
allTests =
testGroup
"Backend C milestone example tests"
(map (mkTest . testDescr) tests)
tests :: [ExampleTest]
tests =
[ ExampleTest "Validity Predicate example" "ValidityPredicates" "Tests.juvix" "ValidityPredicates" "" StdlibExclude,
ExampleTest "MiniTicTacToe example" "MiniTicTacToe" "MiniTicTacToe.juvix" "MiniTicTacToe" "aaa\n0\n10\n1\n2\n3\n3\n4\n5\n6\n7\n8\n9\n" StdlibInclude,
ExampleTest "Fibonacci example" "Fibonacci" "Fibonacci.juvix" "Fibonacci" "" StdlibInclude,
ExampleTest "Collatz sequence generator" "Collatz" "Collatz.juvix" "Collatz" "123\n" StdlibInclude
]