Example #1
0
        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"));
        }
Example #2
0
        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"));
        }
Example #3
0
        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"));
        }
Example #4
0
        public void EmptyGlobalLocalScope()
        {
            ChatRuntime rt = new ChatRuntime();
            Chat        c1 = rt.AddNewChat("c1");

            Assert.Throws <UnboundSymbol>(() =>
                                          rt.resolver.Bind("$animal", c1, null));
        }
Example #5
0
        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"));
        }
Example #6
0
        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"));
        }
Example #7
0
        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"));
        }