using System;
using System.Xml;
using Xunit;
namespace TestUtility{
public class ResultXmlUtility
{
public static void AssertAttribute(XmlNode testNode, string attributeName, string attributeValue)
{
XmlAttribute attrib = testNode.Attributes[attributeName];
if (attrib == null)
throw new ArgumentException("Could not find attribute named " + attributeName + " in XML:\r\n" + testNode.OuterXml);
Assert.Equal(attributeValue, attrib.Value);
}
public static XmlNode GetResult(XmlNode assemblyOrClassNode)
{
return GetResult(assemblyOrClassNode, 0);
}
public static XmlNode GetResult(XmlNode assemblyOrClassNode, int testIndex)
{
if (assemblyOrClassNode.Name == "assembly")
return GetResult(assemblyOrClassNode, 0, testIndex);
return GetResultFromClass(assemblyOrClassNode, testIndex);
}
public static XmlNode GetResult(XmlNode assemblyNode, int classIndex, int testIndex)
{
XmlNodeList classNodes = assemblyNode.SelectNodes("class");
if (classNodes.Count <= classIndex)
throw new ArgumentException("Could not find class item with index " + classIndex + " in XML:\r\n" + assemblyNode.OuterXml);
return GetResultFromClass(classNodes[classIndex], testIndex);
}
public static XmlNode GetResultFromClass(XmlNode classNode, int testIndex)
{
XmlNodeList testNodes = classNode.SelectNodes("test");
if (testNodes.Count <= testIndex)
throw new ArgumentException("Could not find test item with index " + testIndex + " in XML:\r\n" + classNode.OuterXml);
return testNodes[testIndex];
}
public static XmlNode AssertResult(XmlNode assemblyNode, string result, string name)
{
XmlNode node = GetResult(assemblyNode);
AssertAttribute(node, "result", result);
AssertAttribute(node, "name", name);
return node;
}
}
}
|