public void FillSubElements(Object data) { VISite.Logger.Event("Fill elements: '" + Name + "'".LineBreak() + "With data: " + data); GethValueElements.Select(_ => _.Value).Where(_ => _.FillRule != null) .ForEach(element => { try { element.SetValue(element.FillRule(data)); } catch (Exception ex) { VISite.Alerting.ThrowError("Error in FillSubElements. Element '" + element.Name + "'. Data '" + data + "' Exception: " + ex); } }); }
public bool CompareValuesWith(Object data, out string resultText, Func <string, string, bool> compareFunc = null) { VISite.Logger.Event("Check Form values: '" + Name + "'".LineBreak() + "With data: " + data); var result = true; resultText = ""; compareFunc = compareFunc ?? VIElement.DefaultCompareFunc; var elements = GethValueElements.Select(_ => _.Value).Where(_ => _.FillRule != null); foreach (var element in elements) { try { var expected = element.FillRule(data); var expectedEnum = expected as IEnumerable <Object>; if (expectedEnum == null) { if (!compareFunc(element.Value, expected.ToString())) { GetResult(string.Format("Error in CompareValuesWith for element '{0}'. Actual: {1}; Expected: {2}", element.Name, element.Value, expected), out result, out resultText); break; } } else { var expecctedList = expectedEnum.Select(el => el.ToString()).ToArray(); var actualList = element.Value.Split(',').Select(el => el.Trim()).ToArray(); if (actualList.Count() != expecctedList.Count()) { GetResult(string.Format("Error in CompareValuesWith for element '{0}'. Different Count of Elements: {1}(Actual), {2}(Expected); Actual List: {3}; Expected List: {4}", element.Name, actualList.Count(), expecctedList.Count(), element.Value, expecctedList.Print()), out result, out resultText); break; } Array.Sort(expecctedList); Array.Sort(actualList); if (actualList.Print() != expecctedList.Print()) { GetResult(string.Format("Error in CompareValuesWith for element '{0}'. Actual: {1}; Expected: {2}", element.Name, element.Value, expecctedList.Print()), out result, out resultText); break; } } } catch (Exception ex) { VISite.Alerting.ThrowError("Error in CompareValuesWith for element '" + element.Name + "'. Exception: " + ex); } } return(result); }