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)); }
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)); }