using System;
|
using System.Xml.Linq;
|
|
namespace OpenTap.Addin.Reader
|
{
|
public class TestStepListReader : IObjectReader
|
{
|
static XName testStepName = "TestStep";
|
static XName SequenceName = "SequenceName";
|
static XName varName = "Variable";
|
static XName paramName = "Parameters";
|
static XName DebugIds = "DebugIds";
|
|
public override object ReadObject(Type type, XElement element, Action<object> postAction)
|
{
|
if (type != typeof(TestStepList)) return false;
|
var steps = new TestStepList();
|
var sequenceNameAttr = element.Attribute(SequenceName);
|
steps.SequenceName = sequenceNameAttr?.Value ?? string.Empty;
|
foreach (var subnode in element.Elements())
|
{
|
if (subnode.Name == varName)
|
{
|
TestVariable v = (TestVariable)DefaultObjectReader.ReadObject(typeof(TestVariable), subnode, postAction);
|
|
if (v != null)
|
steps.Variables.Add(v);
|
}
|
else if (subnode.Name == paramName)
|
{
|
TestVariable v = (TestVariable)DefaultObjectReader.ReadObject(typeof(TestVariable), subnode, postAction);
|
if (v != null)
|
steps.Parameters.Add(v);
|
}
|
else if (subnode.Name == DebugIds)
|
{
|
Guid id = (Guid)DefaultObjectReader.ReadObject(typeof(Guid), subnode, postAction);
|
|
if (id != Guid.Empty)
|
steps.DebugIds.Add(id);
|
}
|
else
|
{
|
ITestStep result = (ITestStep)DefaultObjectReader.ReadObject(typeof(ITestStep), subnode, postAction);
|
if (result != null)
|
steps.Add(result);
|
}
|
}
|
if (postAction != null) postAction(steps);
|
return steps;
|
}
|
}
|
}
|