public void ReadNextReadsAllSource()
        {
            string source = "1 2" + System.Environment.NewLine + "3456" + System.Environment.NewLine + "789";
            SourceReader sourceReader = new SourceReader(new StringReader(source));

            StringBuilder sourceBuilder = new StringBuilder();
            while(!sourceReader.Empty)
                sourceBuilder.Append(sourceReader.ReadNext());

            Assert.AreEqual(source, sourceBuilder.ToString());
        }
        public void ReadNextUpdatesPosition()
        {
            string source = "1 2" + System.Environment.NewLine + "3456" + System.Environment.NewLine + "789";
            SourceReader sourceReader = new SourceReader(new StringReader(source));

            Assert.IsFalse(sourceReader.Empty);
            Assert.AreEqual(0, sourceReader.Line);
            Assert.AreEqual(-1, sourceReader.Column);

            Assert.AreEqual('1', sourceReader.ReadNext());
            Assert.AreEqual(0, sourceReader.Line);
            Assert.AreEqual(0, sourceReader.Column);

            Assert.AreEqual(' ', sourceReader.ReadNext());
            Assert.AreEqual('2', sourceReader.ReadNext());
            Assert.AreEqual('\r', sourceReader.ReadNext());
            Assert.AreEqual('\n', sourceReader.ReadNext());

            Assert.AreEqual('3', sourceReader.ReadNext());
            Assert.AreEqual(1, sourceReader.Line);
            Assert.AreEqual(0, sourceReader.Column);

            Assert.AreEqual('4', sourceReader.ReadNext());
            Assert.AreEqual(1, sourceReader.Line);
            Assert.AreEqual(1, sourceReader.Column);

            Assert.AreEqual('5', sourceReader.ReadNext());
            Assert.AreEqual('6', sourceReader.ReadNext());
            Assert.AreEqual('\r', sourceReader.ReadNext());
            Assert.AreEqual('\n', sourceReader.ReadNext());

            Assert.AreEqual('7', sourceReader.ReadNext());
            Assert.AreEqual(2   , sourceReader.Line);
            Assert.AreEqual(0, sourceReader.Column);
        }
 public void ReadNextThrowsInvalidOperationExceptionOnEmptyReader()
 {
     SourceReader sourceReader = new SourceReader(new StringReader(string.Empty));
     sourceReader.ReadNext();
 }