From bb72264917495968bcd3e8bcb0110f0ac8bf7d33 Mon Sep 17 00:00:00 2001 From: Oliver Herms <oliver.herms@exaring.de> Date: Sat, 6 Oct 2018 22:25:01 +0200 Subject: [PATCH] More tests --- protocols/isis/packet/tlv_area_addresses.go | 11 ++- .../isis/packet/tlv_area_addresses_test.go | 99 +++++++++++++++++++ 2 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 protocols/isis/packet/tlv_area_addresses_test.go diff --git a/protocols/isis/packet/tlv_area_addresses.go b/protocols/isis/packet/tlv_area_addresses.go index 3c07dcaa..06494998 100644 --- a/protocols/isis/packet/tlv_area_addresses.go +++ b/protocols/isis/packet/tlv_area_addresses.go @@ -7,10 +7,10 @@ import ( "github.com/bio-routing/bio-rd/protocols/isis/types" ) -// AreaAddressTLVType is the type value of an area address TLV +// AreaAddressesTLVType is the type value of an area address TLV const AreaAddressesTLVType = 1 -// AreaAddressTLV represents an area address TLV +// AreaAddressesTLV represents an area address TLV type AreaAddressesTLV struct { TLVType uint8 TLVLength uint8 @@ -47,11 +47,12 @@ func readAreaAddressesTLV(buf *bytes.Buffer, tlvType uint8, tlvLength uint8) (*A return pdu, nil } -func NewAreaAddressTLV(areas []types.AreaID) *AreaAddressesTLV { +// NewAreaAddressesTLV creates a new area addresses TLV +func NewAreaAddressesTLV(areas []types.AreaID) *AreaAddressesTLV { a := &AreaAddressesTLV{ - TLVType: AreaAddressesTLVType, + TLVType: AreaAddressesTLVType, TLVLength: 0, - AreaIDs: make([]types.AreaID, len(areas)), + AreaIDs: make([]types.AreaID, len(areas)), } for i, area := range areas { diff --git a/protocols/isis/packet/tlv_area_addresses_test.go b/protocols/isis/packet/tlv_area_addresses_test.go new file mode 100644 index 00000000..f9965df3 --- /dev/null +++ b/protocols/isis/packet/tlv_area_addresses_test.go @@ -0,0 +1,99 @@ +package packet + +import ( + "bytes" + "testing" + + "github.com/bio-routing/bio-rd/protocols/isis/types" + "github.com/stretchr/testify/assert" +) + +func TestNewAreaAddressesTLV(t *testing.T) { + tests := []struct { + name string + input []types.AreaID + expected *AreaAddressesTLV + }{ + { + name: "Without Areas", + input: []types.AreaID{}, + expected: &AreaAddressesTLV{ + TLVType: 1, + TLVLength: 0, + AreaIDs: []types.AreaID{}, + }, + }, + { + name: "With Areas", + input: []types.AreaID{ + { + 1, 2, 3, + }, + }, + expected: &AreaAddressesTLV{ + TLVType: 1, + TLVLength: 4, + AreaIDs: []types.AreaID{ + { + 1, 2, 3, + }, + }, + }, + }, + } + + for _, test := range tests { + tlv := NewAreaAddressesTLV(test.input) + assert.Equalf(t, test.expected, tlv, "Test %q", test.name) + } +} + +func TestAreaAddressesTLV(t *testing.T) { + tlv := NewAreaAddressesTLV([]types.AreaID{}) + + assert.Equal(t, uint8(1), tlv.Type()) + assert.Equal(t, uint8(0), tlv.Length()) + assert.Equal(t, AreaAddressesTLV{ + TLVType: 1, + TLVLength: 0, + AreaIDs: []types.AreaID{}, + }, tlv.Value()) +} + +func TestAreaAddressesTLVSerialize(t *testing.T) { + tests := []struct { + name string + input *AreaAddressesTLV + expected []byte + }{ + { + name: "Full", + input: &AreaAddressesTLV{ + TLVType: 1, + TLVLength: 0, + AreaIDs: []types.AreaID{}, + }, + expected: []byte{1, 0}, + }, + { + name: "Full", + input: &AreaAddressesTLV{ + TLVType: 8, + TLVLength: 4, + AreaIDs: []types.AreaID{ + { + 1, 2, 3, + }, + }, + }, + expected: []byte{8, 4, 3, 1, 2, 3}, + }, + } + + for _, test := range tests { + buf := bytes.NewBuffer(nil) + test.input.Serialize(buf) + + assert.Equalf(t, test.expected, buf.Bytes(), "Test %q", test.name) + } +} -- GitLab