351381339c
logs removed
64 lines
2.3 KiB
Plaintext
64 lines
2.3 KiB
Plaintext
// TODO: Reimplement with usual parse
|
|
open Jest
|
|
open Reducer_TestHelpers
|
|
|
|
// describe("Parse for Bindings", () => {
|
|
// testParseOuterToBe("x", "Ok((:$$bindExpression (:$$bindings) :x))")
|
|
// testParseOuterToBe("x+1", "Ok((:$$bindExpression (:$$bindings) (:add :x 1)))")
|
|
// testParseOuterToBe(
|
|
// "y = x+1; y",
|
|
// "Ok((:$$bindExpression (:$$bindStatement (:$$bindings) (:$let :y (:add :x 1))) :y))",
|
|
// )
|
|
// })
|
|
|
|
// describe("Parse Partial", () => {
|
|
// testParsePartialToBe(
|
|
// "x",
|
|
// "Ok((:$$bindExpression (:$$bindStatement (:$$bindings) :x) (:$exportVariablesExpression)))",
|
|
// )
|
|
// testParsePartialToBe(
|
|
// "y=x",
|
|
// "Ok((:$$bindExpression (:$$bindStatement (:$$bindings) (:$let :y :x)) (:$exportVariablesExpression)))",
|
|
// )
|
|
// testParsePartialToBe(
|
|
// "y=x+1",
|
|
// "Ok((:$$bindExpression (:$$bindStatement (:$$bindings) (:$let :y (:add :x 1))) (:$exportVariablesExpression)))",
|
|
// )
|
|
// testParsePartialToBe(
|
|
// "y = x+1; z = y",
|
|
// "Ok((:$$bindExpression (:$$bindStatement (:$$bindStatement (:$$bindings) (:$let :y (:add :x 1))) (:$let :z :y)) (:$exportVariablesExpression)))",
|
|
// )
|
|
// })
|
|
|
|
describe("Eval with Bindings", () => {
|
|
testEvalBindingsToBe("x", list{("x", ExpressionValue.EvNumber(1.))}, "Ok(1)")
|
|
testEvalBindingsToBe("x+1", list{("x", ExpressionValue.EvNumber(1.))}, "Ok(2)")
|
|
testParseToBe("y = x+1; y", "Ok((:$$block (:$$block (:$let :y (:add :x 1)) :y)))")
|
|
testEvalBindingsToBe("y = x+1; y", list{("x", ExpressionValue.EvNumber(1.))}, "Ok(2)")
|
|
testEvalBindingsToBe("y = x+1", list{("x", ExpressionValue.EvNumber(1.))}, "Ok({x: 1,y: 2})")
|
|
})
|
|
|
|
/*
|
|
Partial code is a partial code fragment that is cut out from a larger code.
|
|
Therefore it does not end with an expression.
|
|
*/
|
|
// describe("Eval Partial", () => {
|
|
// testEvalPartialBindingsToBe(
|
|
// // A partial cannot end with an expression
|
|
// "x",
|
|
// list{("x", ExpressionValue.EvNumber(1.))},
|
|
// "Error(Assignment expected)",
|
|
// )
|
|
// testEvalPartialBindingsToBe("y=x", list{("x", ExpressionValue.EvNumber(1.))}, "Ok({x: 1,y: 1})")
|
|
// testEvalPartialBindingsToBe(
|
|
// "y=x+1",
|
|
// list{("x", ExpressionValue.EvNumber(1.))},
|
|
// "Ok({x: 1,y: 2})",
|
|
// )
|
|
// testEvalPartialBindingsToBe(
|
|
// "y = x+1; z = y",
|
|
// list{("x", ExpressionValue.EvNumber(1.))},
|
|
// "Ok({x: 1,y: 2,z: 2})",
|
|
// )
|
|
// })
|