a go dns packet parser
1package magna 2 3import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7) 8 9func TestU8(t *testing.T) { 10 buf := []byte{ 11 0x01, 12 } 13 14 actual, offset, err := getU8(buf, 0) 15 assert.Equal(t, uint8(1), actual) 16 assert.Equal(t, 1, offset) 17 assert.NoError(t, err) 18 19 actual, offset, err = getU8(buf, 1) 20 assert.Equal(t, uint8(0), actual) 21 assert.Equal(t, 1, offset) 22 assert.Error(t, err) 23} 24 25func TestU16(t *testing.T) { 26 buf := []byte{ 27 0x00, 0x01, 28 } 29 30 actual, offset, err := getU16(buf, 0) 31 assert.Equal(t, uint16(1), actual) 32 assert.Equal(t, 2, offset) 33 assert.NoError(t, err) 34 35 actual, offset, err = getU16(buf, 1) 36 assert.Equal(t, uint16(0), actual) 37 assert.Equal(t, 2, offset) 38 assert.Error(t, err) 39} 40 41func TestU32(t *testing.T) { 42 buf := []byte{ 43 0x00, 0x00, 0x00, 0x01, 44 } 45 46 actual, offset, err := getU32(buf, 0) 47 assert.Equal(t, uint32(1), actual) 48 assert.Equal(t, 4, offset) 49 assert.NoError(t, err) 50 51 actual, offset, err = getU32(buf, 1) 52 assert.Equal(t, uint32(0), actual) 53 assert.Equal(t, 4, offset) 54 assert.Error(t, err) 55} 56 57func TestSlice(t *testing.T) { 58 buf := []byte{ 59 0x62, 0x6c, 0x75, 60 } 61 62 actual, offset, err := getSlice(buf, 0, 3) 63 assert.Equal(t, "blu", string(actual)) 64 assert.Equal(t, 3, offset) 65 assert.NoError(t, err) 66 67 actual, offset, err = getSlice(buf, 0, 4) 68 assert.Equal(t, "", string(actual)) 69 assert.Equal(t, 3, offset) 70 assert.Error(t, err) 71}