From dec89770ee79df14347c9fadccb982031b260389 Mon Sep 17 00:00:00 2001 From: andy840119 Date: Wed, 25 Sep 2024 23:02:03 +0800 Subject: [PATCH] Remove the converter for the singer interface because the singer and singer state are stored into the different list, so there's no need to distinguish type. --- .../Converters/SingerConverterTest.cs | 94 ------------------- .../Converters/SingerConverter.cs | 20 ---- .../KaraokeJsonSerializableExtensions.cs | 3 - 3 files changed, 117 deletions(-) delete mode 100644 osu.Game.Rulesets.Karaoke.Tests/IO/Serialization/Converters/SingerConverterTest.cs delete mode 100644 osu.Game.Rulesets.Karaoke/IO/Serialization/Converters/SingerConverter.cs diff --git a/osu.Game.Rulesets.Karaoke.Tests/IO/Serialization/Converters/SingerConverterTest.cs b/osu.Game.Rulesets.Karaoke.Tests/IO/Serialization/Converters/SingerConverterTest.cs deleted file mode 100644 index dbb49bdd8..000000000 --- a/osu.Game.Rulesets.Karaoke.Tests/IO/Serialization/Converters/SingerConverterTest.cs +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) andy840119 . Licensed under the GPL Licence. -// See the LICENCE file in the repository root for full licence text. - -using System.Collections.Generic; -using Newtonsoft.Json; -using NUnit.Framework; -using osu.Game.Rulesets.Karaoke.Beatmaps; -using osu.Game.Rulesets.Karaoke.Beatmaps.Metadatas; -using osu.Game.Rulesets.Karaoke.Beatmaps.Metadatas.Types; -using osu.Game.Rulesets.Karaoke.IO.Serialization.Converters; -using osu.Game.Rulesets.Karaoke.Tests.Helper; - -namespace osu.Game.Rulesets.Karaoke.Tests.IO.Serialization.Converters; - -public class SingerConverterTest : BaseSingleConverterTest -{ - private static readonly ElementId main_singer_id = TestCaseElementIdHelper.CreateElementIdByNumber(2); - - protected override IEnumerable CreateExtraConverts() - { - yield return new ElementIdConverter(); - } - - [Test] - public void TestMainSingerSerializer() - { - var singer = new Singer(); - - string expected = $"{{\"$type\":\"Singer\",\"id\":\"{singer.ID}\"}}"; - string actual = JsonConvert.SerializeObject(singer, CreateSettings()); - Assert.AreEqual(expected, actual); - } - - [Test] - public void TestMainSingerDeserializer() - { - var expected = new Singer(); - - string json = $"{{\"$type\":\"Singer\",\"id\":\"{expected.ID}\"}}"; - var actual = (Singer)JsonConvert.DeserializeObject(json, CreateSettings())!; - - Assert.AreEqual(expected.ID, actual.ID); - } - - [Test] - public void TestSingerStateSerializer() - { - var singer = new SingerState(main_singer_id); - - string expected = $"{{\"$type\":\"SingerState\",\"id\":\"{singer.ID}\",\"main_singer_id\":\"{singer.MainSingerId}\"}}"; - string actual = JsonConvert.SerializeObject(singer, CreateSettings()); - Assert.AreEqual(expected, actual); - } - - [Test] - public void TestSingerStateDeserializer() - { - var expected = new SingerState(main_singer_id); - - string json = $"{{\"$type\":\"SingerState\",\"id\":\"{expected.ID}\",\"main_singer_id\":\"{expected.MainSingerId}\"}}"; - var actual = (SingerState)JsonConvert.DeserializeObject(json, CreateSettings())!; - - Assert.AreEqual(expected.ID, actual.ID); - Assert.AreEqual(expected.MainSingerId, actual.MainSingerId); - } - - [Test] - public void TestSingerInfoSerializer() - { - var singerInfo = new SingerInfo(); - var singer = singerInfo.AddSinger(); - var singerState = singerInfo.AddSingerState(singer); - - string expected = - $"{{\"singers\":[{{\"$type\":\"Singer\",\"id\":\"{singer.ID}\"}},{{\"$type\":\"SingerState\",\"id\":\"{singerState.ID}\",\"main_singer_id\":\"{singerState.MainSingerId}\"}}]}}"; - string actual = JsonConvert.SerializeObject(singerInfo, CreateSettings()); - Assert.AreEqual(expected, actual); - } - - [Test] - public void TestSingerInfoDeserializer() - { - var singerInfo = new SingerInfo(); - var singer = singerInfo.AddSinger(); - var singerState = singerInfo.AddSingerState(singer); - - string json = $"{{\"singers\":[{{\"$type\":\"Singer\",\"id\":\"{singer.ID}\"}},{{\"$type\":\"SingerState\",\"id\":\"{singerState.ID}\",\"main_singer_id\":\"{singerState.MainSingerId}\"}}]}}"; - var actual = JsonConvert.DeserializeObject(json, CreateSettings())!; - - Assert.AreEqual(singerInfo.Singers.Count, actual.Singers.Count); - Assert.AreEqual(singerInfo.Singers[0].ID, singerInfo.Singers[0].ID); // test singer - Assert.AreEqual(singerInfo.Singers[1].ID, singerInfo.Singers[1].ID); // test sub-singer. - } -} diff --git a/osu.Game.Rulesets.Karaoke/IO/Serialization/Converters/SingerConverter.cs b/osu.Game.Rulesets.Karaoke/IO/Serialization/Converters/SingerConverter.cs deleted file mode 100644 index e48240d17..000000000 --- a/osu.Game.Rulesets.Karaoke/IO/Serialization/Converters/SingerConverter.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) andy840119 . Licensed under the GPL Licence. -// See the LICENCE file in the repository root for full licence text. - -using System; -using System.Diagnostics; -using System.Reflection; -using osu.Game.Rulesets.Karaoke.Beatmaps.Metadatas.Types; - -namespace osu.Game.Rulesets.Karaoke.IO.Serialization.Converters; - -public class SingerConverter : GenericTypeConverter -{ - protected override Type GetTypeByName(string name) - { - var assembly = Assembly.GetExecutingAssembly(); - var type = assembly.GetType($"osu.Game.Rulesets.Karaoke.Beatmaps.Metadatas.{name}"); - Debug.Assert(type != null); - return type; - } -} diff --git a/osu.Game.Rulesets.Karaoke/IO/Serialization/KaraokeJsonSerializableExtensions.cs b/osu.Game.Rulesets.Karaoke/IO/Serialization/KaraokeJsonSerializableExtensions.cs index ab3692f21..2d2efa5df 100644 --- a/osu.Game.Rulesets.Karaoke/IO/Serialization/KaraokeJsonSerializableExtensions.cs +++ b/osu.Game.Rulesets.Karaoke/IO/Serialization/KaraokeJsonSerializableExtensions.cs @@ -13,9 +13,6 @@ public static JsonSerializerSettings CreateGlobalSettings() { var globalSetting = JsonSerializableExtensions.CreateGlobalSettings(); - // karaoke beatmap. - globalSetting.Converters.Add(new SingerConverter()); - // hit-object globalSetting.Converters.Add(new CultureInfoConverter()); globalSetting.Converters.Add(new ElementIdConverter());