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) } }