Skip to content

Commit cdef16c

Browse files
committed
Add unit tests for enums in package com.hivemq.client.mqtt
DisconnectReasonCode canBeSentByClient: add MALFORMED_PACKET, BAD_AUTHENTICATION_METHOD, PAYLOAD_FORMAT_INVALID, remove TOPIC_FILTER_INVALID DisconnectReasonCode canBeSetByUser: add PAYLOAD_FORMAT_INVALID
1 parent d96c6f2 commit cdef16c

File tree

17 files changed

+1477
-89
lines changed

17 files changed

+1477
-89
lines changed

src/main/java/com/hivemq/client/mqtt/mqtt5/message/disconnect/Mqtt5DisconnectReasonCode.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -206,14 +206,16 @@ public int getCode() {
206206
}
207207

208208
private static final @NotNull EnumSet<Mqtt5DisconnectReasonCode> BY_CLIENT =
209-
EnumSet.of(NORMAL_DISCONNECTION, DISCONNECT_WITH_WILL_MESSAGE, UNSPECIFIED_ERROR, PROTOCOL_ERROR,
210-
IMPLEMENTATION_SPECIFIC_ERROR, TOPIC_FILTER_INVALID, TOPIC_NAME_INVALID, RECEIVE_MAXIMUM_EXCEEDED,
211-
TOPIC_ALIAS_INVALID, PACKET_TOO_LARGE, MESSAGE_RATE_TOO_HIGH, QUOTA_EXCEEDED,
212-
ADMINISTRATIVE_ACTION);
209+
EnumSet.of(NORMAL_DISCONNECTION, DISCONNECT_WITH_WILL_MESSAGE, UNSPECIFIED_ERROR, MALFORMED_PACKET,
210+
PROTOCOL_ERROR, IMPLEMENTATION_SPECIFIC_ERROR, BAD_AUTHENTICATION_METHOD, TOPIC_NAME_INVALID,
211+
RECEIVE_MAXIMUM_EXCEEDED, TOPIC_ALIAS_INVALID, PACKET_TOO_LARGE, MESSAGE_RATE_TOO_HIGH,
212+
QUOTA_EXCEEDED, ADMINISTRATIVE_ACTION, PAYLOAD_FORMAT_INVALID);
213213
private static final @NotNull EnumSet<Mqtt5DisconnectReasonCode> BY_USER = EnumSet.copyOf(BY_CLIENT);
214214

215215
static {
216-
BY_USER.removeAll(EnumSet.of(PROTOCOL_ERROR, RECEIVE_MAXIMUM_EXCEEDED, TOPIC_ALIAS_INVALID, PACKET_TOO_LARGE));
216+
BY_USER.removeAll(
217+
EnumSet.of(MALFORMED_PACKET, PROTOCOL_ERROR, BAD_AUTHENTICATION_METHOD, RECEIVE_MAXIMUM_EXCEEDED,
218+
TOPIC_ALIAS_INVALID, PACKET_TOO_LARGE));
217219
}
218220

219221
@Override
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright 2018 dc-square and the HiveMQ MQTT Client Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package com.hivemq.client.mqtt;
19+
20+
import org.jetbrains.annotations.NotNull;
21+
import org.junit.jupiter.params.ParameterizedTest;
22+
import org.junit.jupiter.params.provider.EnumSource;
23+
24+
import static org.junit.jupiter.api.Assertions.assertFalse;
25+
import static org.junit.jupiter.api.Assertions.assertTrue;
26+
27+
/**
28+
* @author Silvio Giebl
29+
*/
30+
class MqttClientStateTest {
31+
32+
@ParameterizedTest
33+
@EnumSource(value = MqttClientState.class, names = {"CONNECTED"})
34+
void isConnected_true(final @NotNull MqttClientState clientState) {
35+
assertTrue(clientState.isConnected());
36+
}
37+
38+
@ParameterizedTest
39+
@EnumSource(value = MqttClientState.class,
40+
names = {"DISCONNECTED", "CONNECTING", "DISCONNECTED_RECONNECT", "CONNECTING_RECONNECT"})
41+
void isConnected_false(final @NotNull MqttClientState clientState) {
42+
assertFalse(clientState.isConnected());
43+
}
44+
45+
@ParameterizedTest
46+
@EnumSource(value = MqttClientState.class, names = {"CONNECTED", "DISCONNECTED_RECONNECT", "CONNECTING_RECONNECT"})
47+
void isConnectedOrReconnect_true(final @NotNull MqttClientState clientState) {
48+
assertTrue(clientState.isConnectedOrReconnect());
49+
}
50+
51+
@ParameterizedTest
52+
@EnumSource(value = MqttClientState.class, names = {"DISCONNECTED", "CONNECTING"})
53+
void isConnectedOrReconnect_false(final @NotNull MqttClientState clientState) {
54+
assertFalse(clientState.isConnectedOrReconnect());
55+
}
56+
}
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
/*
2+
* Copyright 2018 dc-square and the HiveMQ MQTT Client Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package com.hivemq.client.mqtt.mqtt3.message;
19+
20+
import org.junit.jupiter.api.Test;
21+
22+
import static org.junit.jupiter.api.Assertions.*;
23+
24+
/**
25+
* @author Silvio Giebl
26+
*/
27+
class Mqtt3MessageTypeTest {
28+
29+
@Test
30+
public void getCode_connect() {
31+
assertEquals(1, Mqtt3MessageType.CONNECT.getCode());
32+
}
33+
34+
@Test
35+
public void getCode_connack() {
36+
assertEquals(2, Mqtt3MessageType.CONNACK.getCode());
37+
}
38+
39+
@Test
40+
public void getCode_publish() {
41+
assertEquals(3, Mqtt3MessageType.PUBLISH.getCode());
42+
}
43+
44+
@Test
45+
public void getCode_puback() {
46+
assertEquals(4, Mqtt3MessageType.PUBACK.getCode());
47+
}
48+
49+
@Test
50+
public void getCode_pubrec() {
51+
assertEquals(5, Mqtt3MessageType.PUBREC.getCode());
52+
}
53+
54+
@Test
55+
public void getCode_pubrel() {
56+
assertEquals(6, Mqtt3MessageType.PUBREL.getCode());
57+
}
58+
59+
@Test
60+
public void getCode_pubcomp() {
61+
assertEquals(7, Mqtt3MessageType.PUBCOMP.getCode());
62+
}
63+
64+
@Test
65+
public void getCode_subscribe() {
66+
assertEquals(8, Mqtt3MessageType.SUBSCRIBE.getCode());
67+
}
68+
69+
@Test
70+
public void getCode_suback() {
71+
assertEquals(9, Mqtt3MessageType.SUBACK.getCode());
72+
}
73+
74+
@Test
75+
public void getCode_unsubscribe() {
76+
assertEquals(10, Mqtt3MessageType.UNSUBSCRIBE.getCode());
77+
}
78+
79+
@Test
80+
public void getCode_unsuback() {
81+
assertEquals(11, Mqtt3MessageType.UNSUBACK.getCode());
82+
}
83+
84+
@Test
85+
public void getCode_pingreq() {
86+
assertEquals(12, Mqtt3MessageType.PINGREQ.getCode());
87+
}
88+
89+
@Test
90+
public void getCode_pingresp() {
91+
assertEquals(13, Mqtt3MessageType.PINGRESP.getCode());
92+
}
93+
94+
@Test
95+
public void getCode_disconnect() {
96+
assertEquals(14, Mqtt3MessageType.DISCONNECT.getCode());
97+
}
98+
99+
@Test
100+
public void fromCode_0() {
101+
assertNull(Mqtt3MessageType.fromCode(0));
102+
}
103+
104+
@Test
105+
public void fromCode_1() {
106+
assertSame(Mqtt3MessageType.CONNECT, Mqtt3MessageType.fromCode(1));
107+
}
108+
109+
@Test
110+
public void fromCode_2() {
111+
assertSame(Mqtt3MessageType.CONNACK, Mqtt3MessageType.fromCode(2));
112+
}
113+
114+
@Test
115+
public void fromCode_3() {
116+
assertSame(Mqtt3MessageType.PUBLISH, Mqtt3MessageType.fromCode(3));
117+
}
118+
119+
@Test
120+
public void fromCode_4() {
121+
assertSame(Mqtt3MessageType.PUBACK, Mqtt3MessageType.fromCode(4));
122+
}
123+
124+
@Test
125+
public void fromCode_5() {
126+
assertSame(Mqtt3MessageType.PUBREC, Mqtt3MessageType.fromCode(5));
127+
}
128+
129+
@Test
130+
public void fromCode_6() {
131+
assertSame(Mqtt3MessageType.PUBREL, Mqtt3MessageType.fromCode(6));
132+
}
133+
134+
@Test
135+
public void fromCode_7() {
136+
assertSame(Mqtt3MessageType.PUBCOMP, Mqtt3MessageType.fromCode(7));
137+
}
138+
139+
@Test
140+
public void fromCode_8() {
141+
assertSame(Mqtt3MessageType.SUBSCRIBE, Mqtt3MessageType.fromCode(8));
142+
}
143+
144+
@Test
145+
public void fromCode_9() {
146+
assertSame(Mqtt3MessageType.SUBACK, Mqtt3MessageType.fromCode(9));
147+
}
148+
149+
@Test
150+
public void fromCode_10() {
151+
assertSame(Mqtt3MessageType.UNSUBSCRIBE, Mqtt3MessageType.fromCode(10));
152+
}
153+
154+
@Test
155+
public void fromCode_11() {
156+
assertSame(Mqtt3MessageType.UNSUBACK, Mqtt3MessageType.fromCode(11));
157+
}
158+
159+
@Test
160+
public void fromCode_12() {
161+
assertSame(Mqtt3MessageType.PINGREQ, Mqtt3MessageType.fromCode(12));
162+
}
163+
164+
@Test
165+
public void fromCode_13() {
166+
assertSame(Mqtt3MessageType.PINGRESP, Mqtt3MessageType.fromCode(13));
167+
}
168+
169+
@Test
170+
public void fromCode_14() {
171+
assertSame(Mqtt3MessageType.DISCONNECT, Mqtt3MessageType.fromCode(14));
172+
}
173+
174+
@Test
175+
public void fromCode_15() {
176+
assertNull(Mqtt3MessageType.fromCode(15));
177+
}
178+
179+
@Test
180+
public void fromCode_16() {
181+
assertNull(Mqtt3MessageType.fromCode(16));
182+
}
183+
184+
@Test
185+
public void fromCode_negative() {
186+
assertNull(Mqtt3MessageType.fromCode(-1));
187+
}
188+
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*
2+
* Copyright 2018 dc-square and the HiveMQ MQTT Client Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package com.hivemq.client.mqtt.mqtt3.message.connect.connack;
19+
20+
import org.jetbrains.annotations.NotNull;
21+
import org.junit.jupiter.api.Test;
22+
import org.junit.jupiter.params.ParameterizedTest;
23+
import org.junit.jupiter.params.provider.EnumSource;
24+
25+
import static org.junit.jupiter.api.Assertions.*;
26+
27+
/**
28+
* @author Silvio Giebl
29+
*/
30+
class Mqtt3ConnAckReturnCodeTest {
31+
32+
@Test
33+
void getCode_success() {
34+
assertEquals(0x00, Mqtt3ConnAckReturnCode.SUCCESS.getCode());
35+
}
36+
37+
@Test
38+
void getCode_unsupportedProtocolVersion() {
39+
assertEquals(0x01, Mqtt3ConnAckReturnCode.UNSUPPORTED_PROTOCOL_VERSION.getCode());
40+
}
41+
42+
@Test
43+
void getCode_identifierRejected() {
44+
assertEquals(0x02, Mqtt3ConnAckReturnCode.IDENTIFIER_REJECTED.getCode());
45+
}
46+
47+
@Test
48+
void getCode_serverUnavailable() {
49+
assertEquals(0x03, Mqtt3ConnAckReturnCode.SERVER_UNAVAILABLE.getCode());
50+
}
51+
52+
@Test
53+
void getCode_badUserNameOrPassword() {
54+
assertEquals(0x04, Mqtt3ConnAckReturnCode.BAD_USER_NAME_OR_PASSWORD.getCode());
55+
}
56+
57+
@Test
58+
void getCode_notAuthorized() {
59+
assertEquals(0x05, Mqtt3ConnAckReturnCode.NOT_AUTHORIZED.getCode());
60+
}
61+
62+
@ParameterizedTest
63+
@EnumSource(Mqtt3ConnAckReturnCode.class)
64+
void fromCode(final @NotNull Mqtt3ConnAckReturnCode returnCode) {
65+
assertEquals(returnCode, Mqtt3ConnAckReturnCode.fromCode(returnCode.getCode()));
66+
}
67+
68+
@Test
69+
void fromCode_invalidCodes() {
70+
assertNull(Mqtt3ConnAckReturnCode.fromCode(0x06));
71+
assertNull(Mqtt3ConnAckReturnCode.fromCode(0xFF));
72+
assertNull(Mqtt3ConnAckReturnCode.fromCode(-1));
73+
}
74+
75+
@ParameterizedTest
76+
@EnumSource(value = Mqtt3ConnAckReturnCode.class, names = {"SUCCESS"})
77+
void isError_false(final @NotNull Mqtt3ConnAckReturnCode returnCode) {
78+
assertFalse(returnCode.isError());
79+
}
80+
81+
@ParameterizedTest
82+
@EnumSource(value = Mqtt3ConnAckReturnCode.class, names = {
83+
"UNSUPPORTED_PROTOCOL_VERSION", "IDENTIFIER_REJECTED", "SERVER_UNAVAILABLE", "BAD_USER_NAME_OR_PASSWORD",
84+
"NOT_AUTHORIZED"
85+
})
86+
void isError_true(final @NotNull Mqtt3ConnAckReturnCode returnCode) {
87+
assertTrue(returnCode.isError());
88+
}
89+
}

0 commit comments

Comments
 (0)