public void CodeWriter_TracksPosition_WithWrite() { // Arrange var writer = new CodeWriter(); // Act writer.Write("1234"); // Assert var location = writer.GetCurrentSourceLocation(); var expected = new SourceLocation(absoluteIndex: 4, lineIndex: 0, characterIndex: 4); Assert.Equal(expected, location); }
public void CodeWriter_TracksPosition_WithNewline_SplitAcrossWrites_AtBeginning() { // Arrange var writer = new CodeWriter(); // Act writer.Write("\r"); var location1 = writer.GetCurrentSourceLocation(); writer.Write("\n"); var location2 = writer.GetCurrentSourceLocation(); // Assert var expected1 = new SourceLocation(absoluteIndex: 1, lineIndex: 1, characterIndex: 0); Assert.Equal(expected1, location1); var expected2 = new SourceLocation(absoluteIndex: 2, lineIndex: 1, characterIndex: 0); Assert.Equal(expected2, location2); }
public void CodeWriter_TracksPosition_WithWrite_WithNewlineInContent_RepeatedN() { // Arrange var writer = new CodeWriter(); // Act writer.Write("1234\n\n123"); // Assert var location = writer.GetCurrentSourceLocation(); var expected = new SourceLocation( absoluteIndex: 9, lineIndex: 2, characterIndex: 3); Assert.Equal(expected, location); }
public void CodeWriter_TracksPosition_WithWrite_WithMixedNewlineInContent() { // Arrange var writer = new CodeWriter(); // Act writer.Write("1234\r123\r\n12\n1"); // Assert var location = writer.GetCurrentSourceLocation(); var expected = new SourceLocation( absoluteIndex: 14, lineIndex: 3, characterIndex: 1); Assert.Equal(expected, location); }
public void CodeWriter_TracksPosition_WithWrite_WithNewlineInContent(string newLine) { // Arrange var writer = new CodeWriter(); // Act writer.Write("1234" + newLine + "123" + newLine + "12"); // Assert var location = writer.GetCurrentSourceLocation(); var expected = new SourceLocation( absoluteIndex: 9 + newLine.Length + newLine.Length, lineIndex: 2, characterIndex: 2); Assert.Equal(expected, location); }