Exemple #1
0
 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);
        }
Exemple #3
0
        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);
            });
        }