public override void SerializeAsXml(XmlWriter xmlWriter)
        {
            if (xmlWriter == null)
            {
                throw new ArgumentNullException($"{nameof(xmlWriter)} cannot be null.");
            }

            if (this.expressionStr == null)
            {
                this.expressionStr = LinqTestInput.FilterInputExpression(this.Expression.Body.ToString());
            }


            xmlWriter.WriteStartElement("Description");
            xmlWriter.WriteCData(this.Description);
            xmlWriter.WriteEndElement();
            xmlWriter.WriteStartElement("Expression");
            xmlWriter.WriteCData(expressionStr);
            xmlWriter.WriteEndElement();
            if (this.errorMessage != null)
            {
                xmlWriter.WriteStartElement("ErrorMessage");
                xmlWriter.WriteCData(this.errorMessage);
                xmlWriter.WriteEndElement();
            }
        }
Exemple #2
0
        public static LinqTestOutput ExecuteTest(LinqTestInput input)
        {
            string querySqlStr = string.Empty;

            try
            {
                Func <bool, IQueryable> compiledQuery = input.Expression.Compile();

                IQueryable queryResults = compiledQuery(true);
                querySqlStr = JObject.Parse(queryResults.ToString()).GetValue("query", StringComparison.Ordinal).ToString();

                // we skip unordered query because the LinQ results vs actual query results are non-deterministic
                if (!input.skipVerification)
                {
                    IQueryable dataResults = compiledQuery(false);
                    LinqTestsCommon.ValidateResults(queryResults, dataResults);
                }

                return(new LinqTestOutput(querySqlStr));
            }
            catch (Exception e)
            {
                return(new LinqTestOutput(querySqlStr, LinqTestsCommon.BuildExceptionMessageForTest(e)));
            }
        }
        public static LinqTestOutput ExecuteTest(LinqTestInput input)
        {
            var querySqlStr = string.Empty;

            try
            {
                var compiledQuery = input.Expression.Compile();

                var queryResults = compiledQuery(true);
                querySqlStr = JObject.Parse(queryResults.ToString()).GetValue("query", StringComparison.Ordinal).ToString();

                // we skip unordered query because the LinQ results vs actual query results are non-deterministic
                if (!input.skipVerification)
                {
                    var dataResults = compiledQuery(false);
                    LinqTestsCommon.ValidateResults(queryResults, dataResults);
                }

                string errorMsg = null;
                if (input.errorMessage != null)
                {
                    errorMsg = $"Expecting error containing message [[{input.errorMessage}]]. Actual: <No error>";
                }

                return(new LinqTestOutput(querySqlStr, errorMsg, errorMsg != null));
            }
            catch (Exception e)
            {
                while (!(e is DocumentClientException) && e.InnerException != null)
                {
                    e = e.InnerException;
                }

                string message   = null;
                bool   hasFailed = false;
                if (input.errorMessage != null && !e.Message.Contains(input.errorMessage))
                {
                    message   = $"Expecting error containing message [[{input.errorMessage}]]. Actual: [[{e.Message}]]";
                    hasFailed = true;
                }
                else if (input.errorMessage == null)
                {
                    message   = e.Message;
                    hasFailed = true;
                }

                return(new LinqTestOutput(querySqlStr, message, hasFailed));
            }
        }
        public static LinqTestOutput ExecuteTest(LinqTestInput input)
        {
            string querySqlStr = string.Empty;

            try
            {
                Func <bool, IQueryable> compiledQuery = input.Expression.Compile();

                IQueryable queryResults = compiledQuery(true);
                querySqlStr = JObject.Parse(queryResults.ToString()).GetValue("query", StringComparison.Ordinal).ToString();

                // we skip unordered query because the LinQ results vs actual query results are non-deterministic
                if (!input.skipVerification)
                {
                    IQueryable dataResults = compiledQuery(false);
                    LinqTestsCommon.ValidateResults(queryResults, dataResults);
                }

                return(new LinqTestOutput(querySqlStr));
            }
            catch (Exception e)
            {
                while (e.InnerException != null)
                {
                    e = e.InnerException;
                }

                string message;
                if (e is CosmosException cosmosException)
                {
                    message = $"Status Code: {cosmosException.StatusCode}";
                }
                else if (e is DocumentClientException documentClientException)
                {
                    message = documentClientException.RawErrorMessage;
                }
                else
                {
                    message = e.Message;
                }

                return(new LinqTestOutput(querySqlStr, message));
            }
        }
        public static LinqTestOutput ExecuteTest(LinqTestInput input)
        {
            var querySqlStr = string.Empty;

            try
            {
                var compiledQuery = input.Expression.Compile();

                var queryResults = compiledQuery(true);
                querySqlStr = JObject.Parse(queryResults.ToString()).GetValue("query", StringComparison.Ordinal).ToString();

                // we skip unordered query because the LinQ results vs actual query results are non-deterministic
                if (!input.skipVerification)
                {
                    var dataResults = compiledQuery(false);
                    LinqTestsCommon.ValidateResults(queryResults, dataResults);
                }

                return(new LinqTestOutput(querySqlStr));
            }
            catch (Exception e)
            {
                while (!(e is DocumentClientException) && e.InnerException != null)
                {
                    e = e.InnerException;
                }

                string message = null;
                DocumentClientException dce = e as DocumentClientException;
                if (dce != null)
                {
                    message = dce.RawErrorMessage;
                }
                else
                {
                    message = e.Message;
                }

                return(new LinqTestOutput(querySqlStr, message));
            }
        }