Exemple #1
0
        /// <summary>
        /// Runs the specified test specification.
        /// </summary>
        /// <param name="specification">The test specification to run.</param>
        /// <returns>
        /// The result of running the test specification.
        /// </returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="specification"/> is <c>null</c>.</exception>
        public ResultCentricAggregateQueryTestResult Run(ResultCentricAggregateQueryTestSpecification specification)
        {
            if (specification == null)
            {
                throw new ArgumentNullException(nameof(specification));
            }
            var sut = specification.SutFactory();

            sut.Initialize(specification.Givens);
            object queryResult = null;
            var    result      = Catch.Exception(() => queryResult = specification.When(sut));

            if (result.HasValue)
            {
                return(specification.Fail(result.Value));
            }
#if NET20
            using (var enumerator = _comparer.Compare(queryResult, specification.Then).GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    return(specification.Fail(queryResult));
                }
            }
#else
            if (_comparer.Compare(queryResult, specification.Then).Any())
            {
                return(specification.Fail(queryResult));
            }
#endif
            if (sut.HasChanges())
            {
#if NET20
                return(specification.Fail(new List <object>(sut.GetChanges())));
#else
                return(specification.Fail(sut.GetChanges().ToArray()));
#endif
            }
            return(specification.Pass());
        }
Exemple #2
0
        public void Process(IEnumerable <AgentThreadResult> results)
        {
            foreach (var result in results)
            {
                Grade grade = null;
                if (result.Request.ExpectedResult != null)
                {
                    string contentType;

                    if (!result.Request.Metadata.Result.Payload.Headers.TryGetValue("Content-Type", out contentType))
                    {
                        contentType = "text/plain";
                    }

                    var             header   = MediaTypeHeaderValue.Parse(contentType);
                    IResultComparer comparer = ComparerFactory.GetByContentType(header.MediaType);

                    grade = comparer.Compare(result.Request.ExpectedResult, result.Request.Metadata.Result);
                }

                result.Request.Metadata.Grade = grade;

                if (grade == null)
                {
                    Undefined++;
                }
                else if (grade.Passed)
                {
                    Passed++;
                }
                else
                {
                    Failed++;
                }
            }

            // only add root level request with no parents
            var rootRequests = results.Where(r => string.IsNullOrWhiteSpace(r.Request.Metadata.ParentId)).Select(r => r.Request);

            Requests = rootRequests;
        }