This is so vibe coded, but in the interest of time, its a bit necessary. Plus this is a complex problem that I don't have the mental bandwidth to invest right now.
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package syntax
|
|
|
|
import "testing"
|
|
|
|
func TestMergeRanges(t *testing.T) {
|
|
in := []lineRange{{start: 5, end: 8}, {start: 1, end: 2}, {start: 2, end: 4}, {start: 10, end: 10}}
|
|
out := mergeRanges(in)
|
|
|
|
if len(out) != 2 {
|
|
t.Fatalf("expected 2 merged ranges, got %d", len(out))
|
|
}
|
|
if out[0].start != 1 || out[0].end != 8 {
|
|
t.Fatalf("unexpected first merged range: %+v", out[0])
|
|
}
|
|
if out[1].start != 10 || out[1].end != 10 {
|
|
t.Fatalf("unexpected second merged range: %+v", out[1])
|
|
}
|
|
}
|
|
|
|
func TestNormalizedDirtyRanges(t *testing.T) {
|
|
ranges := []lineRange{{start: -2, end: 1}, {start: 3, end: 99}}
|
|
out := normalizedDirtyRanges(ranges, 5)
|
|
|
|
if len(out) != 2 {
|
|
t.Fatalf("expected 2 normalized ranges, got %d", len(out))
|
|
}
|
|
if out[0].start != 0 || out[0].end != 1 {
|
|
t.Fatalf("unexpected first normalized range: %+v", out[0])
|
|
}
|
|
if out[1].start != 3 || out[1].end != 4 {
|
|
t.Fatalf("unexpected second normalized range: %+v", out[1])
|
|
}
|
|
}
|
|
|
|
func TestByteColToRuneIndexUTF8(t *testing.T) {
|
|
line := []byte("aéb")
|
|
|
|
if got := byteColToRuneIndex(line, 0); got != 0 {
|
|
t.Fatalf("expected 0, got %d", got)
|
|
}
|
|
if got := byteColToRuneIndex(line, 1); got != 1 {
|
|
t.Fatalf("expected 1, got %d", got)
|
|
}
|
|
if got := byteColToRuneIndex(line, 3); got != 2 {
|
|
t.Fatalf("expected 2, got %d", got)
|
|
}
|
|
if got := byteColToRuneIndex(line, len(line)); got != 3 {
|
|
t.Fatalf("expected 3, got %d", got)
|
|
}
|
|
}
|