1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
package dhcp6opts
import (
"bytes"
"io"
"reflect"
"testing"
"github.com/mdlayher/dhcp6"
)
// TestNewStatusCode verifies that NewStatusCode creates a proper StatusCode
// value for the input values.
func TestNewStatusCode(t *testing.T) {
var tests = []struct {
status dhcp6.Status
message string
sc *StatusCode
}{
{
status: dhcp6.StatusSuccess,
message: "Success",
sc: &StatusCode{
Code: dhcp6.StatusSuccess,
Message: "Success",
},
},
}
for i, tt := range tests {
if want, got := tt.sc, NewStatusCode(tt.status, tt.message); !reflect.DeepEqual(want, got) {
t.Fatalf("[%02d] unexpected StatusCode for NewStatusCode(%v, %q)\n- want: %v\n- got: %v",
i, tt.status, tt.message, want, got)
}
}
}
// TestStatusCodeUnmarshalBinary verifies that StatusCode.UnmarshalBinary
// returns correct StatusCode and error values for several input values.
func TestStatusCodeUnmarshalBinary(t *testing.T) {
var tests = []struct {
buf []byte
sc *StatusCode
err error
}{
{
buf: []byte{0},
err: io.ErrUnexpectedEOF,
},
{
buf: []byte{0, 0},
sc: &StatusCode{
Code: dhcp6.StatusSuccess,
},
},
{
buf: append([]byte{0, 1}, []byte("deadbeef")...),
sc: &StatusCode{
Code: dhcp6.StatusUnspecFail,
Message: "deadbeef",
},
},
}
for i, tt := range tests {
sc := new(StatusCode)
if err := sc.UnmarshalBinary(tt.buf); err != nil {
if want, got := tt.err, err; want != got {
t.Fatalf("[%02d] unexpected error for parseStatusCode(%v): %v != %v",
i, tt.buf, want, got)
}
continue
}
want, err := tt.sc.MarshalBinary()
if err != nil {
t.Fatal(err)
}
got, err := sc.MarshalBinary()
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(want, got) {
t.Fatalf("[%02d] unexpected StatusCode for parseStatusCode(%v)\n- want: %v\n- got: %v",
i, tt.buf, want, got)
}
}
}
|