Added encode/decode for PubAck message

This commit is contained in:
andrea
2013-09-12 14:45:04 +02:00
parent facec04ac2
commit 1b1cc715be
10 changed files with 169 additions and 3 deletions
@@ -0,0 +1,51 @@
package org.dna.mqtt.moquette.parser.netty;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.util.ArrayList;
import java.util.List;
import org.dna.mqtt.moquette.proto.messages.AbstractMessage;
import org.dna.mqtt.moquette.proto.messages.PubAckMessage;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import org.junit.Before;
import org.junit.Test;
/**
*
* @author andrea
*/
public class PubAckDecoderTest {
ByteBuf m_buff;
PubAckDecoder m_msgdec;
@Before
public void setUp() {
m_msgdec = new PubAckDecoder();
}
@Test
public void testHeader() throws Exception {
m_buff = Unpooled.buffer(14);
int messageId = 0xAABB;
initHeader(m_buff, messageId);
List<Object> results = new ArrayList<Object >();
//Excercise
m_msgdec.decode(null, m_buff, results);
assertFalse(results.isEmpty());
PubAckMessage message = (PubAckMessage)results.get(0);
assertNotNull(message);
assertEquals(messageId, message.getMessageID().intValue());
assertEquals(AbstractMessage.PUBACK, message.getMessageType());
}
private void initHeader(ByteBuf buff, int messageID) {
buff.clear().writeByte(AbstractMessage.PUBACK << 4).writeByte(2);
//return code
buff.writeShort(messageID);
}
}
@@ -0,0 +1,42 @@
package org.dna.mqtt.moquette.parser.netty;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import org.junit.Test;
import org.junit.Before;
import static org.junit.Assert.*;
import static org.dna.mqtt.moquette.parser.netty.TestUtils.*;
import org.dna.mqtt.moquette.proto.messages.PubAckMessage;
/**
*
* @author andrea
*/
public class PubAckEncoderTest {
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;
PubAckEncoder encoder = new PubAckEncoder();
PubAckMessage msg = new PubAckMessage();
msg.setMessageID(messageID);
ByteBuf out = Unpooled.buffer();
//Exercise
encoder.encode(m_mockedContext, msg, out);
//Verify
assertEquals(0x40, out.readByte()); //1 byte
assertEquals(0x02, out.readByte()); //2 byte, length
assertEquals((byte)0xAA, out.readByte());
assertEquals((byte)0xBB, out.readByte());
}
}