1package git
2
3import (
4 "bytes"
5 "fmt"
6 "testing"
7)
8
9func TestPktline(t *testing.T) {
10 cases := []struct {
11 name string
12 in []byte
13 err error
14 out []byte
15 }{
16 {
17 name: "empty",
18 in: []byte{},
19 out: []byte("0005\n0000"),
20 },
21 {
22 name: "simple",
23 in: []byte("hello"),
24 out: []byte("000ahello\n0000"),
25 },
26 {
27 name: "newline",
28 in: []byte("hello\n"),
29 out: []byte("000bhello\n\n0000"),
30 },
31 {
32 name: "error",
33 err: fmt.Errorf("foobar"),
34 out: []byte("000fERR foobar\n0000"),
35 },
36 }
37
38 for _, c := range cases {
39 t.Run(c.name, func(t *testing.T) {
40 var out bytes.Buffer
41 if c.err == nil {
42 if err := WritePktline(&out, string(c.in)); err != nil {
43 t.Fatal(err)
44 }
45 } else {
46 if err := WritePktlineErr(&out, c.err); err != nil {
47 t.Fatal(err)
48 }
49 }
50
51 if !bytes.Equal(out.Bytes(), c.out) {
52 t.Errorf("expected %q, got %q", c.out, out.Bytes())
53 }
54 })
55 }
56}