Esempio n. 1
0
        public void PositionedStreamReaderBufferSize()
        {
            using (var memStream = new MemoryStream())
            {
                // Setting streams up
                var      writer = new StreamWriter(memStream);
                string[] values = new[] {
                    new string('1', 1024) + '\n',                     // 1025: 1 over buffer size
                    new string('1', 1023) + '\n',                     // 1024: exactly the buffer size, but 1 over the 1024 line block due to the previous
                    new string('1', 1022) + '\n',                     // 1023: 1 less then the buffer size, should now match the line block again
                    new string('1', 1024)
                };
                foreach (var val in values)
                {
                    writer.Write(val);
                }
                writer.Flush();

                memStream.Seek(0, SeekOrigin.Begin);
                var reader = new PositionedStreamReader(memStream);

                int pos = 0;
                foreach (var val in values)
                {
                    var line = reader.ReadLine();
                    pos += val.Length;

                    Assert.AreEqual(val.TrimEnd(new[] { '\r', '\n' }), line);
                    Assert.AreEqual(pos, reader.ReadPosition);
                }
            }
        }
Esempio n. 2
0
 public void CloseFile()
 {
     if (fileReader != null)
     {
         fileReader.Dispose();
         fileReader = null;
     }
     if (fileStream != null)
     {
         fileStream.Dispose();
         fileStream = null;
     }
 }
Esempio n. 3
0
        public void OpenFile(string path)
        {
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }
            historyFile = new FileInfo(path);

            CloseFile();
            Clear();

            fileStream = historyFile.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
            fileReader = new PositionedStreamReader(fileStream, FileEncoding);
            VersionCheckAndUpgrade();
            RestoreFromFile();
        }
Esempio n. 4
0
        public void PositionedStreamReaderLineEndings()
        {
            using (var memStream = new MemoryStream())
            {
                // Setting streams up
                var      writer = new StreamWriter(memStream);
                string[] values =
                {
                    "11\n",
                    "22\n",
                    "33\n",
                    "44\r",
                    "55\r",
                    "66\r",
                    "77\r\n",
                    "88\r\n",
                    "99\r\n",
                    "xx\n",  "\r",
                    "yy\n",  "\r",
                    "zz\n",  "\r",
                    "a\r",
                    "b\n",
                    "c\r\n",
                    "d\n",   "\r",
                    "e"
                };
                foreach (var val in values)
                {
                    writer.Write(val);
                }
                writer.Flush();

                memStream.Seek(0, SeekOrigin.Begin);
                var reader = new PositionedStreamReader(memStream);

                int pos = 0;
                foreach (var val in values)
                {
                    var line = reader.ReadLine();
                    pos += val.Length;

                    Assert.AreEqual(val.TrimEnd(new[] { '\r', '\n' }), line);
                    Assert.AreEqual(pos, reader.ReadPosition);
                }
            }
        }