package common import ( "config-lsp/utils" "github.com/google/go-cmp/cmp" "testing" ) func TestSplitIntoVirtualLinesSimpleExample( t *testing.T, ) { input := utils.Dedent(` Hello World \ how are you `) expected := []VirtualLine{ { LocationRange: LocationRange{ Start: Location{ Line: 0, Character: 0, }, End: Location{ Line: 0, Character: 5, }, }, Parts: []VirtualLinePart{ { LocationRange: LocationRange{ Start: Location{ Line: 0, Character: 0, }, End: Location{ Line: 0, Character: 5, }, }, Text: "Hello", }, }, }, { LocationRange: LocationRange{ Start: Location{ Line: 1, Character: 0, }, End: Location{ Line: 2, Character: 11, }, }, Parts: []VirtualLinePart{ { LocationRange: LocationRange{ Start: Location{ Line: 1, Character: 0, }, End: Location{ Line: 1, Character: 6, }, }, Text: "World ", }, { LocationRange: LocationRange{ Start: Location{ Line: 2, Character: 0, }, End: Location{ Line: 2, Character: 11, }, }, Text: "how are you", }, }, }, } lines := SplitIntoVirtualLines(input) if !cmp.Equal(expected, lines) { t.Fatalf("Expected %v, got %v", expected, lines) } expectedText := "World how are you" actualText := lines[1].GetText() if expectedText != actualText { t.Fatalf("Expected %v, got %v", expectedText, actualText) } expectedText = "rld how are" actualText = lines[1].GetText()[2:13] if expectedText != actualText { t.Fatalf("Expected %v, got %v", expectedText, actualText) } expectedRanges := []LocationRange{ { Start: Location{ Line: 1, Character: 2, }, End: Location{ Line: 1, Character: 6, }, }, { Start: Location{ Line: 2, Character: 0, }, End: Location{ Line: 2, Character: 7, }, }, } actualRanges := lines[1].ConvertRangeToTextRange(2, 13) if !cmp.Equal(expectedRanges, actualRanges) { t.Fatalf("Expected %v, got %v", expectedRanges, actualRanges) } } // func TestSplitIntoVirtualLinesIndentedExample( // t *testing.T, // ) { // // 4 spaces // input := utils.Dedent(` // Hello // `) // expected := []VirtualLine{ // { // LocationRange: LocationRange{ // Start: Location{ // Line: 0, // Character: 4, // }, // End: Location{ // Line: 0, // Character: 9, // }, // }, // Parts: []VirtualLinePart{ // { // LocationRange: LocationRange{ // Start: Location{ // Line: 0, // Character: 4, // }, // End: Location{ // Line: 0, // Character: 9, // }, // }, // Text: "Hello", // }, // }, // }, // } // // actual := SplitIntoVirtualLines(input) // // for index, line := range actual { // actual[index] = line.AsTrimmed() // } // // if !cmp.Equal(expected, actual) { // t.Fatalf("Expected %v, got %v", expected, actual) // } // }