(t *testing.T)
| 14 | ) |
| 15 | |
| 16 | func TestAddLabelHeaderToPacket(t *testing.T) { |
| 17 | type testcase struct { |
| 18 | buf []byte |
| 19 | label string |
| 20 | expectPacket []byte |
| 21 | expectErr string |
| 22 | } |
| 23 | |
| 24 | run := func(t *testing.T, tc testcase) { |
| 25 | got, err := AddLabelHeaderToPacket(tc.buf, tc.label) |
| 26 | if tc.expectErr != "" { |
| 27 | require.Error(t, err) |
| 28 | require.Contains(t, err.Error(), tc.expectErr) |
| 29 | } else { |
| 30 | require.NoError(t, err) |
| 31 | require.Equal(t, tc.expectPacket, got) |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | longLabel := strings.Repeat("a", 255) |
| 36 | |
| 37 | cases := map[string]testcase{ |
| 38 | "nil buf with no label": testcase{ |
| 39 | buf: nil, |
| 40 | label: "", |
| 41 | expectPacket: nil, |
| 42 | }, |
| 43 | "nil buf with label": testcase{ |
| 44 | buf: nil, |
| 45 | label: "foo", |
| 46 | expectPacket: append([]byte{byte(hasLabelMsg), 3}, []byte("foo")...), |
| 47 | }, |
| 48 | "message with label": testcase{ |
| 49 | buf: []byte("something"), |
| 50 | label: "foo", |
| 51 | expectPacket: append([]byte{byte(hasLabelMsg), 3}, []byte("foosomething")...), |
| 52 | }, |
| 53 | "message with no label": testcase{ |
| 54 | buf: []byte("something"), |
| 55 | label: "", |
| 56 | expectPacket: []byte("something"), |
| 57 | }, |
| 58 | "message with almost too long label": testcase{ |
| 59 | buf: []byte("something"), |
| 60 | label: longLabel, |
| 61 | expectPacket: append([]byte{byte(hasLabelMsg), 255}, []byte(longLabel+"something")...), |
| 62 | }, |
| 63 | "label too long by one byte": testcase{ |
| 64 | buf: []byte("something"), |
| 65 | label: longLabel + "x", |
| 66 | expectErr: `label "` + longLabel + `x" is too long`, |
| 67 | }, |
| 68 | } |
| 69 | |
| 70 | for name, tc := range cases { |
| 71 | t.Run(name, func(t *testing.T) { |
| 72 | run(t, tc) |
| 73 | }) |
nothing calls this directly
no test coverage detected
searching dependent graphs…