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); }
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; }
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); }