tutorial injecting user values
This commit is contained in:
parent
5bc4395ff6
commit
22e45d0e7b
|
@ -0,0 +1,39 @@
|
|||
@@warning("-44")
|
||||
module InternalExpressionValue = ReducerInterface_InternalExpressionValue
|
||||
module Project = ForTS_ReducerProject
|
||||
module Bindings = Reducer_Bindings
|
||||
|
||||
open Jest
|
||||
open Expect
|
||||
open Expect.Operators
|
||||
|
||||
describe("ReducerProject Tutorial", () => {
|
||||
/* Let's build a project that depends on values from the UI */
|
||||
let project = Project.createProject()
|
||||
Project.setSource(project, "main", "x+y+z")
|
||||
/* x, y and z is not defined in the project but they has to come from the user */
|
||||
test("Injecting user values", () => {
|
||||
/* User has input the values */
|
||||
let x = 1
|
||||
let y = 2
|
||||
let z = 3
|
||||
/* Then we construct a source code to define those values */
|
||||
let userCode = `
|
||||
x = ${x->Js.Int.toString}
|
||||
y = ${y->Js.Int.toString}
|
||||
z = ${z->Js.Int.toString}
|
||||
`
|
||||
/* We inject the user code into the project */
|
||||
Project.setSource(project, "userCode", userCode)
|
||||
/* "main" is depending on the user code */
|
||||
Project.setContinues(project, "main", ["userCode"])
|
||||
/* We can now run the project */
|
||||
Project.runAll(project)
|
||||
let result = Project.getResult(project, "main")
|
||||
result->InternalExpressionValue.toStringOptionResult->expect == "Ok(6)"
|
||||
})
|
||||
})
|
||||
|
||||
/* Note that this is not final version of the project */
|
||||
/* In the future, for safety, we will provide a way to inject values instead of a source code */
|
||||
/* But time is limited for now... */
|
Loading…
Reference in New Issue
Block a user