예제 #1
0
        public static TestDefinition FromXml(XmlDocument xmlDocument)
        {
            TestDefinition result = new TestDefinition();

            result.CommandText = xmlDocument.SelectSingleNode("/test/sql").InnerText;

            XmlNode expectedRuntimeErrorNode = xmlDocument.SelectSingleNode("/test/expectedRuntimeError");

            if (expectedRuntimeErrorNode != null)
            {
                result.ExpectedRuntimeError = expectedRuntimeErrorNode.InnerText;
            }

            XmlNode expectedErrorsNode = xmlDocument.SelectSingleNode("/test/expectedErrors");

            if (expectedErrorsNode != null)
            {
                List <CompilationError> errorList = new List <CompilationError>();
                foreach (XmlNode expectedErrorNode in expectedErrorsNode.SelectNodes("expectedError"))
                {
                    ErrorId          errorId          = (ErrorId)Enum.Parse(typeof(ErrorId), expectedErrorNode.Attributes["id"].Value);
                    string           errorText        = expectedErrorNode.Attributes["text"].Value;
                    CompilationError compilationError = new CompilationError(SourceRange.Empty, errorId, errorText);
                    errorList.Add(compilationError);
                }

                result.ExpectedCompilationErrors = errorList.ToArray();
            }

            XmlNode expectedResultsNode = xmlDocument.SelectSingleNode("/test/expectedResults");

            if (expectedResultsNode != null)
            {
                using (StringReader stringReader = new StringReader(expectedResultsNode.InnerXml))
                {
                    DataSet dataSet = new DataSet();
                    dataSet.ReadXml(stringReader);
                    result.ExpectedResults = dataSet.Tables[0];
                }
            }

            XmlNode expectedPlanNode = xmlDocument.SelectSingleNode("/test/expectedPlan");

            if (expectedPlanNode != null)
            {
                result.ExpectedPlan = ShowPlan.FromXml(expectedPlanNode);
            }

            return(result);
        }
예제 #2
0
		public static TestDefinition FromXml(XmlDocument xmlDocument)
		{
			TestDefinition result = new TestDefinition();
			result.CommandText = xmlDocument.SelectSingleNode("/test/sql").InnerText;

			XmlNode expectedRuntimeErrorNode = xmlDocument.SelectSingleNode("/test/expectedRuntimeError");
			if (expectedRuntimeErrorNode != null)
				result.ExpectedRuntimeError = expectedRuntimeErrorNode.InnerText;

			XmlNode expectedErrorsNode = xmlDocument.SelectSingleNode("/test/expectedErrors");
			if (expectedErrorsNode != null)
			{
				List<CompilationError> errorList = new List<CompilationError>();
				foreach (XmlNode expectedErrorNode in expectedErrorsNode.SelectNodes("expectedError"))
				{
					ErrorId errorId = (ErrorId) Enum.Parse(typeof(ErrorId), expectedErrorNode.Attributes["id"].Value);
					string errorText = expectedErrorNode.Attributes["text"].Value;
					CompilationError compilationError = new CompilationError(SourceRange.Empty, errorId, errorText);
					errorList.Add(compilationError);
				}

				result.ExpectedCompilationErrors = errorList.ToArray();
			}

			XmlNode expectedResultsNode = xmlDocument.SelectSingleNode("/test/expectedResults");

			if (expectedResultsNode != null)
			{
				using (StringReader stringReader = new StringReader(expectedResultsNode.InnerXml))
				{
					DataSet dataSet = new DataSet();
					dataSet.ReadXml(stringReader);
					result.ExpectedResults = dataSet.Tables[0];
				}
			}

			XmlNode expectedPlanNode = xmlDocument.SelectSingleNode("/test/expectedPlan");
			if (expectedPlanNode != null)
			{
				result.ExpectedPlan = ShowPlan.FromXml(expectedPlanNode);
			}

			return result;
		}
예제 #3
0
        protected static void RunTest(string resNameOfTestDefinition)
        {
            TestDefinition testDefinition = TestDefinition.FromResource(resNameOfTestDefinition);

            if (testDefinition == null)
            {
                Assert.Fail("Could not find test definition XML for test '{0}'.", resNameOfTestDefinition);
            }

            Query query = QueryFactory.CreateQuery();

            query.Text = testDefinition.CommandText;

            CompilationErrorCollection actualCompilationErrors = null;
            string    actualRuntimeError = null;
            ShowPlan  actualPlan         = null;
            DataTable actualResults      = null;

            try
            {
                actualResults = query.ExecuteDataTable();
                actualPlan    = query.GetShowPlan();
            }
            catch (RuntimeException ex)
            {
                actualRuntimeError = ex.Message;
            }
            catch (CompilationException ex)
            {
                actualCompilationErrors = ex.CompilationErrors;
            }

            Assert.AreEqual(testDefinition.ExpectedRuntimeError, actualRuntimeError);
            AssertHelpers.AreEqual(testDefinition.ExpectedCompilationErrors, actualCompilationErrors);
            AssertHelpers.AreEqual(testDefinition.ExpectedResults, actualResults);
            AssertHelpers.AreEqual(testDefinition.ExpectedPlan, actualPlan);
        }