public void SymbolTraversalWithAlias() { Chat c1 = null; List <Symbol> symbols; string result, text; // one round of symbol parsing text = "The [aly=$fish.Id()] $aly"; symbols = Symbol.Parse(text, c1); //Console.WriteLine(symbols.Stringify()); Assert.That(symbols.Count, Is.EqualTo(2)); result = symbols[0].Resolve(globals); Assert.That(result.ToString(), Is.EqualTo("9")); result = symbols[0].Replace(text, result, globals); //Console.WriteLine("result="+result); Assert.That(result.ToString(), Is.EqualTo("The 9 $aly")); Assert.That(globals["aly"], Is.EqualTo("9")); // now try the full resolution ChatRuntime rt = new ChatRuntime(); c1 = rt.AddNewChat("c1"); var res = rt.resolver.Bind(text, c1, globals); Assert.That(res, Is.EqualTo("The 9 9")); }
public void ComplexGlobalScope() { ChatRuntime rt = new ChatRuntime(); Chat c1 = rt.AddNewChat("c1"); var res = rt.resolver.Bind("$cmplx", c1, globals); Assert.That(res, Is.EqualTo("a").Or.EqualTo("b").Or.EqualTo("then")); }
public void SimpleGlobalScope() { ChatRuntime rt = new ChatRuntime(); Chat c1 = rt.AddNewChat("c1"); var res = rt.resolver.Bind("$animal", c1, globals); Assert.That(res, Is.EqualTo("dog")); }
public void EmptyGlobalLocalScope() { ChatRuntime rt = new ChatRuntime(); Chat c1 = rt.AddNewChat("c1"); Assert.Throws <UnboundSymbol>(() => rt.resolver.Bind("$animal", c1, null)); }
public void SymbolBinding() { //Resolver.DBUG = true; ChatRuntime rt = new ChatRuntime(); Chat c1 = rt.AddNewChat("c1"); var res = rt.resolver.Bind("Hello $$recur", c1, globals); Assert.That(res, Is.EqualTo("Hello A")); }
public void SymbolTraversalSimple() { Resolver.DBUG = false; ChatRuntime rt = new ChatRuntime(); Chat c1 = rt.AddNewChat("c1"); var res = rt.resolver.Bind("Hello $fish.name", c1, globals); Assert.That(res, Is.EqualTo("Hello Fred")); }
public void SimpleLocalScope() { ChatRuntime rt = new ChatRuntime(); Chat c1 = rt.AddNewChat("c1"); c1.scope.Add("a", "b"); var res = rt.resolver.Bind("$a", c1, globals); Assert.That(res, Is.EqualTo("b")); }