From e8efbfce42a43740f6bb071c01d608fe8692a8ac Mon Sep 17 00:00:00 2001 From: "selva.andre" Date: Tue, 14 Aug 2012 23:16:55 +0200 Subject: [PATCH] Bug fix and test to check correct encoding of retain flag --- .../org/dna/mqtt/moquette/proto/Utils.java | 5 +++- .../dna/mqtt/moquette/proto/TestUtils.java | 3 +-- .../dna/mqtt/moquette/proto/UtilsTests.java | 26 +++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 parser/src/test/java/org/dna/mqtt/moquette/proto/UtilsTests.java diff --git a/parser/src/main/java/org/dna/mqtt/moquette/proto/Utils.java b/parser/src/main/java/org/dna/mqtt/moquette/proto/Utils.java index a016bad5..fcfc5f84 100644 --- a/parser/src/main/java/org/dna/mqtt/moquette/proto/Utils.java +++ b/parser/src/main/java/org/dna/mqtt/moquette/proto/Utils.java @@ -132,10 +132,13 @@ public class Utils { } static byte encodeFlags(AbstractMessage message) { - byte flags = 0; + byte flags = 0; if (message.isDupFlag()) { flags |= 0x08; } + if (message.isRetainFlag()) { + flags |= 0x01; + } flags |= ((message.getQos().ordinal() & 0x03) << 1); return flags; diff --git a/parser/src/test/java/org/dna/mqtt/moquette/proto/TestUtils.java b/parser/src/test/java/org/dna/mqtt/moquette/proto/TestUtils.java index 16ce1c73..71d0d17e 100644 --- a/parser/src/test/java/org/dna/mqtt/moquette/proto/TestUtils.java +++ b/parser/src/test/java/org/dna/mqtt/moquette/proto/TestUtils.java @@ -1,7 +1,5 @@ package org.dna.mqtt.moquette.proto; -import org.dna.mqtt.moquette.proto.Utils; -import org.dna.mqtt.moquette.proto.messages.AbstractMessage; import java.io.UnsupportedEncodingException; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.filterchain.IoFilter.NextFilter; @@ -9,6 +7,7 @@ import org.apache.mina.core.future.WriteFuture; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolDecoderOutput; import org.apache.mina.filter.codec.ProtocolEncoderOutput; +import org.dna.mqtt.moquette.proto.messages.AbstractMessage; import static org.junit.Assert.*; /** diff --git a/parser/src/test/java/org/dna/mqtt/moquette/proto/UtilsTests.java b/parser/src/test/java/org/dna/mqtt/moquette/proto/UtilsTests.java new file mode 100644 index 00000000..e32df123 --- /dev/null +++ b/parser/src/test/java/org/dna/mqtt/moquette/proto/UtilsTests.java @@ -0,0 +1,26 @@ +package org.dna.mqtt.moquette.proto; + +import org.dna.mqtt.moquette.proto.messages.AbstractMessage; +import org.dna.mqtt.moquette.proto.messages.UnsubscribeMessage; +import org.junit.Before; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + * @author andrea + */ +public class UtilsTests { + + @Test + public void testEncodeFlags() { + UnsubscribeMessage msg = new UnsubscribeMessage(); + msg.setRetainFlag(true); + msg.setQos(AbstractMessage.QOSType.MOST_ONE); + + //Exercise + assertEquals(1, Utils.encodeFlags(msg)); + } + +} +