// open Jest // open Expect // 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.expandMacroCallRs( // 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 = Reducer_Bindings.fromArray(bindArray) // tester(expr->T.toString, () => // expr // ->Macro.doMacroCall( // bindings, // ProjectAccessorsT.identityAccessors, // Expression.reduceExpressionInProject, // ) // ->Ok // ->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) // }