Esempio n. 1
0
        public void verify_methods_overriding() // overriding concept exists, when there are two methods of the same name and signature, but different implementation
        {
            var parser = new Parser();

            // register utility methods
            parser.AddFunction("Whoami", () => "utility method");
            parser.AddFunction <int, string>("Whoami", i => string.Format("utility method {0}", i));

            var model = new ModelWithMethods();

            // redefined model methods take precedence
            Assert.IsTrue(parser.Parse <ModelWithMethods>("Whoami() == 'model method'").Invoke(model));
            Assert.IsTrue(parser.Parse <ModelWithMethods>("Whoami(1) == 'model method 1'").Invoke(model));
        }
        public void verify_methods_overriding()
        {
            var parser = new Parser();

            // register utility methods
            parser.AddFunction("Whoami", () => "utility method");
            parser.AddFunction <int, string>("Whoami", i => string.Format("utility method {0}", i));

            var model = new ModelWithMethods();

            // redefined model methods take precedence
            Assert.IsTrue(parser.Parse <ModelWithMethods>("Whoami() == 'model method'").Invoke(model));
            Assert.IsTrue(parser.Parse <ModelWithMethods>("Whoami(1) == 'model method 1'").Invoke(model));
        }
Esempio n. 3
0
        public void Does_not_allow_invoking_method_on_binding_expression()
        {
            var context = new TemplateContext().Init();

            var model = new ModelWithMethods {
                Nested = new ModelWithMethods {
                    Name = "Nested"
                }
            };

            try
            {
                var r = new PageResult(context.OneTimePage("{{ model.GetName() }}"))
                {
                    Model = model
                }.Result;
                Assert.Fail("Should throw");
            }
            catch (BindingExpressionException e)
            {
                e.Message.Print();
            }

            try
            {
                var r = new PageResult(context.OneTimePage("{{ model.Nested.GetName() }}"))
                {
                    Model = model
                }.Result;
                Assert.Fail("Should throw");
            }
            catch (BindingExpressionException e)
            {
                e.Message.Print();
            }
        }
        public void verify_methods_overriding()
        {
            var parser = new Parser();

            // register utility methods
            parser.AddFunction("Whoami", () => "utility method");
            parser.AddFunction<int, string>("Whoami", i => string.Format("utility method {0}", i));

            var model = new ModelWithMethods();

            // redefined model methods take precedence
            Assert.IsTrue(parser.Parse<ModelWithMethods>("Whoami() == 'model method'").Invoke(model));
            Assert.IsTrue(parser.Parse<ModelWithMethods>("Whoami(1) == 'model method 1'").Invoke(model));
        }