Forge
csharpdeeb25a2
1using CascadeIDE.Features.Editor.Application.Monaco;
2using Xunit;
3
4namespace CascadeIDE.Tests.MonacoForward;
5
6[Trait("Category", "MonacoForward")]
7public sealed class EditorNavigationLineMappingTests
8{
9 [Fact]
10 public void SelectionOffsetsFromLines_single_line_range()
11 {
12 var text = "abcdef";
13 var (start, length) = EditorNavigationLineMapping.SelectionOffsetsFromLines(
14 text, startLine: 1, startColumn: 2, endLine: 1, endColumn: 4);
15 Assert.Equal(1, start);
16 Assert.Equal(2, length);
17 }
18
19 [Fact]
20 public void SelectionOffsetsFromLines_multiline_uses_end_of_line_overflow()
21 {
22 var text = "aa\nbb\ncc";
23 var (start, length) = EditorNavigationLineMapping.SelectionOffsetsFromLines(
24 text, startLine: 1, startColumn: 1, endLine: 2, endColumn: null);
25 Assert.Equal(0, start);
26 Assert.Equal(5, length);
27 }
28
29 [Fact]
30 public void OffsetFromLineColumn_second_line_first_column()
31 {
32 var text = "a\nbc";
33 Assert.Equal(2, EditorNavigationLineMapping.OffsetFromLineColumn(text, lineOneBased: 2, columnOneBased: 1));
34 }
35}
36
View only · write via MCP/CIDE