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}