a go dns packet parser
at codereview 1.9 kB view raw
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}