public void ModRefParseTestWithLayout()
        {
            var data    = @"
{
    'name':'My Mod Name',
    'dependencies': [
        'FullResolved',
        {
            'identifier':'12313',
            'modtype':1
        },
        {
            'identifier':'654987',
            'modtype':1
        }
    ]
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Equal(2, modinfo.Dependencies.Count);
            Assert.Equal("12313", modinfo.Dependencies[0].Identifier);
            Assert.Equal("654987", modinfo.Dependencies[1].Identifier);
            Assert.Equal(DependencyResolveLayout.FullResolved, modinfo.Dependencies.ResolveLayout);
        }
예제 #2
0
        private IModinfo Parse()
        {
            var fs   = File.FileSystem;
            var text = fs.File.ReadAllText(File.FullName);

            return(ModinfoData.Parse(text));
        }
        public void SteamDataParse()
        {
            var data    = @"
{
    'name':'My Mod Name',
    'steamdata': {
        'publishedfileid':'123',
        'contentfolder':'path',
        'visibility':0,
        'title':'test',
        'tags':[
            'foc', 'eaw'
        ]
    }
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.NotNull(modinfo.SteamData);
            Assert.Equal("123", modinfo.SteamData !.Id);
            Assert.Equal("test", modinfo.SteamData.Title);
            Assert.Equal("path", modinfo.SteamData.ContentFolder);
            Assert.Equal(SteamWorkshopVisibility.Public, modinfo.SteamData.Visibility);
            Assert.Null(modinfo.SteamData.Metadata);
            Assert.Equal(2, modinfo.SteamData.Tags.Count());
        }
예제 #4
0
        public void TestVariantFile3()
        {
            var main = new ModinfoData("Main")
            {
                Version      = new Version(1, 1, 1),
                Dependencies = new DependencyList(new IModReference[] { new ModReference {
                                                                            Identifier = "123", Type = ModType.Workshops
                                                                        } }, DependencyResolveLayout.FullResolved)
            };

            var file = ModinfoDataUtils.CreateVariantFile(new MockFileSystem(), "mods/A");

            IModinfoFile modinfoFile = new ModinfoVariantFile(file, main);

            Assert.Equal(ModinfoFileKind.VariantFile, modinfoFile.FileKind);

            Assert.Null(Record.Exception(modinfoFile.ValidateFile));
            Assert.Null(Record.Exception(modinfoFile.GetModinfo));
            Assert.Null(Record.ExceptionAsync(modinfoFile.GetModinfoAsync).Result);

            var data = modinfoFile.GetModinfo();

            Assert.Equal(new Version(1, 1, 1), data.Version);
            Assert.Single(data.Dependencies);
        }
        public void WriterTest()
        {
            var modinfo = new ModinfoData("Test")
            {
                Version = new Version(1, 1, 1, "BETA")
            };
            var data = modinfo.ToJson(false);

            Assert.Contains(@"""version"": ""1.1.1-BETA""", data);
            Assert.DoesNotContain(@"""custom"":", data);
        }
        public void WriterTestModRefRange()
        {
            var modinfo = new ModinfoData("Test")
            {
                Dependencies = new DependencyList(new List <IModReference> {
                    new ModReference("123", ModType.Default, new Range("1.x"))
                }, DependencyResolveLayout.ResolveRecursive)
            };
            var data = modinfo.ToJson(false);

            Assert.Contains(@"""version-range"": ""1.x""", data);
        }
        public void TolerantVersionParseTest()
        {
            var data    = @"
{
    'name':'My Mod Name',
    'version': '1.0'
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Equal(new Version(1, 0, 0), modinfo.Version);
        }
        public void ModRefParseTest1()
        {
            var data    = @"
{
    'name':'My Mod Name'
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Equal(0, modinfo.Dependencies.Count);
            Assert.Equal(DependencyResolveLayout.ResolveRecursive, modinfo.Dependencies.ResolveLayout);
        }
        public void WriterTestDependencyList()
        {
            var modinfo = new ModinfoData("Test")
            {
                Dependencies = new DependencyList(new List <IModReference> {
                    new ModReference("123", ModType.Default)
                }, DependencyResolveLayout.FullResolved)
            };
            var data = modinfo.ToJson(false);

            Assert.Contains(@"""FullResolved"",", data);
        }
        public void LangParseTest5()
        {
            var data    = @"
{
    'name':'My Mod Name'
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Single(modinfo.Languages);
            Assert.Equal("en", modinfo.Languages.ElementAt(0).Code);
            Assert.Equal(LanguageSupportLevel.FullLocalized, modinfo.Languages.ElementAt(0).Support);
        }
        public void VersionParseTest()
        {
            var data = @"
{
    'name':'My Mod Name',
    'version':'1.1.1-BETA'
}";

            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Equal(new Version(1, 1, 1, "BETA"), modinfo.Version);
        }
        public void MinimalParseTest()
        {
            var data = @"
{
    'name':'My Mod Name'
}";

            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Null(modinfo.Version);
            Assert.Null(modinfo.SteamData);
        }
        public void CustomParseTest()
        {
            var data    = @"
{
    'name':'My Mod Name',
    'custom': {
        
    }
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Equal(0, modinfo.Custom.Count);
        }
        public void LangParseTest1()
        {
            var data    = @"
{
    'name':'My Mod Name',
    'languages':[
        {
            'code':'en'
        }
    ]
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Single(modinfo.Languages);
        }
        public void CustomParseTest1()
        {
            var data    = @"
{
    'name':'My Mod Name',
    'custom': {
        'test-key':{},
        'test-key2':'123',
    }
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Equal(2, modinfo.Custom.Count);
            Assert.Equal("123", modinfo.Custom["test-key2"]);
            Assert.Equal(new JObject(), modinfo.Custom["test-key"]);
        }
        public void LangParseTest2()
        {
            var data    = @"
{
    'name':'My Mod Name',
    'languages':[
        {
            'code':'en'
        },
        {
            'code':'de'
        }
    ]
}";
            var modinfo = ModinfoData.Parse(data);

            Assert.Equal("My Mod Name", modinfo.Name);
            Assert.Equal(2, modinfo.Languages.Count());
        }
예제 #17
0
        public void Merge()
        {
            var mainData = new ModinfoData("Mod")
            {
                Icon = "icon.ico",
                Languages = new[] {new LanguageInfo { Code = "en"}},
                Dependencies = new DependencyList(new IModReference[] { new ModReference { Identifier = "bla" } }, DependencyResolveLayout.FullResolved),
                Custom = new Dictionary<string, object> { { "testKey1", "value" } }
            };

            var variantData = new ModinfoData("Variant of Mod")
            {
                Languages = new[] {new LanguageInfo { Code = "en"}, new LanguageInfo { Code = "de"}},
                SteamData = new JsonSteamData {Id = "123", Tags = new[] {"FOC"}, ContentFolder = "bla", Title = "Title"},
                Custom = new Dictionary<string, object> { { "testKey2", "value" } },
                Dependencies = new DependencyList(new IModReference[]
                {
                    new ModReference {Identifier = "bla"}, new ModReference {Identifier = "blub"}
                }, DependencyResolveLayout.FullResolved),
                Version = Version.Parse("1.2.2")
            };

            var newData = variantData.MergeInto(mainData);
            
            Assert.Equal(variantData.Name, newData.Name);
            Assert.Equal(mainData.Icon, newData.Icon);
            Assert.Equal(2, newData.Languages.Count());
            Assert.Equal(2, newData.Dependencies.Count);
            Assert.Equal("bla", newData.Dependencies[0].Identifier);
            Assert.NotSame(mainData.Dependencies[0], newData.Dependencies[0]);
            Assert.NotNull(newData.SteamData);
            Assert.Equal(variantData.SteamData!.Id, newData.SteamData?.Id);
            Assert.Equal(variantData.SteamData!.Title, newData.SteamData?.Title);
            Assert.Equal(2, newData.Custom.Count);
            Assert.Equal(new Version(1,2,2), newData.Version);
            Assert.Equal(variantData.Version, newData.Version);


            var invalid = new InvalidModinfoMock();
            Assert.Throws<ModinfoException>(() => invalid.MergeInto(newData));
            Assert.Throws<ModinfoException>(() => newData.MergeInto(invalid));
        }
        public void ModRefParseTestFailure2()
        {
            var data = @"
{
    'name':'My Mod Name',
    'dependencies': [
        'BlaBlub',
        {
            'identifier':'12313',
            'modtype':1
        },
        {
            'identifier':'654987',
            'modtype':1
        }
    ]
}";

            Assert.Throws <ModinfoParseException>(() => ModinfoData.Parse(data));
        }
예제 #19
0
        private async Task <IModinfo> ParseAsync()
        {
            var text = await ReadTextAsync().ConfigureAwait(false);

            return(await Task.Run(() => ModinfoData.Parse(text)).ConfigureAwait(false));
        }
        public void ModIdentityEqualCheck()
        {
            IModIdentity i1 = new ModinfoData("A");
            IModIdentity i2 = new ModIdentity("A");

            Assert.Equal(i1, i2);

            IModIdentity i3 = new ModinfoData("A")
            {
                Version = new Version(1, 1, 1)
            };
            IModIdentity i4 = new ModIdentity("A")
            {
                Version = new Version(1, 1, 1)
            };

            Assert.Equal(i3, i4);
            Assert.NotEqual(i3, i1);

            IModIdentity i5 = new ModinfoData("B");

            Assert.NotEqual(i1, i5);

            var d1 = new ModReference {
                Type = ModType.Default, Identifier = "A"
            };
            var d2 = new ModReference {
                Type = ModType.Default, Identifier = "A"
            };
            var d3 = new ModReference {
                Type = ModType.Default, Identifier = "B"
            };

            Assert.Equal(d1, d2);

            IModIdentity i6 = new ModinfoData("A")
            {
                Dependencies = new DependencyList(new IModReference[] { d1, d3 }, DependencyResolveLayout.FullResolved)
            };
            IModIdentity i7 = new ModIdentity("A")
            {
                Dependencies = new DependencyList(new IModReference[] { d2, d3 }, DependencyResolveLayout.FullResolved)
            };
            IModIdentity i8 = new ModIdentity("A")
            {
                Dependencies = new DependencyList(new IModReference[] { d2 }, DependencyResolveLayout.FullResolved)
            };
            IModIdentity i9 = new ModIdentity("A")
            {
                Dependencies = new DependencyList(new IModReference[] { d3, d1 }, DependencyResolveLayout.FullResolved)
            };
            IModIdentity i10 = new ModinfoData("A")
            {
                Dependencies = new DependencyList(new IModReference[] { d1 }, DependencyResolveLayout.FullResolved)
            };

            Assert.Equal(i6, i7);
            Assert.NotEqual(i6, i8);
            Assert.NotEqual(i6, i9);
            Assert.Equal(i8, i10);
        }
 public static IMod CreateMod(IGame game, ModType type, string modPath, ModinfoData modInfo)
 {
     return(CreateMod(game, type, new DirectoryInfo(modPath), modInfo));
 }
 public static IMod CreateMod(IGame game, ModType type, DirectoryInfo directory, ModinfoData modinfo)
 {
     return(CreateMod(game, type, directory, modinfo, false));
 }
 public void FailingParseTest(string data)
 {
     Assert.Throws <ModinfoParseException>(() => ModinfoData.Parse(data));
 }