public void TestPredefinedFunctions() { var node = Parser.Parse(new Lexer(new StringReader("lower(a) < 'a'"), "{test}")); var result = SetToString(FreeVars.Get(node, new Interpreter().GetBaseEnvironment())); Assert.AreEqual("{a}", result); }
private void Verify(string free, string script) { var node = Parser.Parse(new Lexer(new StringReader(script), "{test}")); var freeVars = new SortedSet <string>(); var boundVars = new SortedSet <string>(); var additionalBoundVars = new SortedSet <string>(); node.CollectVars(freeVars, boundVars, additionalBoundVars); Assert.AreEqual(free, SetToString(FreeVars.Get(node, Environment.GetBaseEnvironment()))); }
public void TestFreeVars() { var interpreter = new Interpreter(); var env = Environment.GetBaseEnvironment(); var parseTree1 = Parser.Parse(new Lexer(new StringReader("def say_hello = fn(obj) \"Hello \" + obj;"), "{test}")); interpreter.Interpret(parseTree1, env); var parseTree2 = Parser.Parse(new Lexer(new StringReader("say_hello(\"du\") + unknown_func()"), "{test}")); var freeVars = FreeVars.Get(parseTree2, env); Assert.IsTrue(freeVars.Contains("unknown_func")); Assert.IsFalse(freeVars.Contains("say_hello")); }