// Copyright Keysight Technologies 2012-2019 // 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 System; using System.Linq; using System.Xml.Linq; namespace OpenTap.Plugins { /// Serializer for MacroString values. internal class MacroStringSerializer : TapSerializerPlugin { /// Tries to deserialize a MacroString. This is just a simple string value XML element, but it tries to find the step context for the MacroString. public override bool Deserialize( XElement node, ITypeData t, Action setter) { if (t.IsA(typeof(MacroString)) == false) return false; string text = node.Value; var obj = Serializer.SerializerStack.OfType().FirstOrDefault(); if (obj != null) { setter(new MacroString(obj.Object as ITestStep) { Text = text }); } else { setter(new MacroString { Text = text }); } return true; } /// Serializes a MacroString. it just sets the text as the value. MacroString should be compatible with string in XML. public override bool Serialize( XElement node, object obj, ITypeData expectedType) { if (obj is MacroString == false) return false; node.SetValue(((MacroString)obj).Text); return true; } } }