mirror of
https://github.com/anoma/juvix.git
synced 2024-12-15 18:13:56 +03:00
98776997db
* Add a Web version of TicTacToe The web version demonstrates injecting host functions into the WASM import table and call exported Juvix functions from JS. The web version and the CLI version of the TicTacToe game use the same game logic backend Juvix module. * Build and publish web apps in documentation * Add a link to the TicTacToe web app in example documentation * Update Makefile to match the new format
46 lines
1.5 KiB
Haskell
46 lines
1.5 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,
|
|
_compileMode :: CompileMode
|
|
}
|
|
|
|
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 = case _compileMode of
|
|
WASI stdlibMode -> Steps $ wasiClangAssertion stdlibMode _mainFile expectedFile _stdinText
|
|
WASM i -> Steps $ wasmClangAssertion i _mainFile expectedFile
|
|
}
|
|
|
|
allTests :: TestTree
|
|
allTests =
|
|
testGroup
|
|
"Backend C milestone example tests"
|
|
(map (mkTest . testDescr) tests)
|
|
|
|
tests :: [ExampleTest]
|
|
tests =
|
|
[ ExampleTest "Validity Predicate example" "ValidityPredicates" "Tests.juvix" "ValidityPredicates" "" (WASI StdlibInclude),
|
|
ExampleTest "TicTacToe CLI example" "TicTacToe" "CLI/TicTacToe.juvix" "TicTacToe" "aaa\n0\n10\n1\n2\n3\n3\n4\n5\n6\n7\n8\n9\n" (WASI StdlibInclude),
|
|
ExampleTest "Fibonacci example" "Fibonacci" "Fibonacci.juvix" "Fibonacci" "" (WASI StdlibInclude),
|
|
ExampleTest "Collatz sequence generator" "Collatz" "Collatz.juvix" "Collatz" "123\n" (WASI StdlibInclude)
|
|
]
|