public void CharAtCorrectlyReturnsLocation() { LineTrackingStringBuffer buffer = new LineTrackingStringBuffer(); buffer.Append("foo\rbar\nbaz\r\nbiz"); LineTrackingStringBuffer.CharacterReference chr = buffer.CharAt(14); Assert.Equal('i', chr.Character); Assert.Equal(new SourceLocation(14, 3, 1), chr.Location); }
private void UpdateState() { if (_position < _buffer.Length) { LineTrackingStringBuffer.CharacterReference chr = _buffer.CharAt(_position); _current = chr.Character; _location = chr.Location; } else if (_buffer.Length == 0) { _current = null; _location = SourceLocation.Zero; } else { _current = null; _location = _buffer.EndLocation; } }