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