public static LightScript Deserialize(TreeNode<YamlObject> tree) { var commandRoot = new TreeNode<Command>(); foreach (var yamlCommandNode in tree) DeserializeCommandsRecursively(commandRoot, yamlCommandNode); var lightScript = new LightScript(commandRoot); YamlSerializer.DeserializeSimpleProperties(lightScript, tree); return lightScript; }
public override void SaveObject <T>(string path, T objToWrite) { try { var yamlTree = Serialize(objToWrite as LightTestFixture); var text = YamlSerializer.SerializeYamlTree(yamlTree); File.WriteAllText(path, text); } catch (Exception e) { Logger.Log(LogType.Error, "Failed to write to file: " + path, e.Message); } }
public static TreeNode<YamlObject> Serialize(LightScript script, int level = 0) { var scriptObject = new YamlObject(level, script.GetType().Name, ""); var tree = new TreeNode<YamlObject>(scriptObject); foreach (var n in YamlSerializer.SerializeSimpleProperties(script, level + 1)) tree.AddChild(n); foreach (var node in script.Commands) SerializeCommandsRecursively(tree, node, level + 1); return tree; }
public override T LoadObject <T>(string path) { try { var text = File.ReadAllText(path); var yamlTree = YamlSerializer.DeserializeYamlTree(text); var s = Deserialize(yamlTree); return((T)((object)s)); } catch (Exception e) { Logger.Log(LogType.Error, "Failed to read from file: " + path, e.Message); } return(default(T)); }
public static TreeNode <YamlObject> Serialize(Command command, int level) { var commandObject = new YamlObject(level, command.GetType().Name, ""); var tree = new TreeNode <YamlObject>(commandObject); tree.AddChild(new YamlObject(level + 1, "<Guid>k__BackingField", command.Guid)); var objs = YamlSerializer.SerializeSimpleProperties(command, level + 1); foreach (var o in objs) { tree.AddChild(o); } return(tree); }
public static Command Deserialize(TreeNode <YamlObject> tree) { // TODO: These two lines take a lot of time, and they will be called a lot of times!!! var allCommandTypes = AppDomain.CurrentDomain.GetAllTypesWhichImplementInterface(typeof(Command)); var commandType = allCommandTypes.FirstOrDefault(type => type.Name.Equals(tree.value.property)); if (commandType == null) { return(null); } var command = (Command)Activator.CreateInstance(commandType); YamlSerializer.DeserializeSimpleProperties(command, tree); return(command); }
public static LightTestFixture Deserialize(TreeNode <YamlObject> tree) { var root = new TreeNode <LightScript>(); var fixture = new LightTestFixture(); YamlSerializer.DeserializeSimpleProperties(fixture, tree); foreach (var yamlScriptNode in tree) { var s = YamlScriptIO.Deserialize(yamlScriptNode); if (s == null || s.Name == null && s.Commands.Count() == 0) // Test fixture name is also part of the tree, so skip it { continue; } fixture.AddScript(Script.FromLightScript(s)); } return(fixture); }
public static TreeNode <YamlObject> Serialize(LightTestFixture fixture) { var level = 0; var fixtureObject = new YamlObject(level, fixture.GetType().Name, ""); var tree = new TreeNode <YamlObject>(fixtureObject); foreach (var n in YamlSerializer.SerializeSimpleProperties(fixture, level + 1)) { tree.AddChild(n); } tree.Join(YamlScriptIO.Serialize(fixture.Setup.ToLightScript(), level + 1)); tree.Join(YamlScriptIO.Serialize(fixture.TearDown.ToLightScript(), level + 1)); tree.Join(YamlScriptIO.Serialize(fixture.OneTimeSetup.ToLightScript(), level + 1)); tree.Join(YamlScriptIO.Serialize(fixture.OneTimeTeardown.ToLightScript(), level + 1)); foreach (var t in fixture.Tests) { tree.Join(YamlScriptIO.Serialize(t.ToLightScript(), level + 1)); } return(tree); }