1package git
 2
 3import (
 4	"testing"
 5
 6	"github.com/matryer/is"
 7)
 8
 9func TestParseAttr(t *testing.T) {
10	cases := []struct {
11		in   string
12		file string
13		want []Attribute
14	}{
15		{
16			in:   "org/example/MyClass.java: diff: java\n",
17			file: "org/example/MyClass.java",
18			want: []Attribute{
19				{
20					Name:  "diff",
21					Value: "java",
22				},
23			},
24		},
25		{
26			in: `org/example/MyClass.java: crlf: unset
27org/example/MyClass.java: diff: java
28org/example/MyClass.java: myAttr: set`,
29			file: "org/example/MyClass.java",
30			want: []Attribute{
31				{
32					Name:  "crlf",
33					Value: "unset",
34				},
35				{
36					Name:  "diff",
37					Value: "java",
38				},
39				{
40					Name:  "myAttr",
41					Value: "set",
42				},
43			},
44		},
45		{
46			in: `org/example/MyClass.java: diff: java
47org/example/MyClass.java: myAttr: set`,
48			file: "org/example/MyClass.java",
49			want: []Attribute{
50				{
51					Name:  "diff",
52					Value: "java",
53				},
54				{
55					Name:  "myAttr",
56					Value: "set",
57				},
58			},
59		},
60		{
61			in:   `README: caveat: unspecified`,
62			file: "README",
63			want: []Attribute{
64				{
65					Name:  "caveat",
66					Value: "unspecified",
67				},
68			},
69		},
70		{
71			in:   "",
72			file: "foo",
73			want: []Attribute{},
74		},
75		{
76			in:   "\n",
77			file: "foo",
78			want: []Attribute{},
79		},
80	}
81
82	is := is.New(t)
83	for _, c := range cases {
84		attrs := parseAttributes(c.file, []byte(c.in))
85		if len(attrs) != len(c.want) {
86			t.Fatalf("parseAttributes(%q, %q) = %v, want %v", c.file, c.in, attrs, c.want)
87		}
88
89		is.Equal(attrs, c.want)
90	}
91}