Adding unit test to check that PubRelEncoder encodes PubRel message flag to match what is in the MQTT specification (both 3.1.1 and 3.1). See Appendix B: MQTT-3.6.1-1

This commit is contained in:
Victor Kazakov
2015-08-25 09:26:51 -07:00
parent d8e432b4cf
commit fc1ac5973f
@@ -0,0 +1,58 @@
/*
* Copyright (c) 2012-2015 The original author or authors
* ------------------------------------------------------
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package org.eclipse.moquette.parser.netty;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import org.eclipse.moquette.proto.messages.PubRelMessage;
import org.junit.Before;
import org.junit.Test;
import static org.eclipse.moquette.parser.netty.TestUtils.mockChannelHandler;
import static org.junit.Assert.assertEquals;
/**
*
* @author kazvictor
*/
public class PubRelEncoderTest {
ChannelHandlerContext m_mockedContext;
@Before
public void setUp() {
//mock the ChannelHandlerContext to return an UnpooledAllocator
m_mockedContext = mockChannelHandler();
}
@Test
public void testHeaderEncode() throws Exception {
int messageID = 0xAABB;
PubRelEncoder encoder = new PubRelEncoder();
PubRelMessage msg = new PubRelMessage();
msg.setMessageID(messageID);
ByteBuf out = Unpooled.buffer();
//Exercise
encoder.encode(m_mockedContext, msg, out);
//Verify
assertEquals(0x62, out.readByte()); //1 byte. See MQTT-3.6.1-1
assertEquals(0x02, out.readByte()); //2 byte, length
assertEquals((byte)0xAA, out.readByte());
assertEquals((byte)0xBB, out.readByte());
}
}