public void TestGetJsonDecoder() { Decoder <Beatmap> decoder; using (var stream = TestResources.OpenResource(normal)) using (var sr = new LineBufferedReader(stream)) { var legacyDecoded = new LegacyBeatmapDecoder { ApplyOffsets = false }.Decode(sr); using (var memStream = new MemoryStream()) using (var memWriter = new StreamWriter(memStream)) using (var memReader = new LineBufferedReader(memStream)) { memWriter.Write(legacyDecoded.Serialize()); memWriter.Flush(); memStream.Position = 0; decoder = Decoder.GetDecoder <Beatmap>(memReader); } } Assert.IsInstanceOf(typeof(JsonBeatmapDecoder), decoder); }
/// <summary> /// Reads a .osu file first with a <see cref="LegacyBeatmapDecoder"/>, serializes the resulting <see cref="Beatmap"/> to JSON /// and then deserializes the result back into a <see cref="Beatmap"/> through an <see cref="JsonBeatmapDecoder"/>. /// </summary> /// <param name="filename">The .osu file to decode.</param> /// <returns>The <see cref="Beatmap"/> after being decoded by an <see cref="LegacyBeatmapDecoder"/>.</returns> private (Beatmap legacyDecoded, Beatmap jsonDecoded) decode(string filename) { using (var stream = Resource.OpenResource(filename)) using (var sr = new StreamReader(stream)) { var legacyDecoded = new LegacyBeatmapDecoder().DecodeBeatmap(sr); using (var ms = new MemoryStream()) using (var sw = new StreamWriter(ms)) using (var sr2 = new StreamReader(ms)) { sw.Write(legacyDecoded.Serialize()); sw.Flush(); ms.Position = 0; return(legacyDecoded, new JsonBeatmapDecoder().DecodeBeatmap(sr2)); } } }
/// <summary> /// Reads a .osu file first with a <see cref="LegacyBeatmapDecoder"/>, serializes the resulting <see cref="Beatmap"/> to JSON /// and then deserializes the result back into a <see cref="Beatmap"/> through an <see cref="JsonBeatmapDecoder"/>. /// </summary> /// <param name="filename">The .osu file to decode.</param> /// <param name="jsonDecoded">The <see cref="Beatmap"/> after being decoded by an <see cref="JsonBeatmapDecoder"/>.</param> /// <returns>The <see cref="Beatmap"/> after being decoded by an <see cref="LegacyBeatmapDecoder"/>.</returns> private Beatmap decode(string filename, out Beatmap jsonDecoded) { using (var stream = TestResources.OpenResource(filename)) using (var sr = new StreamReader(stream)) { var legacyDecoded = new LegacyBeatmapDecoder { ApplyOffsets = false }.Decode(sr); using (var ms = new MemoryStream()) using (var sw = new StreamWriter(ms)) using (var sr2 = new StreamReader(ms)) { sw.Write(legacyDecoded.Serialize()); sw.Flush(); ms.Position = 0; jsonDecoded = new JsonBeatmapDecoder().Decode(sr2); return(legacyDecoded); } } }