Ejemplo n.º 1
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"));
        }
Ejemplo n.º 2
0
        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);
            });
        }