1package magna
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7)
8
9func TestBufferOverflowError(t *testing.T) {
10 tests := []struct {
11 name string
12 length int
13 offset int
14 expected string
15 }{
16 {"basic overflow", 10, 15, "magna: offset 15 is past the buffer length 10"},
17 {"zero length", 0, 5, "magna: offset 5 is past the buffer length 0"},
18 {"negative offset", 10, -1, "magna: offset -1 is past the buffer length 10"},
19 }
20
21 for _, tt := range tests {
22 t.Run(tt.name, func(t *testing.T) {
23 err := &BufferOverflowError{Length: tt.length, Offset: tt.offset}
24 assert.Equal(t, tt.expected, err.Error())
25 })
26 }
27}
28
29func TestInvalidLabelError(t *testing.T) {
30 tests := []struct {
31 name string
32 length int
33 expected string
34 }{
35 {"zero length", 0, "magna: received invalid label length 0"},
36 {"negative length", -1, "magna: received invalid label length -1"},
37 {"large length", 1000, "magna: received invalid label length 1000"},
38 }
39
40 for _, tt := range tests {
41 t.Run(tt.name, func(t *testing.T) {
42 err := &InvalidLabelError{Length: tt.length}
43 assert.Equal(t, tt.expected, err.Error())
44 })
45 }
46}
47
48func TestDomainCompressionError(t *testing.T) {
49 err := &DomainCompressionError{}
50 expected := "magna: loop detected in domain compression"
51 assert.Equal(t, expected, err.Error())
52}
53
54func TestMagnaError(t *testing.T) {
55 tests := []struct {
56 name string
57 message string
58 expected string
59 }{
60 {"empty message", "", "magna: "},
61 {"basic message", "test error", "magna: test error"},
62 {"message with punctuation", "error: invalid input!", "magna: error: invalid input!"},
63 }
64
65 for _, tt := range tests {
66 t.Run(tt.name, func(t *testing.T) {
67 err := &MagnaError{Message: tt.message}
68 assert.Equal(t, tt.expected, err.Error())
69 })
70 }
71}