2e8e71bbd0
test remove setResult parse end of outerblock test end of outer block compiles testing bindings tested todo chain bindings topological sort
49 lines
1.8 KiB
Plaintext
49 lines
1.8 KiB
Plaintext
module ErrorValue = Reducer_ErrorValue
|
|
module Expression = Reducer_Expression
|
|
module ExpressionT = Reducer_Expression_T
|
|
module ExternalExpressionValue = ReducerInterface.ExternalExpressionValue
|
|
|
|
open Jest
|
|
open Expect
|
|
|
|
let unwrapRecord = rValue =>
|
|
rValue->Belt.Result.flatMap(value =>
|
|
switch value {
|
|
| ExternalExpressionValue.EvRecord(aRecord) => Ok(aRecord)
|
|
| _ => ErrorValue.RETodo("TODO: External bindings must be returned")->Error
|
|
}
|
|
)
|
|
|
|
let expectParseToBe = (code: string, answer: string) =>
|
|
Expression.BackCompatible.parse(code)->ExpressionT.toStringResult->expect->toBe(answer)
|
|
|
|
let expectEvalToBe = (code: string, answer: string) =>
|
|
Expression.BackCompatible.evaluateStringAsExternal(code)
|
|
->Reducer_Helpers.rRemoveDefaultsExternal
|
|
->ExternalExpressionValue.toStringResult
|
|
->expect
|
|
->toBe(answer)
|
|
|
|
let expectEvalError = (code: string) =>
|
|
Expression.BackCompatible.evaluateStringAsExternal(code)
|
|
->ExternalExpressionValue.toStringResult
|
|
->expect
|
|
->toMatch("Error\(")
|
|
|
|
let testParseToBe = (expr, answer) => test(expr, () => expectParseToBe(expr, answer))
|
|
let testDescriptionParseToBe = (desc, expr, answer) =>
|
|
test(desc, () => expectParseToBe(expr, answer))
|
|
|
|
let testEvalError = expr => test(expr, () => expectEvalError(expr))
|
|
let testEvalToBe = (expr, answer) => test(expr, () => expectEvalToBe(expr, answer))
|
|
let testDescriptionEvalToBe = (desc, expr, answer) => test(desc, () => expectEvalToBe(expr, answer))
|
|
|
|
module MySkip = {
|
|
let testParseToBe = (expr, answer) => Skip.test(expr, () => expectParseToBe(expr, answer))
|
|
let testEvalToBe = (expr, answer) => Skip.test(expr, () => expectEvalToBe(expr, answer))
|
|
}
|
|
module MyOnly = {
|
|
let testParseToBe = (expr, answer) => Only.test(expr, () => expectParseToBe(expr, answer))
|
|
let testEvalToBe = (expr, answer) => Only.test(expr, () => expectEvalToBe(expr, answer))
|
|
}
|