public void RepeaterHideRuleReferenceRootControl() { ITruthCondition condition = new HideTruthCondition { RuleType = "HIDE" }; TruthConditionList subRuleList = new TruthConditionList(); CompareDefinition compareDefinition = new CompareDefinition { CompareTo = ComparisonType.Value, Field = "Checkbox", FieldScope = FieldScope.Unknown, Operator = Operator.Equals, Value = "checked" }; subRuleList.Add(new CompareTruthCondition { RuleType = "EVAL", Value = compareDefinition }); condition.Value = subRuleList; ControlList controlList = new ControlList { new CheckboxControl { Name = "Checkbox" } }; RepeaterControl repeater = new RepeaterControl { Name = "Parent" }; repeater.AddChild(new ComboControl { Name = "Child", VisibilityRule = condition }); controlList.Add(repeater); ApplicationData applicationData = new ApplicationData { { "Checkbox", "checked" } }; Dictionary<string, object>[] repeaterValue = new Dictionary<string, object>[1]; repeaterValue[0] = new Dictionary<string, object>(); repeaterValue[0]["Child"] = string.Empty; applicationData.Add("Parent", repeaterValue); ITruthConditionEvaluator<ITruthCondition> evaluator = this.EvaluatorRegister.GetEvaluatorFor<HideTruthCondition>(); bool result = evaluator.Evaluate(condition, controlList, applicationData, null, this.EvaluatorRegister, "Parent[0]"); Assert.IsTrue(result); applicationData["Checkbox"] = string.Empty; result = evaluator.Evaluate(condition, controlList, applicationData, null, this.EvaluatorRegister, "Parent[0]"); Assert.IsFalse(result); }
public void RepeaterInsideGroupCalc() { ControlList controls = new ControlList(); int i = 0; GroupControl group = new GroupControl { Id = i++, Name = "group1" }; controls.Add(group); RepeaterControl control = new RepeaterControl { Id = i++, Name = "repeater1" }; group.Controls.Add(control); control.AddChild(new TextControl { Id = i++, Name = "field1" }); control.AddChild(new TextControl { Id = i++, Name = "field2" }); control.AddChild(new CalculationControl { Id = i + 1, Name = "field3", CalculationExpression = "{%field1%}+{%field2%}" }); Application app = new Application(); List<Dictionary<string, object>> repeaterValue = new List<Dictionary<string, object>> { new Dictionary<string, object>() }; repeaterValue[0]["field1"] = "1"; repeaterValue[0]["field2"] = "1"; repeaterValue[0]["field3"] = null; repeaterValue.Add(new Dictionary<string, object>()); repeaterValue[1]["field1"] = "2"; repeaterValue[1]["field2"] = "2"; repeaterValue[1]["field3"] = null; app.ApplicationData["repeater1"] = repeaterValue.ToArray(); MultiExpressionEvaluator evaluator = new MultiExpressionEvaluator(app, controls); ApplicationData result = evaluator.EvaluateAll(); var repeater = (Dictionary<string, object>[])result["repeater1"]; Assert.AreEqual(repeater[0]["field3"], "2"); Assert.AreEqual(repeater[1]["field3"], "4"); }