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