private static bool CompareCreationToFile(ref OMODCreationOptions ops, ref OMOD omod) { if (ops.Name != omod.ModName) { return(false); } if (ops.Author != omod.Author) { return(false); } if (ops.Email != omod.Email) { return(false); } if (ops.Website != omod.Website) { return(false); } if (ops.Description != omod.Description) { return(false); } if (ops.MajorVersion != omod.MajorVersion) { return(false); } if (ops.MinorVersion != omod.MinorVersion) { return(false); } if (ops.BuildVersion != omod.BuildVersion) { return(false); } if (ops.CompressionType != omod.Compression) { return(false); } return(true); }
public void TestOMODCreation() { var imageFile = Path.Combine("files", "image.png"); Assert.True(File.Exists(imageFile)); using var bitmap = (Bitmap)Image.FromFile(imageFile); var dataFile = Path.Combine("files", "data.txt"); var pluginFile = Path.Combine("files", "plugin.esp"); Assert.True(File.Exists(dataFile)); Assert.True(File.Exists(pluginFile)); var options = new OMODCreationOptions(new Version(1, 2, 3)) { Name = "erri120's Mod", Author = "erri120", Email = "*****@*****.**", Description = "The best mod in existence", Website = "https://github.com/erri120/OMODFramework", CompressionType = CompressionType.SevenZip, OMODCompressionLevel = CompressionLevel.Optimal, Readme = "This mod is very nice.", Script = "Some script", Image = bitmap, DataFiles = new List <OMODCreationFile> { new OMODCreationFile(dataFile, "data.txt") }, PluginFiles = new List <OMODCreationFile> { new OMODCreationFile(pluginFile, "plugin.esp") } }; using var ms = OMODCreation.CreateOMOD(options); using var omod = new OMOD(ms); Assert.Equal(options.Name, omod.Config.Name); Assert.Equal(options.Author, omod.Config.Author); Assert.Equal(options.Email, omod.Config.Email); Assert.Equal(options.Description, omod.Config.Description); Assert.Equal(options.Website, omod.Config.Website); Assert.Equal(options.CompressionType, omod.Config.CompressionType); Assert.Equal(options.Version, omod.Config.Version); var readme = omod.GetReadme(); Assert.Equal(options.Readme, readme); var script = omod.GetScript(); Assert.Equal(options.Script, script); var image = omod.GetImage(); Assert.Equal(options.Image.Size, image.Size); options.Image.Dispose(); var dataFiles = omod.GetDataFiles(); var pluginFiles = omod.GetPluginFiles(); Assert.Single(dataFiles); Assert.Single(pluginFiles); }
public void EndToEnd() { // Creation var ops = new OMODCreationOptions { Name = "I love, love... moist towelettes", Author = "erri120", Email = "*****@*****.**", Website = "https://github.com/erri120", Description = "The best OMOD you can find on the internet!", Image = "", MajorVersion = 6, MinorVersion = 6, BuildVersion = 6, CompressionType = CompressionType.SevenZip, DataFileCompressionLevel = CompressionLevel.High, OMODCompressionLevel = CompressionLevel.Medium, ESPs = new List <string>(0), ESPPaths = new List <string>(0), DataFiles = ModFiles, DataFilePaths = FolderStructure, Readme = Readme, Script = Script }; OMOD.CreateOMOD(ops, OMODFile); Assert.IsTrue(File.Exists(OMODFile)); // Test parsing var omod = new OMOD(OMODFile); Assert.IsNotNull(omod); Assert.IsTrue(CompareCreationToFile(ref ops, ref omod)); // Test extraction var data = omod.GetDataFiles(); var fList1 = new List <FileInfo>(); var fList2 = new List <FileInfo>(); Directory.GetFiles("files", "*", SearchOption.AllDirectories).Do(f => { fList1.Add(new FileInfo(f)); }); Directory.GetFiles(data, "*", SearchOption.AllDirectories).Do(f => { fList2.Add(new FileInfo(f)); }); Assert.IsTrue(fList1.Count == fList2.Count); for (var i = 0; i < fList1.Count; i++) { var f1 = fList1[i]; var f2 = fList2[i]; Assert.IsTrue(Equals(f1, f2, Path.GetFullPath("files"), data)); } // Test scripting var scriptFunctions = new ScriptFunctions(); var srd = ScriptRunner.RunScript(omod, scriptFunctions, data); Assert.IsNotNull(srd); Assert.IsTrue(!srd.CancelInstall); Assert.IsTrue(srd.CopyDataFiles.Count == 1 && srd.CopyDataFiles.TryGetValue(new ScriptCopyDataFile("A\\A.txt", "meshes\\a.txt"), out _)); Assert.IsTrue(srd.InstallData.Contains("something.txt")); }
public void TestCreation() { if (File.Exists("test.omod")) { File.Delete("test.omod"); } Directory.CreateDirectory(Path.Combine(Framework.Settings.TempPath, "text_files")); var file1 = Path.Combine(Framework.Settings.TempPath, "file.txt"); var file2 = Path.Combine(Framework.Settings.TempPath, "file2.txt"); var file3 = Path.Combine(Framework.Settings.TempPath, "text_files", "file3.txt"); var text1 = "This is some text"; var text2 = "This is more text"; var text3 = "MORE TEXT !!!!!!!!"; File.WriteAllText(file1, text1); File.WriteAllText(file2, text2); File.WriteAllText(file3, text3); var ops = new OMODCreationOptions { Name = "Test OMOD", Author = "erri120", Email = "*****@*****.**", Website = "https://github.com/erri120", Description = "The best OMOD you can find on the internet!", Image = "", MajorVersion = 1, MinorVersion = 0, BuildVersion = 0, CompressionType = CompressionType.SevenZip, DataFileCompressionLevel = CompressionLevel.Medium, OMODCompressionLevel = CompressionLevel.Medium, ESPs = new List <string>(0), ESPPaths = new List <string>(0), DataFiles = new List <string> { file1, file2, file3 }, DataFilePaths = new List <string> { "file.txt", "file2.txt", "text_files\\file3.txt" }, Readme = "", Script = "" }; OMOD.CreateOMOD(ops, "test.omod"); Assert.IsTrue(File.Exists("test.omod")); var omod = new OMOD("test.omod"); Assert.IsNotNull(omod); Assert.IsTrue(omod.ModName == ops.Name); Assert.IsTrue(omod.Author == ops.Author); Assert.IsTrue(omod.AllPlugins.Count == ops.ESPs.Count); Assert.IsTrue(omod.AllDataFiles.Count == ops.DataFiles.Count); var data = omod.GetDataFiles(); Directory.EnumerateFiles(data, "*", SearchOption.AllDirectories).Do(file => { var contents = File.ReadAllText(file); Assert.IsTrue(contents == text1 || contents == text2 || contents == text3); }); }