| | |
| | | // This Source Code Form is subject to the terms of the Mozilla Public |
| | | // License, v. 2.0. If a copy of the MPL was not distributed with this |
| | | // file, you can obtain one at http://mozilla.org/MPL/2.0/. |
| | | using OpenTap.Addin; |
| | | using System; |
| | | using System.Xml.Linq; |
| | | |
| | |
| | | steps.SequenceName = sequenceNameAttr?.Value ?? string.Empty; |
| | | foreach (var subnode in elem.Elements()) |
| | | { |
| | | if (subnode.Name == varName) |
| | | { |
| | | TestVariable v = null; |
| | | try |
| | | { |
| | | if (!Serializer.Deserialize(subnode, x => v = (TestVariable)x)) |
| | | { |
| | | Serializer.PushError(subnode, "Unable to deserialize test step."); |
| | | continue; // skip to next step. |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Serializer.PushError(subnode, "Unable to deserialize test step.", ex); |
| | | continue; |
| | | } |
| | | |
| | | if (v != null) |
| | | steps.Variables.Add(v); |
| | | } |
| | | else |
| | | { |
| | | ITestStep result = null; |
| | | try |
| | | { |
| | |
| | | if (result != null) |
| | | steps.Add(result); |
| | | } |
| | | } |
| | | setResult(steps); |
| | | return true; |
| | | } |
| | | |
| | | static XName testStepName = "TestStep"; |
| | | static XName varName = "Variable"; |
| | | /// <summary> Serialization implementation. </summary> |
| | | public override bool Serialize( XElement elem, object target, ITypeData expectedType) |
| | | { |
| | |
| | | Serializer.Serialize(newelem, item, null, true); |
| | | elem.Add(newelem); |
| | | } |
| | | var vars = list.Variables; |
| | | if (vars != null && vars.Count > 0) |
| | | { |
| | | for (int i = 0; i < vars.Count; i++) |
| | | { |
| | | var item = vars[i]; |
| | | var newelem = new XElement(varName); |
| | | Serializer.Serialize(newelem, item, null, true); |
| | | elem.Add(newelem); |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | return false; |