Example #1
0
        private (IEnumerable <INameValue> head, string query, string data, IEnumerable <IFormDataParameters> conditions) GetEnvironmentInputVariables(IExecutionEnvironment environment, int update)
        {
            IEnumerable <INameValue> head = null;

            if (Headers != null)
            {
                head = Headers.Select(a => new NameValue(ExecutionEnvironment.WarewolfEvalResultToString(environment.Eval(a.Name, update)), ExecutionEnvironment.WarewolfEvalResultToString(environment.Eval(a.Value, update))));
                if (IsFormDataChecked)
                {
                    var headersHelper = new WebRequestHeadersHelper(notEvaluatedHeaders: Headers, evaluatedHeaders: head);
                    head = headersHelper.CalculateFormDataContentType();
                }
            }
            var query = string.Empty;

            if (QueryString != null)
            {
                query = ExecutionEnvironment.WarewolfEvalResultToString(environment.Eval(QueryString, update));
            }
            var postData = string.Empty;

            if (PostData != null && IsManualChecked)
            {
                postData = ExecutionEnvironment.WarewolfEvalResultToString(environment.Eval(PostData, update, true));
            }
            var conditions = new List <IFormDataParameters>();

            if ((Conditions ?? (Conditions = new List <FormDataConditionExpression>())).Any() && IsFormDataChecked)
            {
                _errorsTo  = new ErrorResultTO();
                conditions = Conditions.SelectMany(o => o.Eval(GetArgumentsFunc, _errorsTo.HasErrors())).ToList();
            }

            IEnumerable <string[]> GetArgumentsFunc(string col1s, string col2s, string col3s)
            {
                var col1 = environment.EvalAsList(col1s, 0, true);
                var col2 = environment.EvalAsList(col2s ?? "", 0, true);
                var col3 = environment.EvalAsList(col3s ?? "", 0, true);

                var iter = new WarewolfListIterator();
                var c1   = new WarewolfAtomIterator(col1);
                var c2   = new WarewolfAtomIterator(col2);
                var c3   = new WarewolfAtomIterator(col3);

                iter.AddVariableToIterateOn(c1);
                iter.AddVariableToIterateOn(c2);
                iter.AddVariableToIterateOn(c3);

                while (iter.HasMoreData())
                {
                    var item = new[] { iter.FetchNextValue(c1), iter.FetchNextValue(c2), iter.FetchNextValue(c3) };
                    yield return(item);
                }
                yield break;
            }

            return(head, query, postData, conditions);
        }
        public void GivenEmptyListResult_WarewolfAtomIterator_HasMoreData_ShouldReturnFalse()
        {
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>();
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);

            Assert.IsNotNull(warewolfAtomIterator);
            var hasMoreData = warewolfAtomIterator.HasMoreData();

            Assert.IsFalse(hasMoreData);
        }
        public void WarewolfAtomIterator_GetLength_ShouldBeEqualToMaxVal_AreEqual_ExpectTrue()
        {
            //-------------------------Arrange--------------------------
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>();
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);
            //-------------------------Act------------------------------
            var length = warewolfAtomIterator.GetLength();

            //-------------------------Assert---------------------------
            Assert.AreEqual(0, length);
        }
        public void WarewolfAtomIterator_HasMoreData_GivenEmptyListResult_ExpectFalse()
        {
            //-------------------------Arrange--------------------------
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>();
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);
            //-------------------------Assert---------------------------
            var hasMoreData = warewolfAtomIterator.HasMoreData();

            //-------------------------Act------------------------------
            Assert.IsFalse(hasMoreData);
        }
        public void WarewolfAtomIterator_GetNextValue_ShouldReturn()
        {
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>();
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);

            Assert.IsNotNull(warewolfAtomIterator);
            var privateObj = new PrivateObject(warewolfAtomIterator);

            privateObj.GetField("_listResult");
            warewolfAtomIterator.GetNextValue();
        }
        public void WarewolfAtomIterator_GetNextValue_IsNotNull_ExpectTrue()
        {
            //-------------------------Arrange--------------------------
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>();
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);

            //-------------------------Act------------------------------
            warewolfAtomIterator.GetNextValue();
            //-------------------------Assert---------------------------
            Assert.IsNotNull(warewolfAtomIterator);
        }
        public void GivenListResultIsNull_WarewolfAtomIterator_GetNextValue_ShouldReturnNull()
        {
            var warewolfAtomIterator = new WarewolfAtomIterator(new List <DataStorage.WarewolfAtom>());

            Assert.IsNotNull(warewolfAtomIterator);
            var privateObj = new PrivateObject(warewolfAtomIterator);

            privateObj.GetField("_listResult");
            privateObj.SetField("_listResult", null);
            Assert.IsNotNull(warewolfAtomIterator);
            Assert.IsNull(warewolfAtomIterator.GetNextValue());
        }
        public void NewInstance_ShouldHave_Constructor()
        {
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>();
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);

            Assert.IsNotNull(warewolfAtomIterator);
            var privateObj = new PrivateObject(warewolfAtomIterator);
            var listRes    = privateObj.GetField("_listResult");
            var maxVal     = privateObj.GetField("_maxValue");

            Assert.IsNotNull(listRes);
            Assert.IsNotNull(maxVal);
        }
        static bool RunBetween(IEnumerable <DataASTMutable.WarewolfAtom> warewolfAtoms, IEnumerable <DataASTMutable.WarewolfAtom> tovals, DataASTMutable.WarewolfAtom a)
        {
            WarewolfListIterator iterator = new WarewolfListIterator();
            var from = new WarewolfAtomIterator(warewolfAtoms);
            var to   = new WarewolfAtomIterator(tovals);

            iterator.AddVariableToIterateOn(@from);
            iterator.AddVariableToIterateOn(to);
            while (iterator.HasMoreData())
            {
                var fromval = iterator.FetchNextValue(@from);
                var toVal   = iterator.FetchNextValue(to);

                DateTime fromDt;
                if (DateTime.TryParse(fromval, out fromDt))
                {
                    DateTime toDt;
                    if (!DateTime.TryParse(toVal, out toDt))
                    {
                        throw new InvalidDataException("IsBetween Numeric and DateTime mis-match");
                    }
                    DateTime recDateTime;
                    if (DateTime.TryParse(a.ToString(), out recDateTime))
                    {
                        if (recDateTime > fromDt && recDateTime < toDt)
                        {
                            return(true);
                        }
                    }
                }
                double fromNum;
                if (double.TryParse(fromval, out fromNum))
                {
                    double toNum;
                    if (!double.TryParse(toVal, out toNum))
                    {
                        return(false);
                    }
                    double recNum;
                    if (!double.TryParse(a.ToString(), out recNum))
                    {
                        continue;
                    }
                    if (recNum > fromNum && recNum < toNum)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        public void WarewolfAtomIterator_GetLength_ShouldBeEqualToMaxVal()
        {
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>();
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);

            Assert.IsNotNull(warewolfAtomIterator);
            var privateObj = new PrivateObject(warewolfAtomIterator);
            var maxVal     = (int)privateObj.GetField("_maxValue");

            Assert.IsNotNull(maxVal);
            var length = warewolfAtomIterator.GetLength();

            Assert.AreEqual(maxVal, length);
        }
        public void WarewolfAtomIterator_GetNextValue_AreEqual_ExpectTrue()
        {
            //-------------------------Arrange--------------------------
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>
            {
                DataStorage.WarewolfAtom.NewDataString("a"),
                DataStorage.WarewolfAtom.NewDataString("b"),
                DataStorage.WarewolfAtom.NewDataString("c")
            };
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);
            //-------------------------Act------------------------------
            var value = warewolfAtomIterator.GetNextValue();

            //-------------------------Assert---------------------------
            Assert.AreEqual(listResult.First(), value);
        }
        public void GivenListRes_WarewolfAtomIterator_GetNextValue_ShouldReturn()
        {
            IEnumerable <DataStorage.WarewolfAtom> listResult = new List <DataStorage.WarewolfAtom>
            {
                DataStorage.WarewolfAtom.NewDataString("a"),
                DataStorage.WarewolfAtom.NewDataString("b"),
                DataStorage.WarewolfAtom.NewDataString("c")
            };
            var warewolfAtomIterator = new WarewolfAtomIterator(listResult);

            Assert.IsNotNull(warewolfAtomIterator);
            var privateObj = new PrivateObject(warewolfAtomIterator);

            privateObj.GetField("_listResult");
            var value = warewolfAtomIterator.GetNextValue();

            Assert.AreEqual(listResult.First(), value);
        }
Example #13
0
#pragma warning disable S1541 // Methods and properties should not be too complex
#pragma warning disable S3776 // Cognitive Complexity of methods should not be too high
        static bool RunBetween(IEnumerable <DataStorage.WarewolfAtom> warewolfAtoms, IEnumerable <DataStorage.WarewolfAtom> tovals, DataStorage.WarewolfAtom a)
#pragma warning restore S3776 // Cognitive Complexity of methods should not be too high
#pragma warning restore S1541 // Methods and properties should not be too complex
        {
            var iterator = new WarewolfListIterator();
            var from     = new WarewolfAtomIterator(warewolfAtoms);
            var to       = new WarewolfAtomIterator(tovals);

            iterator.AddVariableToIterateOn(@from);
            iterator.AddVariableToIterateOn(to);
            while (iterator.HasMoreData())
            {
                var fromval = iterator.FetchNextValue(@from);
                var toVal   = iterator.FetchNextValue(to);

                if (DateTime.TryParse(fromval, out DateTime fromDt))
                {
                    if (!DateTime.TryParse(toVal, out DateTime toDt))
                    {
                        throw new InvalidDataException(ErrorResource.IsBetweenDataTypeMismatch);
                    }
                    if (DateTime.TryParse(a.ToString(), out DateTime recDateTime) && recDateTime > fromDt && recDateTime < toDt)
                    {
                        return(true);
                    }
                }
                if (double.TryParse(fromval, out double fromNum))
                {
                    if (!double.TryParse(toVal, out double toNum))
                    {
                        return(false);
                    }
                    if (!double.TryParse(a.ToString(), out double recNum))
                    {
                        continue;
                    }
                    if (recNum > fromNum && recNum < toNum)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Example #14
0
        static bool RunBetween(IEnumerable <DataStorage.WarewolfAtom> warewolfAtoms, IEnumerable <DataStorage.WarewolfAtom> tovals, DataStorage.WarewolfAtom a)
        {
            var iterator = new WarewolfListIterator();
            var from     = new WarewolfAtomIterator(warewolfAtoms);
            var to       = new WarewolfAtomIterator(tovals);

            iterator.AddVariableToIterateOn(@from);
            iterator.AddVariableToIterateOn(to);
            while (iterator.HasMoreData())
            {
                var fromval = iterator.FetchNextValue(@from);
                var toVal   = iterator.FetchNextValue(to);

                if (DateTime.TryParse(fromval, out DateTime fromDt))
                {
                    if (!DateTime.TryParse(toVal, out DateTime toDt))
                    {
                        throw new InvalidDataException(ErrorResource.IsBetweenDataTypeMismatch);
                    }
                    if (DateTime.TryParse(a.ToString(), out DateTime recDateTime) && recDateTime > fromDt && recDateTime < toDt)
                    {
                        return(true);
                    }
                }
                if (double.TryParse(fromval, out double fromNum))
                {
                    if (!double.TryParse(toVal, out double toNum))
                    {
                        return(false);
                    }
                    if (!double.TryParse(a.ToString(), out double recNum))
                    {
                        continue;
                    }
                    if (recNum > fromNum && recNum < toNum)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        private IEnumerable <string[]> getTestArgumentsFunc(string col1s, string col2s, string col3s)
        {
            var col1 = _dataObject.Environment.EvalAsList(col1s, 0, false);
            var col2 = _dataObject.Environment.EvalAsList(col2s ?? "", 0, false);
            var col3 = _dataObject.Environment.EvalAsList(col3s ?? "", 0, false);

            var iter = new WarewolfListIterator();
            var c1   = new WarewolfAtomIterator(col1);
            var c2   = new WarewolfAtomIterator(col2);
            var c3   = new WarewolfAtomIterator(col3);

            iter.AddVariableToIterateOn(c1);
            iter.AddVariableToIterateOn(c2);
            iter.AddVariableToIterateOn(c3);

            while (iter.HasMoreData())
            {
                var item = new[] { iter.FetchNextValue(c1), iter.FetchNextValue(c2), iter.FetchNextValue(c3) };
                yield return(item);
            }
            yield break;
        }
Example #16
0
        public override IDev2Activity Execute(IDSFDataObject dataObject, int update)
        {
            ErrorResultTO allErrors = new ErrorResultTO();

            try
            {
                InitializeDebug(dataObject);


                if (dataObject.IsDebugMode())
                {
                    _debugInputs = CreateDebugInputs(dataObject.Environment);
                    DispatchDebugState(dataObject, StateType.Before, 0);
                }

                var stack = Conditions.TheStack.Select(a => ParseDecision(dataObject.Environment, a));


                var factory = Dev2DecisionFactory.Instance();
                var res     = stack.SelectMany(a =>
                {
                    if (a.EvaluationFn == enDecisionType.IsError)
                    {
                        return(new[] { dataObject.Environment.AllErrors.Count > 0 });
                    }
                    if (a.EvaluationFn == enDecisionType.IsNotError)
                    {
                        return(new[] { dataObject.Environment.AllErrors.Count == 0 });
                    }
                    IList <bool> ret = new List <bool>();
                    var iter         = new WarewolfListIterator();
                    var c1           = new WarewolfAtomIterator(a.Cols1);
                    var c2           = new WarewolfAtomIterator(a.Cols2);
                    var c3           = new WarewolfAtomIterator(a.Cols3);
                    iter.AddVariableToIterateOn(c1);
                    iter.AddVariableToIterateOn(c2);
                    iter.AddVariableToIterateOn(c3);
                    while (iter.HasMoreData())
                    {
                        ret.Add(factory.FetchDecisionFunction(a.EvaluationFn).Invoke(new[] { iter.FetchNextValue(c1), iter.FetchNextValue(c2), iter.FetchNextValue(c3) }));
                    }
                    return(ret);
                });
                var resultval = And ? res.Aggregate(true, (a, b) => a && b) : res.Any(a => a);
                if (dataObject.IsDebugMode())
                {
                    _debugOutputs = GetDebugOutputs(resultval.ToString());
                }

                if (resultval)
                {
                    if (TrueArm != null)
                    {
                        var activity = TrueArm.FirstOrDefault();
                        return(activity);
                    }
                }
                else
                {
                    if (FalseArm != null)
                    {
                        var activity = FalseArm.FirstOrDefault();
                        return(activity);
                    }
                }
            }
            catch (Exception e)
            {
                allErrors.AddError(e.Message);
            }
            finally
            {
                // Handle Errors
                var hasErrors = allErrors.HasErrors();
                if (hasErrors)
                {
                    DisplayAndWriteError("DsfDeleteRecordsActivity", allErrors);
                    var errorString = allErrors.MakeDisplayReady();
                    dataObject.Environment.AddError(errorString);
                }
            }
            if (dataObject.IsDebugMode())
            {
                _debugOutputs = new List <DebugItem>();
                _debugOutputs = new List <DebugItem>();
                DispatchDebugState(dataObject, StateType.Duration, update);
            }
            return(null);
        }
Example #17
0
#pragma warning disable S1541 // Methods and properties should not be too complex
#pragma warning disable S3776 // Cognitive Complexity of methods should not be too high
        IDev2Activity ExecuteDecision(IDSFDataObject dataObject)
#pragma warning restore S3776 // Cognitive Complexity of methods should not be too high
#pragma warning restore S1541 // Methods and properties should not be too complex
        {
            InitializeDebug(dataObject);

            if (dataObject.IsDebugMode())
            {
                _debugInputs = CreateDebugInputs(dataObject.Environment);
                DispatchDebugState(dataObject, StateType.Before, 0);
            }

            var errorIfNull = !Conditions.TheStack.Any(decision => decision.EvaluationFn == enDecisionType.IsNull || decision.EvaluationFn == enDecisionType.IsNotNull);

            var stack = Conditions.TheStack.Select(a => ParseDecision(dataObject.Environment, a, errorIfNull));

            var factory = Dev2DecisionFactory.Instance();
            var res     = stack.SelectMany(a =>
            {
                if (a.EvaluationFn == enDecisionType.IsError)
                {
                    return(new[] { dataObject.Environment.AllErrors.Count > 0 });
                }
                if (a.EvaluationFn == enDecisionType.IsNotError)
                {
                    return(new[] { dataObject.Environment.AllErrors.Count == 0 });
                }
                IList <bool> ret = new List <bool>();
                var iter         = new WarewolfListIterator();
                var c1           = new WarewolfAtomIterator(a.Cols1);
                var c2           = new WarewolfAtomIterator(a.Cols2);
                var c3           = new WarewolfAtomIterator(a.Cols3);
                iter.AddVariableToIterateOn(c1);
                iter.AddVariableToIterateOn(c2);
                iter.AddVariableToIterateOn(c3);
                while (iter.HasMoreData())
                {
                    try
                    {
                        ret.Add(factory.FetchDecisionFunction(a.EvaluationFn).Invoke(new[] { iter.FetchNextValue(c1), iter.FetchNextValue(c2), iter.FetchNextValue(c3) }));
                    }
                    catch (Exception)
                    {
                        if (errorIfNull)
                        {
                            throw;
                        }
                        ret.Add(false);
                    }
                }
                return(ret);
            });

            var results   = res as IList <bool> ?? res.ToList();
            var resultval = true;

            if (results.Any())
            {
                if (And)
                {
                    if (results.Any(b => !b))
                    {
                        resultval = false;
                    }
                }
                else
                {
                    resultval = results.Any(b => b);
                }
            }

            Result = GetResultString(resultval.ToString(), Conditions);
            if (dataObject.IsDebugMode())
            {
                _debugOutputs = GetDebugOutputs(resultval.ToString());
            }
            if (resultval)
            {
                if (TrueArm != null)
                {
                    var activity = TrueArm.FirstOrDefault();
                    return(activity);
                }
            }
            else
            {
                if (FalseArm != null)
                {
                    var activity = FalseArm.FirstOrDefault();
                    return(activity);
                }
            }

            return(null);
        }
Example #18
0
        private static IEnumerable <TestRunResult> GetTestRunResults(IDSFDataObject dataObject, IServiceTestOutput output, Dev2DecisionFactory factory, IDebugState debugState)
        {
            if (output == null)
            {
                var testResult = new TestRunResult
                {
                    RunTestResult = RunResult.None
                };
                return(new List <TestRunResult> {
                    testResult
                });
            }
            if (string.IsNullOrEmpty(output.Variable) && string.IsNullOrEmpty(output.Value))
            {
                var testResult = new TestRunResult
                {
                    RunTestResult = RunResult.None
                };
                output.Result = testResult;
                return(new List <TestRunResult> {
                    testResult
                });
            }
            if (output.Result != null)
            {
                output.Result.RunTestResult = RunResult.TestInvalid;
            }
            if (string.IsNullOrEmpty(output.Variable))
            {
                var testResult = new TestRunResult
                {
                    RunTestResult = RunResult.TestInvalid,
                    Message       = Messages.Test_NothingToAssert
                };
                output.Result = testResult;
                if (dataObject.IsDebugMode())
                {
                    var       debugItemStaticDataParams = new DebugItemServiceTestStaticDataParams(testResult.Message, true);
                    DebugItem itemToAdd = new DebugItem();
                    itemToAdd.AddRange(debugItemStaticDataParams.GetDebugItemResult());
                    debugState.AssertResultList.Add(itemToAdd);
                }
                return(new List <TestRunResult> {
                    testResult
                });
            }
            IFindRecsetOptions opt = FindRecsetOptions.FindMatch(output.AssertOp);
            var decisionType       = DecisionDisplayHelper.GetValue(output.AssertOp);
            var value = new List <DataStorage.WarewolfAtom> {
                DataStorage.WarewolfAtom.NewDataString(output.Value)
            };
            var from = new List <DataStorage.WarewolfAtom> {
                DataStorage.WarewolfAtom.NewDataString(output.From)
            };
            var to = new List <DataStorage.WarewolfAtom> {
                DataStorage.WarewolfAtom.NewDataString(output.To)
            };

            IList <TestRunResult> ret = new List <TestRunResult>();
            var iter  = new WarewolfListIterator();
            var cols1 = dataObject.Environment.EvalAsList(DataListUtil.AddBracketsToValueIfNotExist(output.Variable), 0);
            var c1    = new WarewolfAtomIterator(cols1);
            var c2    = new WarewolfAtomIterator(value);
            var c3    = new WarewolfAtomIterator(@from);

            if (opt.ArgumentCount > 2)
            {
                c2 = new WarewolfAtomIterator(to);
            }
            iter.AddVariableToIterateOn(c1);
            iter.AddVariableToIterateOn(c2);
            iter.AddVariableToIterateOn(c3);
            while (iter.HasMoreData())
            {
                var val1         = iter.FetchNextValue(c1);
                var val2         = iter.FetchNextValue(c2);
                var val3         = iter.FetchNextValue(c3);
                var assertResult = factory.FetchDecisionFunction(decisionType).Invoke(new[] { val1, val2, val3 });
                var testResult   = new TestRunResult();
                if (assertResult)
                {
                    testResult.RunTestResult = RunResult.TestPassed;
                }
                else
                {
                    testResult.RunTestResult = RunResult.TestFailed;
                    var msg    = DecisionDisplayHelper.GetFailureMessage(decisionType);
                    var actMsg = string.Format(msg, val2, output.Variable, val1, val3);
                    testResult.Message = new StringBuilder(testResult.Message).AppendLine(actMsg).ToString();
                }
                if (dataObject.IsDebugMode())
                {
                    var msg = testResult.Message;
                    if (testResult.RunTestResult == RunResult.TestPassed)
                    {
                        msg = Messages.Test_PassedResult;
                    }

                    var hasError = testResult.RunTestResult == RunResult.TestFailed;

                    var       debugItemStaticDataParams = new DebugItemServiceTestStaticDataParams(msg, hasError);
                    DebugItem itemToAdd = new DebugItem();
                    itemToAdd.AddRange(debugItemStaticDataParams.GetDebugItemResult());

                    if (debugState.AssertResultList != null)
                    {
                        bool addItem = debugState.AssertResultList.Select(debugItem => debugItem.ResultsList.Where(debugItemResult => debugItemResult.Value == Messages.Test_PassedResult)).All(debugItemResults => !debugItemResults.Any());

                        if (addItem)
                        {
                            debugState.AssertResultList.Add(itemToAdd);
                        }
                    }
                }
                output.Result = testResult;
                ret.Add(testResult);
            }
            return(ret);
        }
Example #19
0
        private IEnumerable <TestRunResult> GetTestRunResults(IDSFDataObject dataObject, IServiceTestOutput output, Dev2DecisionFactory factory)
        {
            var expressionType     = output.AssertOp ?? string.Empty;
            IFindRecsetOptions opt = FindRecsetOptions.FindMatch(expressionType);
            var decisionType       = DecisionDisplayHelper.GetValue(expressionType);

            if (decisionType == enDecisionType.IsError)
            {
                var hasErrors  = dataObject.Environment.AllErrors.Count > 0;
                var testResult = new TestRunResult();
                if (hasErrors)
                {
                    testResult.RunTestResult = RunResult.TestPassed;
                }
                else
                {
                    testResult.RunTestResult = RunResult.TestFailed;
                    var msg    = DecisionDisplayHelper.GetFailureMessage(decisionType);
                    var actMsg = string.Format(msg);
                    testResult.Message = new StringBuilder(testResult.Message).AppendLine(actMsg).ToString();
                }
                return(new[] { testResult });
            }
            if (decisionType == enDecisionType.IsNotError)
            {
                var noErrors   = dataObject.Environment.AllErrors.Count == 0;
                var testResult = new TestRunResult();
                if (noErrors)
                {
                    testResult.RunTestResult = RunResult.TestPassed;
                }
                else
                {
                    testResult.RunTestResult = RunResult.TestFailed;
                    var msg    = DecisionDisplayHelper.GetFailureMessage(decisionType);
                    var actMsg = string.Format(msg);
                    testResult.Message = new StringBuilder(testResult.Message).AppendLine(actMsg).ToString();
                }
                return(new[] { testResult });
            }
            var value = new List <DataStorage.WarewolfAtom> {
                DataStorage.WarewolfAtom.NewDataString(output.Value)
            };
            var from = new List <DataStorage.WarewolfAtom> {
                DataStorage.WarewolfAtom.NewDataString(output.From)
            };
            var to = new List <DataStorage.WarewolfAtom> {
                DataStorage.WarewolfAtom.NewDataString(output.To)
            };

            IList <TestRunResult> ret = new List <TestRunResult>();
            var iter     = new WarewolfListIterator();
            var variable = DataListUtil.AddBracketsToValueIfNotExist(output.Variable);
            var cols1    = dataObject.Environment.EvalAsList(variable, 0);
            var c1       = new WarewolfAtomIterator(cols1);
            var c2       = new WarewolfAtomIterator(value);
            var c3       = new WarewolfAtomIterator(to);

            if (opt.ArgumentCount > 2)
            {
                c2 = new WarewolfAtomIterator(from);
            }
            iter.AddVariableToIterateOn(c1);
            iter.AddVariableToIterateOn(c2);
            iter.AddVariableToIterateOn(c3);
            while (iter.HasMoreData())
            {
                var val1         = iter.FetchNextValue(c1);
                var val2         = iter.FetchNextValue(c2);
                var val3         = iter.FetchNextValue(c3);
                var assertResult = factory.FetchDecisionFunction(decisionType).Invoke(new[] { val1, val2, val3 });
                var testResult   = new TestRunResult();
                if (assertResult)
                {
                    testResult.RunTestResult = RunResult.TestPassed;
                }
                else
                {
                    testResult.RunTestResult = RunResult.TestFailed;
                    var msg    = DecisionDisplayHelper.GetFailureMessage(decisionType);
                    var actMsg = string.Format(msg, val2, variable, val1, val3);
                    testResult.Message = new StringBuilder(testResult.Message).AppendLine(actMsg).ToString();
                }
                output.Result = testResult;
                ret.Add(testResult);
            }
            return(ret);
        }