fork of go-gitdiff with jj support
at v0.1.0 1.3 kB view raw
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}