a go dns packet parser
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}