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 SerializeCompareValueString()
 {
     IfTruthCondition rootCondition = new IfTruthCondition();
     TruthConditionList conditionList = new TruthConditionList();
     CompareTruthCondition compareCondition = new CompareTruthCondition();
     conditionList.Add(compareCondition);
     rootCondition.Value = conditionList;
     CompareDefinition compareDefinition = new CompareDefinition();
     compareCondition.Value = compareDefinition;
     compareDefinition.Value = "test";
     string serialized = JsonConvert.SerializeObject(rootCondition);
     Assert.IsTrue(serialized.Contains("\"Value\":\"test\""));
 }
 public void SerializeCompareValueArray()
 {
     IfTruthCondition rootCondition = new IfTruthCondition();
     TruthConditionList conditionList = new TruthConditionList();
     CompareTruthCondition compareCondition = new CompareTruthCondition();
     conditionList.Add(compareCondition);
     rootCondition.Value = conditionList;
     CompareDefinition compareDefinition = new CompareDefinition();
     compareCondition.Value = compareDefinition;
     compareDefinition.Value = new[] { "test1", "test2" };
     string serialized = JsonConvert.SerializeObject(rootCondition);
     Assert.IsTrue(serialized.Contains("\"Value\":[\"test1\",\"test2\"]"));
 }
            public void TestInitialize()
            {
                ControlList list = new ControlList
                                   {
                                       new TextControl
                                       {
                                           Id = 1,
                                           Name = "textbox1"
                                       },
                                       new TextControl
                                       {
                                           Id = 2,
                                           Name = "textbox2"
                                       }
                                   };

                TruthConditionList hideRuleValue = new TruthConditionList
                                                   {
                                                       new CompareTruthCondition
                                                       {
                                                           Value = new CompareDefinition
                                                                   {
                                                                       CompareTo = ComparisonType.Value,
                                                                       Field = "textbox1",
                                                                       Operator = Operator.Equals,
                                                                       Value = string.Empty
                                                                   }
                                                       }
                                                   };
                list[1].VisibilityRule = new HideTruthCondition { Value = hideRuleValue };

                TruthConditionList pageValidators = new TruthConditionList();
                TruthConditionList pageValidatorValue = new TruthConditionList
                                                        {
                                                            new CompareTruthCondition
                                                            {
                                                                Value = new CompareDefinition
                                                                        {
                                                                            CompareTo = ComparisonType.Value,
                                                                            Field = "textbox2",
                                                                            Operator = Operator.Equals,
                                                                            Value = string.Empty
                                                                        }
                                                            }
                                                        };
                pageValidators.Add(new ValidateTruthCondition { Error = new ValidationError { Message = "test", Position = "2" }, Value = pageValidatorValue });

                this.validator = new ApplicationValidator(list, pageRules: pageValidators, validatorList: this.validatorList);
            }