Пример #1
0
 public void TestPeekReadLineOnEmptyStream()
 {
     using (var stream = new MemoryStream())
         using (var bufferedReader = new LineBufferedReader(stream))
         {
             Assert.IsNull(bufferedReader.PeekLine());
             Assert.IsNull(bufferedReader.ReadLine());
             Assert.IsNull(bufferedReader.ReadLine());
             Assert.IsNull(bufferedReader.PeekLine());
         }
 }
Пример #2
0
        public void TestPeekLineAtEndOfStream()
        {
            const string contents = "first line\r\nsecond line";

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(contents)))
                using (var bufferedReader = new LineBufferedReader(stream))
                {
                    Assert.AreEqual("first line", bufferedReader.ReadLine());
                    Assert.AreEqual("second line", bufferedReader.ReadLine());
                    Assert.IsNull(bufferedReader.PeekLine());
                    Assert.IsNull(bufferedReader.ReadLine());
                    Assert.IsNull(bufferedReader.PeekLine());
                }
        }
Пример #3
0
        protected override BeatmapSetInfo?CreateModel(ArchiveReader reader)
        {
            // let's make sure there are actually .osu files to import.
            string?mapName = reader.Filenames.FirstOrDefault(f => f.EndsWith(".osu", StringComparison.OrdinalIgnoreCase));

            if (string.IsNullOrEmpty(mapName))
            {
                Logger.Log($"No beatmap files found in the beatmap archive ({reader.Name}).", LoggingTarget.Database);
                return(null);
            }

            Beatmap beatmap;

            using (var stream = new LineBufferedReader(reader.GetStream(mapName)))
            {
                if (stream.PeekLine() == null)
                {
                    Logger.Log($"No content found in first .osu file of beatmap archive ({reader.Name} / {mapName})", LoggingTarget.Database);
                    return(null);
                }

                beatmap = Decoder.GetDecoder <Beatmap>(stream).Decode(stream);
            }

            return(new BeatmapSetInfo
            {
                OnlineID = beatmap.BeatmapInfo.BeatmapSet?.OnlineID ?? -1,
                // Metadata = beatmap.Metadata,
                DateAdded = DateTimeOffset.UtcNow
            });
        }
Пример #4
0
        public void TestPeekLineMultipleTimes()
        {
            const string contents = "peek this once\nline 2\rpeek this a lot";

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(contents)))
                using (var bufferedReader = new LineBufferedReader(stream))
                {
                    Assert.AreEqual("peek this once", bufferedReader.PeekLine());
                    Assert.AreEqual("peek this once", bufferedReader.ReadLine());
                    Assert.AreEqual("line 2", bufferedReader.ReadLine());
                    Assert.AreEqual("peek this a lot", bufferedReader.PeekLine());
                    Assert.AreEqual("peek this a lot", bufferedReader.PeekLine());
                    Assert.AreEqual("peek this a lot", bufferedReader.PeekLine());
                    Assert.AreEqual("peek this a lot", bufferedReader.ReadLine());
                    Assert.IsNull(bufferedReader.ReadLine());
                }
        }
Пример #5
0
        public void TestPeekLineOnce()
        {
            const string contents = "line 1\r\npeek this\nline 3";

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(contents)))
                using (var bufferedReader = new LineBufferedReader(stream))
                {
                    Assert.AreEqual("line 1", bufferedReader.ReadLine());
                    Assert.AreEqual("peek this", bufferedReader.PeekLine());
                    Assert.AreEqual("peek this", bufferedReader.ReadLine());
                    Assert.AreEqual("line 3", bufferedReader.ReadLine());
                    Assert.IsNull(bufferedReader.ReadLine());
                }
        }
Пример #6
0
        public void TestReadToEndAfterReadsAndPeeks()
        {
            const string contents = "this line is gone\rthis one shouldn't be\r\nthese ones\ndefinitely not";

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(contents)))
                using (var bufferedReader = new LineBufferedReader(stream))
                {
                    Assert.AreEqual("this line is gone", bufferedReader.ReadLine());
                    Assert.AreEqual("this one shouldn't be", bufferedReader.PeekLine());

                    string[] endingLines = bufferedReader.ReadToEnd().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    Assert.AreEqual(3, endingLines.Length);
                    Assert.AreEqual("this one shouldn't be", endingLines[0]);
                    Assert.AreEqual("these ones", endingLines[1]);
                    Assert.AreEqual("definitely not", endingLines[2]);
                }
        }
Пример #7
0
        public void TestReadToEndAfterReadsAndPeeks()
        {
            const string contents = @"this line is gone
this one shouldn't be
these ones
definitely not";

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(contents)))
                using (var bufferedReader = new LineBufferedReader(stream))
                {
                    Assert.AreEqual("this line is gone", bufferedReader.ReadLine());
                    Assert.AreEqual("this one shouldn't be", bufferedReader.PeekLine());
                    const string ending = @"this one shouldn't be
these ones
definitely not";
                    Assert.AreEqual(ending, bufferedReader.ReadToEnd());
                }
        }