fork of go-gitdiff with jj support
1package gitdiff
2
3import (
4 "io"
5 "strings"
6 "testing"
7)
8
9func TestLineReader(t *testing.T) {
10 const content = "first line\nsecond line\nthird line\npartial fourth line"
11
12 t.Run("readLine", func(t *testing.T) {
13 r := NewLineReader(strings.NewReader(content), 0)
14
15 lines := []struct {
16 Data string
17 Err error
18 }{
19 {"first line\n", nil},
20 {"second line\n", nil},
21 {"third line\n", nil},
22 {"partial fourth line", io.EOF},
23 }
24
25 for i, line := range lines {
26 d, n, err := r.ReadLine()
27 if err != line.Err {
28 if line.Err == nil {
29 t.Fatalf("error reading line: %v", err)
30 } else {
31 t.Fatalf("expected %v while reading line, but got %v", line.Err, err)
32 }
33 }
34 if d != line.Data {
35 t.Errorf("incorrect line data: expected %q, actual %q", line.Data, d)
36 }
37 if n != i {
38 t.Errorf("incorrect line number: expected %d, actual %d", i, n)
39 }
40 }
41 })
42
43 t.Run("readLineOffset", func(t *testing.T) {
44 r := NewLineReader(strings.NewReader(content), 10)
45
46 d, n, err := r.ReadLine()
47 if err != nil {
48 t.Fatalf("error reading line: %v", err)
49 }
50 if d != "first line\n" {
51 t.Errorf("incorrect line data: expected %q, actual %q", "first line\n", d)
52 }
53 if n != 10 {
54 t.Errorf("incorrect line number: expected %d, actual %d", 10, n)
55 }
56 })
57}