2e8e71bbd0
test remove setResult parse end of outerblock test end of outer block compiles testing bindings tested todo chain bindings topological sort
89 lines
2.5 KiB
Plaintext
89 lines
2.5 KiB
Plaintext
open Jest
|
|
open Expect
|
|
|
|
module Bindings = Reducer_Bindings
|
|
module BindingsReplacer = Reducer_Expression_BindingsReplacer
|
|
module Expression = Reducer_Expression
|
|
module ExpressionWithContext = Reducer_ExpressionWithContext
|
|
module InternalExpressionValue = ReducerInterface.InternalExpressionValue
|
|
module Macro = Reducer_Expression_Macro
|
|
module ProjectAccessorsT = ReducerProject_ProjectAccessors_T
|
|
module T = Reducer_Expression_T
|
|
|
|
let testMacro_ = (
|
|
tester,
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedCode: string,
|
|
) => {
|
|
let bindings = Bindings.fromArray(bindArray)
|
|
tester(expr->T.toString, () =>
|
|
expr
|
|
->Macro.expandMacroCall(
|
|
bindings,
|
|
ProjectAccessorsT.identityAccessors,
|
|
Expression.reduceExpressionInProject,
|
|
)
|
|
->ExpressionWithContext.toStringResult
|
|
->expect
|
|
->toEqual(expectedCode)
|
|
)
|
|
}
|
|
|
|
let testMacroEval_ = (
|
|
tester,
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedValue: string,
|
|
) => {
|
|
let bindings = Bindings.fromArray(bindArray)
|
|
tester(expr->T.toString, () =>
|
|
expr
|
|
->Macro.doMacroCall(
|
|
bindings,
|
|
ProjectAccessorsT.identityAccessors,
|
|
Expression.reduceExpressionInProject,
|
|
)
|
|
->InternalExpressionValue.toStringResult
|
|
->expect
|
|
->toEqual(expectedValue)
|
|
)
|
|
}
|
|
|
|
let testMacro = (
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedExpr: string,
|
|
) => testMacro_(test, bindArray, expr, expectedExpr)
|
|
let testMacroEval = (
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedValue: string,
|
|
) => testMacroEval_(test, bindArray, expr, expectedValue)
|
|
|
|
module MySkip = {
|
|
let testMacro = (
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedExpr: string,
|
|
) => testMacro_(Skip.test, bindArray, expr, expectedExpr)
|
|
let testMacroEval = (
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedValue: string,
|
|
) => testMacroEval_(Skip.test, bindArray, expr, expectedValue)
|
|
}
|
|
|
|
module MyOnly = {
|
|
let testMacro = (
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedExpr: string,
|
|
) => testMacro_(Only.test, bindArray, expr, expectedExpr)
|
|
let testMacroEval = (
|
|
bindArray: array<(string, InternalExpressionValue.t)>,
|
|
expr: T.expression,
|
|
expectedValue: string,
|
|
) => testMacroEval_(Only.test, bindArray, expr, expectedValue)
|
|
}
|