예제 #1
0
 public object Eval(XValue value, Dictionary<string, object> modules, ContextParameterList parameters)
 {
     if (value.Expression != null)
         return EvalScript(value.Expression, modules, parameters);
     else
         return value.Value;
 }
예제 #2
0
        private object EvalScript(IScriptExpression expression, Dictionary<string, object> modules, ContextParameterList parameters)
        {
            var argParameters = new ScriptParameterList();
            foreach (var m in modules)
                argParameters.Add(new ScriptParameter(m.Key, m.Value.GetType(), m.Value));
            foreach (var p in parameters)
                argParameters.Add(new ScriptParameter(p.Name, p.Type, p.Value));

            return _scriptService.Eval(expression, argParameters);
        }
예제 #3
0
        public void It_should_be_possible_to_eval_constant()
        {
            PageScriptService target = new PageScriptService(null);
            IContext context = new Mocks.ContextMock();
            ModuleDefinitionList modulesDefinition = new ModuleDefinitionList();
            PageParameterList pageParameters = new PageParameterList();
            Dictionary<string, object> modules = new Dictionary<string, object>();
            ContextParameterList parameters = new ContextParameterList();

            XValue exp;

            exp = target.Parse("ciao", typeof(string), modulesDefinition, pageParameters);
            Assert.AreEqual("ciao", target.Eval(exp, modules, parameters));

            exp = target.Parse("459", typeof(int), modulesDefinition, pageParameters);
            Assert.AreEqual(459, target.Eval(exp, modules, parameters));

            exp = target.Parse("0.59", typeof(double), modulesDefinition, pageParameters);
            Assert.AreEqual(0.59, target.Eval(exp, modules, parameters));

            exp = target.Parse("01/02/2045", typeof(DateTime), modulesDefinition, pageParameters);
            Assert.AreEqual(new DateTime(2045, 01, 02), target.Eval(exp, modules, parameters));
        }
예제 #4
0
        public void It_should_be_possible_to_parse_and_eval_script_with_modules()
        {
            var scriptService = new Moq.Mock<IScriptService>();
            scriptService.Setup(p => p.Parse("TestModule.Name", Moq.It.IsAny<ScriptParameterList>())).Returns(new Mocks.ScriptExpressionMock("TestModule.Name", typeof(string)));
            TestModule testModule = new TestModule();

            ModuleDefinitionList modules = new ModuleDefinitionList();
            modules.Add(new ModuleDefinition("TestModule", TestModule.Definition));
            PageParameterList parameters = new PageParameterList();

            PageScriptService target = new PageScriptService(scriptService.Object);

            XValue exp;
            exp = target.Parse("@TestModule.Name", typeof(string), modules, parameters);

            scriptService.Verify(p => p.Parse("TestModule.Name", Moq.It.IsAny<ScriptParameterList>()));

            Dictionary<string, object> modulesInstance = new Dictionary<string, object>();
            modulesInstance.Add("TestModule", testModule);
            ContextParameterList parametersInstance = new ContextParameterList();

            target.Eval(exp, modulesInstance, parametersInstance);

            scriptService.Verify(p => p.Eval(Moq.It.IsAny<IScriptExpression>(), Moq.It.IsAny<ScriptParameterList>()));
        }
예제 #5
0
 public object Eval(XValue value, Dictionary<string, object> modules, ContextParameterList parameters)
 {
     return value.Expression.ToString();
 }