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); }
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()); }
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()); }
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)); }
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)); }