89 lines
1.8 KiB
Go
89 lines
1.8 KiB
Go
package bacnet
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"testing"
|
|
|
|
. "gopkg.in/check.v1"
|
|
)
|
|
|
|
func TestMessages(t *testing.T) { TestingT(t) }
|
|
|
|
type VLCSuite struct {
|
|
}
|
|
|
|
type NPDUSuite struct {
|
|
}
|
|
|
|
type APDUSuite struct {
|
|
}
|
|
|
|
var _ = Suite(&VLCSuite{})
|
|
var _ = Suite(&NPDUSuite{})
|
|
var _ = Suite(&APDUSuite{})
|
|
|
|
func (s *VLCSuite) TestMarshalUnmarshalVLC(c *C) {
|
|
vlc := VLC{
|
|
Type: VLC_TYPE_IP,
|
|
Function: VLC_FUNCTION_UNICAST_NPDU,
|
|
Length: 300,
|
|
}
|
|
b, e := vlc.Marshal()
|
|
c.Assert(e, IsNil)
|
|
c.Assert(b, NotNil)
|
|
encodedLength := binary.BigEndian.Uint16(b[2:])
|
|
c.Check(encodedLength, Equals, vlc.Length)
|
|
dec := VLC{}
|
|
b, err := dec.Unmarshal(b)
|
|
c.Assert(err, IsNil)
|
|
c.Check(len(b), Equals, 0)
|
|
}
|
|
|
|
func (s *VLCSuite) TestUnmarshalShortVLC(c *C) {
|
|
b := make([]byte, vlcLength-1)
|
|
v := VLC{}
|
|
leftovers, err := v.Unmarshal(b)
|
|
c.Check(leftovers, DeepEquals, b)
|
|
c.Check(err, NotNil)
|
|
c.Check(err, Equals, errBACNetPacketTooShort)
|
|
}
|
|
|
|
func (s *NPDUSuite) TestMarshalUnmarshalNPDU(c *C) {
|
|
npdu := NPDU{
|
|
Version: NPDU_VERSION_ASHRAE_135_1995,
|
|
Control: 0x4,
|
|
}
|
|
b, e := npdu.Marshal()
|
|
c.Assert(e, IsNil)
|
|
c.Assert(b, NotNil)
|
|
c.Check(len(b), Equals, 2)
|
|
dec := NPDU{}
|
|
leftovers, err := dec.Unmarshal(b)
|
|
c.Check(len(leftovers), Equals, 0)
|
|
c.Assert(err, IsNil)
|
|
c.Check(dec, Equals, npdu)
|
|
}
|
|
|
|
func (s *NPDUSuite) TestMarshalUnmarshalShortNPDU(c *C) {
|
|
b := make([]byte, npduLength-1)
|
|
v := VLC{}
|
|
leftovers, err := v.Unmarshal(b)
|
|
c.Check(leftovers, DeepEquals, b)
|
|
c.Check(err, Equals, errBACNetPacketTooShort)
|
|
}
|
|
|
|
func (s *APDUSuite) TestMarshalUnmarshalAPDU(c *C) {
|
|
apdu := APDU{
|
|
TypeAndFlags: 0x30,
|
|
InvokeID: 1,
|
|
ServerChoice: SERVER_CHOICE_READ_PROPERTY,
|
|
}
|
|
b, err := apdu.Marshal()
|
|
c.Assert(err, IsNil)
|
|
dec := new(APDU)
|
|
b, err = dec.Unmarshal(b)
|
|
c.Assert(err, IsNil)
|
|
c.Check(dec, DeepEquals, &apdu)
|
|
c.Check(len(b), Equals, 0)
|
|
}
|