예제 #1
0
        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);
        }
예제 #2
0
        /// <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));
                            }
                }
        }
예제 #3
0
        /// <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);
                            }
                }
        }