mirror of
https://github.com/Myzel394/config-lsp.git
synced 2025-06-19 23:45:27 +02:00
183 lines
3.1 KiB
Go
183 lines
3.1 KiB
Go
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)
|
|
// }
|
|
// }
|