diff --git a/org.eclipse.paho.mqttv5.client.test/src/test/java/org/eclipse/paho/mqttv5/client/internal/MqttSessionStateTest.java b/org.eclipse.paho.mqttv5.client.test/src/test/java/org/eclipse/paho/mqttv5/client/internal/MqttSessionStateTest.java new file mode 100644 index 000000000..1f383b272 --- /dev/null +++ b/org.eclipse.paho.mqttv5.client.test/src/test/java/org/eclipse/paho/mqttv5/client/internal/MqttSessionStateTest.java @@ -0,0 +1,28 @@ +package org.eclipse.paho.mqttv5.client.internal; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class MqttSessionStateTest { + + @Test + public void testClearSessionState() { + MqttSessionState state = new MqttSessionState(); + state.clearSessionState(); + assertTrue("Clear session state resets subscription identifier", 1 == state.getNextSubscriptionIdentifier()); + } + + /** + * Test that the subscription identifier is bounded between 1 and 268,435,455 + */ + @Test + public void testSubscriptionIdIsBounded() { + MqttSessionState state = new MqttSessionState(); + for (int i = 1; i <= 268_435_456; i++) { + assertTrue("Subscription identifier minimum bound", state.getNextSubscriptionIdentifier()>=1); + assertTrue("Subscription identifier maximum bound", state.getNextSubscriptionIdentifier()<=268_435_455); + } + } + +} diff --git a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/MqttSessionState.java b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/MqttSessionState.java index 63eb7f650..9df1fb4c4 100644 --- a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/MqttSessionState.java +++ b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/MqttSessionState.java @@ -14,18 +14,34 @@ *