コード例 #1
0
ファイル: publish_test.go プロジェクト: charlesluo2014/mqtt
func TestPublishMessageDecode1(t *testing.T) {
	msgBytes := []byte{
		byte(PUBLISH<<4) | 2,
		23,
		0, // topic name MSB (0)
		7, // topic name LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0, // packet ID MSB (0)
		7, // packet ID LSB (7)
		's', 'e', 'n', 'd', ' ', 'm', 'e', ' ', 'h', 'o', 'm', 'e',
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewPublishMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, 7, msg.PacketId(), "Error decoding message.")

	assert.Equal(t, true, "surgemq", string(msg.Topic()), "Error deocding topic name.")

	assert.Equal(t, true, []byte{'s', 'e', 'n', 'd', ' ', 'm', 'e', ' ', 'h', 'o', 'm', 'e'}, msg.Payload(), "Error deocding payload.")
}
コード例 #2
0
ファイル: publish_test.go プロジェクト: charlesluo2014/mqtt
func TestPublishMessageFixedHeaderFields(t *testing.T) {
	msg := NewPublishMessage()
	msg.flags = 11

	assert.True(t, true, msg.Dup(), "Incorrect DUP flag.")

	assert.True(t, true, msg.Retain(), "Incorrect RETAIN flag.")

	assert.Equal(t, true, 1, msg.QoS(), "Incorrect QoS.")

	msg.SetDup(false)
	assert.False(t, true, msg.Dup(), "Incorrect DUP flag.")

	msg.SetRetain(false)
	assert.False(t, true, msg.Retain(), "Incorrect RETAIN flag.")

	err := msg.SetQoS(2)
	assert.NoError(t, true, err, "Error setting QoS.")

	assert.Equal(t, true, 2, msg.QoS(), "Incorrect QoS.")

	err = msg.SetQoS(3)
	assert.Error(t, true, err)

	err = msg.SetQoS(0)
	assert.NoError(t, true, err, "Error setting QoS.")

	assert.Equal(t, true, 0, msg.QoS(), "Incorrect QoS.")

	msg.SetDup(true)
	assert.True(t, true, msg.Dup(), "Incorrect DUP flag.")

	msg.SetRetain(true)
	assert.True(t, true, msg.Retain(), "Incorrect RETAIN flag.")
}
コード例 #3
0
ファイル: suback_test.go プロジェクト: charlesluo2014/mqtt
func TestSubackMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(SUBACK << 4),
		6,
		0,    // packet ID MSB (0)
		7,    // packet ID LSB (7)
		0,    // return code 1
		1,    // return code 2
		2,    // return code 3
		0x80, // return code 4
	}

	msg := NewSubackMessage()
	msg.SetPacketId(7)
	msg.AddReturnCode(0)
	msg.AddReturnCode(1)
	msg.AddReturnCode(2)
	msg.AddReturnCode(0x80)

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error decoding message.")
}
コード例 #4
0
ファイル: publish_test.go プロジェクト: charlesluo2014/mqtt
func TestPublishMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(PUBLISH<<4) | 2,
		23,
		0, // topic name MSB (0)
		7, // topic name LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0, // packet ID MSB (0)
		7, // packet ID LSB (7)
		's', 'e', 'n', 'd', ' ', 'm', 'e', ' ', 'h', 'o', 'm', 'e',
	}

	msg := NewPublishMessage()
	msg.SetTopic([]byte("surgemq"))
	msg.SetQoS(1)
	msg.SetPacketId(7)
	msg.SetPayload([]byte{'s', 'e', 'n', 'd', ' ', 'm', 'e', ' ', 'h', 'o', 'm', 'e'})

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error decoding message.")
}
コード例 #5
0
func TestUnsubscribeMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(UNSUBSCRIBE<<4) | 2,
		33,
		0, // packet ID MSB (0)
		7, // packet ID LSB (7)
		0, // topic name MSB (0)
		7, // topic name LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0, // topic name MSB (0)
		8, // topic name LSB (8)
		'/', 'a', '/', 'b', '/', '#', '/', 'c',
		0,  // topic name MSB (0)
		10, // topic name LSB (10)
		'/', 'a', '/', 'b', '/', '#', '/', 'c', 'd', 'd',
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewUnsubscribeMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, UNSUBSCRIBE, msg.Type(), "Error decoding message.")

	assert.Equal(t, true, 3, len(msg.Topics()), "Error decoding topics.")

	assert.True(t, true, msg.TopicExists([]byte("surgemq")), "Topic 'surgemq' should exist.")

	assert.True(t, true, msg.TopicExists([]byte("/a/b/#/c")), "Topic '/a/b/#/c' should exist.")

	assert.True(t, true, msg.TopicExists([]byte("/a/b/#/cdd")), "Topic '/a/b/#/c' should exist.")
}
コード例 #6
0
ファイル: subscribe_test.go プロジェクト: charlesluo2014/mqtt
func TestSubscribeMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(SUBSCRIBE<<4) | 2,
		36,
		0, // packet ID MSB (0)
		7, // packet ID LSB (7)
		0, // topic name MSB (0)
		7, // topic name LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0, // QoS
		0, // topic name MSB (0)
		8, // topic name LSB (8)
		'/', 'a', '/', 'b', '/', '#', '/', 'c',
		1,  // QoS
		0,  // topic name MSB (0)
		10, // topic name LSB (10)
		'/', 'a', '/', 'b', '/', '#', '/', 'c', 'd', 'd',
		2, // QoS
	}

	msg := NewSubscribeMessage()
	msg.SetPacketId(7)
	msg.AddTopic([]byte("surgemq"), 0)
	msg.AddTopic([]byte("/a/b/#/c"), 1)
	msg.AddTopic([]byte("/a/b/#/cdd"), 2)

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error decoding message.")
}
コード例 #7
0
ファイル: mqtt_test.go プロジェクト: charlesluo2014/mqtt
func TestConnackReturnCodes(t *testing.T) {
	assert.Equal(t, false, ErrUnacceptableProtocolVersion, ConnackCode(1).Error(), "Incorrect ConnackCode error value.")

	assert.Equal(t, false, ErrIdentifierRejected, ConnackCode(2).Error(), "Incorrect ConnackCode error value.")

	assert.Equal(t, false, ErrServerUnavailable, ConnackCode(3).Error(), "Incorrect ConnackCode error value.")

	assert.Equal(t, false, ErrBadUsernameOrPassword, ConnackCode(4).Error(), "Incorrect ConnackCode error value.")

	assert.Equal(t, false, ErrNotAuthorized, ConnackCode(5).Error(), "Incorrect ConnackCode error value.")
}
コード例 #8
0
ファイル: suback_test.go プロジェクト: charlesluo2014/mqtt
func TestSubackMessageFields(t *testing.T) {
	msg := NewSubackMessage()

	msg.SetPacketId(100)
	assert.Equal(t, true, 100, msg.PacketId(), "Error setting packet ID.")

	msg.AddReturnCode(1)
	assert.Equal(t, true, 1, len(msg.ReturnCodes()), "Error adding return code.")

	err := msg.AddReturnCode(0x90)
	assert.Error(t, true, err)
}
コード例 #9
0
ファイル: subscribe_test.go プロジェクト: charlesluo2014/mqtt
func TestSubscribeMessageFields(t *testing.T) {
	msg := NewSubscribeMessage()

	msg.SetPacketId(100)
	assert.Equal(t, true, 100, msg.PacketId(), "Error setting packet ID.")

	msg.AddTopic([]byte("/a/b/#/c"), 1)
	assert.Equal(t, true, 1, len(msg.Topics()), "Error adding topic.")

	assert.False(t, true, msg.TopicExists([]byte("a/b")), "Topic should not exist.")

	msg.RemoveTopic([]byte("/a/b/#/c"))
	assert.False(t, true, msg.TopicExists([]byte("/a/b/#/c")), "Topic should not exist.")
}
コード例 #10
0
ファイル: publish_test.go プロジェクト: charlesluo2014/mqtt
func TestPublishMessageFields(t *testing.T) {
	msg := NewPublishMessage()

	msg.SetTopic([]byte("coolstuff"))
	assert.Equal(t, true, "coolstuff", string(msg.Topic()), "Error setting message topic.")

	err := msg.SetTopic([]byte("coolstuff/#"))
	assert.Error(t, true, err)

	msg.SetPacketId(100)
	assert.Equal(t, true, 100, msg.PacketId(), "Error setting acket ID.")

	msg.SetPayload([]byte("this is a payload to be sent"))
	assert.Equal(t, true, []byte("this is a payload to be sent"), msg.Payload(), "Error setting payload.")
}
コード例 #11
0
ファイル: ping_test.go プロジェクト: charlesluo2014/mqtt
func TestPingrespMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(PINGRESP << 4),
		0,
	}

	msg := NewPingrespMessage()

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error decoding message.")
}
コード例 #12
0
func TestDisconnectMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(DISCONNECT << 4),
		0,
	}

	msg := NewDisconnectMessage()

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error decoding message.")
}
コード例 #13
0
ファイル: header_test.go プロジェクト: charlesluo2014/mqtt
func TestMessageHeaderDecode4(t *testing.T) {
	headerBytes := []byte{0x62, 0xff, 0xff, 0xff, 0x7f}
	buf := bytes.NewBuffer(headerBytes)
	header := &fixedHeader{
		mtype: 6,
		flags: 2,
	}

	n, err := header.Decode(buf)
	assert.Equal(t, true, 5, n, "Incorrect bytes decoded")

	assert.Equal(t, true, maxRemainingLength, header.RemainingLength(), "Incorrect remaining length")

	assert.Error(t, true, err)
}
コード例 #14
0
func TestDisconnectMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(DISCONNECT << 4),
		0,
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewDisconnectMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, DISCONNECT, msg.Type(), "Error decoding message.")
}
コード例 #15
0
ファイル: ping_test.go プロジェクト: charlesluo2014/mqtt
func TestPingrespMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(PINGRESP << 4),
		0,
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewPingrespMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, PINGRESP, msg.Type(), "Error decoding message.")
}
コード例 #16
0
ファイル: connect_test.go プロジェクト: charlesluo2014/mqtt
func TestConnectMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(CONNECT << 4),
		60,
		0, // Length MSB (0)
		4, // Length LSB (4)
		'M', 'Q', 'T', 'T',
		4,   // Protocol level 4
		206, // connect flags 11001110, will QoS = 01
		0,   // Keep Alive MSB (0)
		10,  // Keep Alive LSB (10)
		0,   // Client ID MSB (0)
		7,   // Client ID LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0, // Will Topic MSB (0)
		4, // Will Topic LSB (4)
		'w', 'i', 'l', 'l',
		0,  // Will Message MSB (0)
		12, // Will Message LSB (12)
		's', 'e', 'n', 'd', ' ', 'm', 'e', ' ', 'h', 'o', 'm', 'e',
		0, // Username ID MSB (0)
		7, // Username ID LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0,  // Password ID MSB (0)
		10, // Password ID LSB (10)
		'v', 'e', 'r', 'y', 's', 'e', 'c', 'r', 'e', 't',
	}

	msg := NewConnectMessage()
	msg.SetWillQos(1)
	msg.SetVersion(4)
	msg.SetCleanSession(true)
	msg.SetClientId([]byte("surgemq"))
	msg.SetKeepAlive(10)
	msg.SetWillTopic([]byte("will"))
	msg.SetWillMessage([]byte("send me home"))
	msg.SetUsername([]byte("surgemq"))
	msg.SetPassword([]byte("verysecret"))

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error decoding message.")
}
コード例 #17
0
ファイル: pubrel_test.go プロジェクト: charlesluo2014/mqtt
func TestPubrelMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(PUBREL<<4) | 2,
		2,
		0, // packet ID MSB (0)
		7, // packet ID LSB (7)
	}

	msg := NewPubrelMessage()
	msg.SetPacketId(7)

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error decoding message.")
}
コード例 #18
0
ファイル: connack_test.go プロジェクト: charlesluo2014/mqtt
func TestConnackMessageEncode(t *testing.T) {
	msgBytes := []byte{
		byte(CONNACK << 4),
		2,
		1, // session present
		0, // connection accepted
	}

	msg := NewConnackMessage()
	msg.SetReturnCode(ConnectionAccepted)
	msg.SetSessionPresent(true)

	dst, n, err := msg.Encode()
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error encoding message.")

	assert.Equal(t, true, msgBytes, dst.(*bytes.Buffer).Bytes(), "Error encoding connack message.")
}
コード例 #19
0
ファイル: pubrel_test.go プロジェクト: charlesluo2014/mqtt
func TestPubrelMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(PUBREL<<4) | 2,
		2,
		0, // packet ID MSB (0)
		7, // packet ID LSB (7)
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewPubrelMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, PUBREL, msg.Type(), "Error decoding message.")

	assert.Equal(t, true, 7, msg.PacketId(), "Error decoding message.")
}
コード例 #20
0
ファイル: connack_test.go プロジェクト: charlesluo2014/mqtt
func TestConnackMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(CONNACK << 4),
		2,
		0, // session not present
		0, // connection accepted
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewConnackMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.False(t, true, msg.SessionPresent(), "Error decoding session present flag.")

	assert.Equal(t, true, ConnectionAccepted, msg.ReturnCode(), "Error decoding return code.")
}
コード例 #21
0
ファイル: unsuback_test.go プロジェクト: charlesluo2014/mqtt
func TestUnsubackMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(UNSUBACK << 4),
		2,
		0, // packet ID MSB (0)
		7, // packet ID LSB (7)
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewUnsubackMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, UNSUBACK, msg.Type(), "Error decoding message.")

	assert.Equal(t, true, 7, msg.PacketId(), "Error decoding message.")
}
コード例 #22
0
ファイル: connack_test.go プロジェクト: charlesluo2014/mqtt
func TestConnackMessageFields(t *testing.T) {
	msg := NewConnackMessage()

	msg.SetSessionPresent(true)
	assert.True(t, true, msg.SessionPresent(), "Error setting session present flag.")

	msg.SetSessionPresent(false)
	assert.False(t, true, msg.SessionPresent(), "Error setting session present flag.")

	msg.SetReturnCode(ConnectionAccepted)
	assert.Equal(t, true, ConnectionAccepted, msg.ReturnCode(), "Error setting return code.")
}
コード例 #23
0
ファイル: connect_test.go プロジェクト: charlesluo2014/mqtt
func TestConnectMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(CONNECT << 4),
		60,
		0, // Length MSB (0)
		4, // Length LSB (4)
		'M', 'Q', 'T', 'T',
		4,   // Protocol level 4
		206, // connect flags 11001110, will QoS = 01
		0,   // Keep Alive MSB (0)
		10,  // Keep Alive LSB (10)
		0,   // Client ID MSB (0)
		7,   // Client ID LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0, // Will Topic MSB (0)
		4, // Will Topic LSB (4)
		'w', 'i', 'l', 'l',
		0,  // Will Message MSB (0)
		12, // Will Message LSB (12)
		's', 'e', 'n', 'd', ' ', 'm', 'e', ' ', 'h', 'o', 'm', 'e',
		0, // Username ID MSB (0)
		7, // Username ID LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0,  // Password ID MSB (0)
		10, // Password ID LSB (10)
		'v', 'e', 'r', 'y', 's', 'e', 'c', 'r', 'e', 't',
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewConnectMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, 206, msg.connectFlags, "Incorrect flag value.")

	assert.Equal(t, true, 10, msg.KeepAlive(), "Incorrect KeepAlive value.")

	assert.Equal(t, true, "surgemq", string(msg.ClientId()), "Incorrect client ID value.")

	assert.Equal(t, true, "will", string(msg.WillTopic()), "Incorrect will topic value.")

	assert.Equal(t, true, "send me home", string(msg.WillMessage()), "Incorrect will message value.")

	assert.Equal(t, true, "surgemq", string(msg.Username()), "Incorrect username value.")

	assert.Equal(t, true, "verysecret", string(msg.Password()), "Incorrect password value.")
}
コード例 #24
0
ファイル: suback_test.go プロジェクト: charlesluo2014/mqtt
func TestSubackMessageDecode(t *testing.T) {
	msgBytes := []byte{
		byte(SUBACK << 4),
		6,
		0,    // packet ID MSB (0)
		7,    // packet ID LSB (7)
		0,    // return code 1
		1,    // return code 2
		2,    // return code 3
		0x80, // return code 4
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewSubackMessage()

	n, err := msg.Decode(src)
	assert.NoError(t, true, err, "Error decoding message.")

	assert.Equal(t, true, len(msgBytes), n, "Error decoding message.")

	assert.Equal(t, true, SUBACK, msg.Type(), "Error decoding message.")

	assert.Equal(t, true, 4, len(msg.ReturnCodes()), "Error adding return code.")
}
コード例 #25
0
ファイル: connect_test.go プロジェクト: charlesluo2014/mqtt
func TestConnectMessageDecode3(t *testing.T) {
	// extra bytes
	msgBytes := []byte{
		byte(CONNECT << 4),
		60,
		0, // Length MSB (0)
		4, // Length LSB (4)
		'M', 'Q', 'T', 'T',
		4,   // Protocol level 4
		206, // connect flags 11001110, will QoS = 01
		0,   // Keep Alive MSB (0)
		10,  // Keep Alive LSB (10)
		0,   // Client ID MSB (0)
		7,   // Client ID LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0, // Will Topic MSB (0)
		4, // Will Topic LSB (4)
		'w', 'i', 'l', 'l',
		0,  // Will Message MSB (0)
		12, // Will Message LSB (12)
		's', 'e', 'n', 'd', ' ', 'm', 'e', ' ', 'h', 'o', 'm', 'e',
		0, // Username ID MSB (0)
		7, // Username ID LSB (7)
		's', 'u', 'r', 'g', 'e', 'm', 'q',
		0,  // Password ID MSB (0)
		10, // Password ID LSB (10)
		'v', 'e', 'r', 'y', 's', 'e', 'c', 'r', 'e', 't',
		'e', 'x', 't', 'r', 'a',
	}

	src := bytes.NewBuffer(msgBytes)
	msg := NewConnectMessage()

	msg.Decode(src)

	assert.Equal(t, true, 5, src.Len(), "Incorrect bytes remaining.")
}
コード例 #26
0
ファイル: pubrel_test.go プロジェクト: charlesluo2014/mqtt
func TestPubrelMessageFields(t *testing.T) {
	msg := NewPubrelMessage()

	msg.SetPacketId(100)
	assert.Equal(t, true, 100, msg.PacketId(), "Error setting packet ID.")
}
コード例 #27
0
ファイル: connect_test.go プロジェクト: charlesluo2014/mqtt
func TestConnectMessageFields(t *testing.T) {
	msg := NewConnectMessage()

	err := msg.SetVersion(0x3)
	assert.NoError(t, false, err, "Error setting message version.")

	assert.Equal(t, false, 0x3, msg.Version(), "Incorrect version number")

	err = msg.SetVersion(0x5)
	assert.Error(t, false, err)

	msg.SetCleanSession(true)
	assert.True(t, false, msg.CleanSession(), "Error setting clean session flag.")

	msg.SetCleanSession(false)
	assert.False(t, false, msg.CleanSession(), "Error setting clean session flag.")

	msg.SetWillFlag(true)
	assert.True(t, false, msg.WillFlag(), "Error setting will flag.")

	msg.SetWillFlag(false)
	assert.False(t, false, msg.WillFlag(), "Error setting will flag.")

	msg.SetWillRetain(true)
	assert.True(t, false, msg.WillRetain(), "Error setting will retain.")

	msg.SetWillRetain(false)
	assert.False(t, false, msg.WillRetain(), "Error setting will retain.")

	msg.SetPasswordFlag(true)
	assert.True(t, false, msg.PasswordFlag(), "Error setting password flag.")

	msg.SetPasswordFlag(false)
	assert.False(t, false, msg.PasswordFlag(), "Error setting password flag.")

	msg.SetUsernameFlag(true)
	assert.True(t, false, msg.UsernameFlag(), "Error setting username flag.")

	msg.SetUsernameFlag(false)
	assert.False(t, false, msg.UsernameFlag(), "Error setting username flag.")

	msg.SetWillQos(1)
	assert.Equal(t, false, 1, msg.WillQos(), "Error setting will QoS.")

	err = msg.SetWillQos(4)
	assert.Error(t, false, err)

	err = msg.SetClientId([]byte("j0j0jfajf02j0asdjf"))
	assert.NoError(t, false, err, "Error setting client ID")

	assert.Equal(t, false, "j0j0jfajf02j0asdjf", string(msg.ClientId()), "Error setting client ID.")

	err = msg.SetClientId([]byte("this is no good"))
	assert.Error(t, false, err)

	msg.SetWillTopic([]byte("willtopic"))
	assert.Equal(t, false, "willtopic", string(msg.WillTopic()), "Error setting will topic.")

	assert.True(t, false, msg.WillFlag(), "Error setting will flag.")

	msg.SetWillTopic([]byte(""))
	assert.Equal(t, false, "", string(msg.WillTopic()), "Error setting will topic.")

	assert.False(t, false, msg.WillFlag(), "Error setting will flag.")

	msg.SetWillMessage([]byte("this is a will message"))
	assert.Equal(t, false, "this is a will message", string(msg.WillMessage()), "Error setting will message.")

	assert.True(t, false, msg.WillFlag(), "Error setting will flag.")

	msg.SetWillMessage([]byte(""))
	assert.Equal(t, false, "", string(msg.WillMessage()), "Error setting will topic.")

	assert.False(t, false, msg.WillFlag(), "Error setting will flag.")

	msg.SetWillTopic([]byte("willtopic"))
	msg.SetWillMessage([]byte("this is a will message"))
	msg.SetWillTopic([]byte(""))
	assert.True(t, false, msg.WillFlag(), "Error setting will topic.")

	msg.SetUsername([]byte("myname"))
	assert.Equal(t, false, "myname", string(msg.Username()), "Error setting will message.")

	assert.True(t, false, msg.UsernameFlag(), "Error setting will flag.")

	msg.SetUsername([]byte(""))
	assert.Equal(t, false, "", string(msg.Username()), "Error setting will message.")

	assert.False(t, false, msg.UsernameFlag(), "Error setting will flag.")

	msg.SetPassword([]byte("myname"))
	assert.Equal(t, false, "myname", string(msg.Password()), "Error setting will message.")

	assert.True(t, false, msg.PasswordFlag(), "Error setting will flag.")

	msg.SetPassword([]byte(""))
	assert.Equal(t, false, "", string(msg.Password()), "Error setting will message.")

	assert.False(t, false, msg.PasswordFlag(), "Error setting will flag.")
}