Skip to content

Commit 0d0b212

Browse files
author
bert.degeyter
committed
action plan 1
1 parent 79ce774 commit 0d0b212

File tree

11 files changed

+1729
-44
lines changed

11 files changed

+1729
-44
lines changed

pom.xml

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@
5151
<encoding>UTF-8</encoding>
5252
<sshj.version>0.35.0</sshj.version>
5353
<slf4j.version>1.7.35</slf4j.version>
54-
<junit4.version>4.13.2</junit4.version>
54+
<junit5.version>5.10.1</junit5.version>
55+
<mockito.version>5.7.0</mockito.version>
56+
<assertj.version>3.24.2</assertj.version>
57+
<testcontainers.version>1.19.3</testcontainers.version>
5558
<project.build.outputTimestamp>1970-01-01T00:00:00Z</project.build.outputTimestamp>
5659
</properties>
5760

@@ -72,10 +75,35 @@
7275
<version>${slf4j.version}</version>
7376
<scope>test</scope>
7477
</dependency>
78+
<!-- JUnit 5 -->
7579
<dependency>
76-
<groupId>junit</groupId>
77-
<artifactId>junit</artifactId>
78-
<version>${junit4.version}</version>
80+
<groupId>org.junit.jupiter</groupId>
81+
<artifactId>junit-jupiter</artifactId>
82+
<version>${junit5.version}</version>
83+
<scope>test</scope>
84+
</dependency>
85+
86+
<!-- Mockito -->
87+
<dependency>
88+
<groupId>org.mockito</groupId>
89+
<artifactId>mockito-core</artifactId>
90+
<version>${mockito.version}</version>
91+
<scope>test</scope>
92+
</dependency>
93+
94+
<!-- AssertJ -->
95+
<dependency>
96+
<groupId>org.assertj</groupId>
97+
<artifactId>assertj-core</artifactId>
98+
<version>${assertj.version}</version>
99+
<scope>test</scope>
100+
</dependency>
101+
102+
<!-- TestContainers -->
103+
<dependency>
104+
<groupId>org.testcontainers</groupId>
105+
<artifactId>junit-jupiter</artifactId>
106+
<version>${testcontainers.version}</version>
79107
<scope>test</scope>
80108
</dependency>
81109
</dependencies>
@@ -114,7 +142,13 @@
114142
<plugin>
115143
<groupId>org.apache.maven.plugins</groupId>
116144
<artifactId>maven-surefire-plugin</artifactId>
117-
<version>3.0.0-M5</version>
145+
<version>3.2.2</version>
146+
<configuration>
147+
<includes>
148+
<include>**/*Test.java</include>
149+
<include>**/*Tests.java</include>
150+
</includes>
151+
</configuration>
118152
</plugin>
119153
</plugins>
120154
</build>
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
package com.github.theholywaffle.teamspeak3.api.wrapper;
2+
3+
import com.github.theholywaffle.teamspeak3.api.ChannelProperty;
4+
import org.junit.jupiter.api.BeforeEach;
5+
import org.junit.jupiter.api.Test;
6+
7+
import java.util.HashMap;
8+
import java.util.Map;
9+
10+
import static org.junit.jupiter.api.Assertions.*;
11+
12+
public class ChannelTest {
13+
14+
private Map<String, String> channelMap;
15+
private Channel channel;
16+
17+
@BeforeEach
18+
public void setUp() {
19+
channelMap = new HashMap<>();
20+
channelMap.put(ChannelProperty.CID.getName(), "5");
21+
channelMap.put(ChannelProperty.PID.getName(), "0");
22+
channelMap.put(ChannelProperty.CHANNEL_ORDER.getName(), "0");
23+
channelMap.put(ChannelProperty.CHANNEL_NAME.getName(), "Test Channel");
24+
channelMap.put(ChannelProperty.CHANNEL_TOPIC.getName(), "Test Topic");
25+
channelMap.put(ChannelProperty.CHANNEL_FLAG_DEFAULT.getName(), "0");
26+
channelMap.put(ChannelProperty.CHANNEL_FLAG_PASSWORD.getName(), "0");
27+
channelMap.put(ChannelProperty.CHANNEL_FLAG_PERMANENT.getName(), "1");
28+
channelMap.put(ChannelProperty.CHANNEL_FLAG_SEMI_PERMANENT.getName(), "0");
29+
channelMap.put(ChannelProperty.CHANNEL_CODEC.getName(), "4");
30+
channelMap.put(ChannelProperty.CHANNEL_CODEC_QUALITY.getName(), "7");
31+
channelMap.put(ChannelProperty.CHANNEL_MAXCLIENTS.getName(), "10");
32+
channelMap.put(ChannelProperty.CHANNEL_MAXFAMILYCLIENTS.getName(), "100");
33+
channelMap.put(ChannelProperty.CHANNEL_NEEDED_TALK_POWER.getName(), "0");
34+
channelMap.put(ChannelProperty.CHANNEL_NEEDED_SUBSCRIBE_POWER.getName(), "0");
35+
channelMap.put(ChannelProperty.TOTAL_CLIENTS.getName(), "3");
36+
channelMap.put(ChannelProperty.TOTAL_CLIENTS_FAMILY.getName(), "5");
37+
channelMap.put(ChannelProperty.CHANNEL_ICON_ID.getName(), "12345");
38+
39+
channel = new Channel(channelMap);
40+
}
41+
42+
@Test
43+
public void constructor_ValidMap() {
44+
assertNotNull(channel);
45+
assertEquals(channelMap, channel.getMap());
46+
}
47+
48+
@Test
49+
public void getId() {
50+
assertEquals(5, channel.getId());
51+
}
52+
53+
@Test
54+
public void getTotalClientsFamily() {
55+
assertEquals(5, channel.getTotalClientsFamily());
56+
}
57+
58+
@Test
59+
public void getTotalClients() {
60+
assertEquals(3, channel.getTotalClients());
61+
}
62+
63+
@Test
64+
public void getNeededSubscribePower() {
65+
assertEquals(0, channel.getNeededSubscribePower());
66+
}
67+
68+
@Test
69+
public void isEmpty_False() {
70+
assertFalse(channel.isEmpty());
71+
}
72+
73+
@Test
74+
public void isEmpty_True() {
75+
channelMap.put(ChannelProperty.TOTAL_CLIENTS.getName(), "0");
76+
Channel emptyChannel = new Channel(channelMap);
77+
assertTrue(emptyChannel.isEmpty());
78+
}
79+
80+
@Test
81+
public void isFamilyEmpty_False() {
82+
assertFalse(channel.isFamilyEmpty());
83+
}
84+
85+
@Test
86+
public void isFamilyEmpty_True() {
87+
channelMap.put(ChannelProperty.TOTAL_CLIENTS_FAMILY.getName(), "0");
88+
Channel emptyFamilyChannel = new Channel(channelMap);
89+
assertTrue(emptyFamilyChannel.isFamilyEmpty());
90+
}
91+
92+
// Test inherited methods from ChannelBase
93+
@Test
94+
public void getName() {
95+
assertEquals("Test Channel", channel.getName());
96+
}
97+
98+
@Test
99+
public void getTopic() {
100+
assertEquals("Test Topic", channel.getTopic());
101+
}
102+
103+
@Test
104+
public void getParentChannelId() {
105+
assertEquals(0, channel.getParentChannelId());
106+
}
107+
108+
@Test
109+
public void getOrder() {
110+
assertEquals(0, channel.getOrder());
111+
}
112+
113+
@Test
114+
public void isDefault() {
115+
assertFalse(channel.isDefault());
116+
}
117+
118+
@Test
119+
public void hasPassword() {
120+
assertFalse(channel.hasPassword());
121+
}
122+
123+
@Test
124+
public void isPermanent() {
125+
assertTrue(channel.isPermanent());
126+
}
127+
128+
@Test
129+
public void isSemiPermanent() {
130+
assertFalse(channel.isSemiPermanent());
131+
}
132+
133+
@Test
134+
public void getCodec() {
135+
// The getCodec() method returns a Codec enum, not an int
136+
// We need to test the actual codec value
137+
assertEquals(4, channel.getCodec().getIndex());
138+
}
139+
140+
@Test
141+
public void getCodecQuality() {
142+
assertEquals(7, channel.getCodecQuality());
143+
}
144+
145+
@Test
146+
public void getMaxClients() {
147+
assertEquals(10, channel.getMaxClients());
148+
}
149+
150+
@Test
151+
public void getMaxFamilyClients() {
152+
assertEquals(100, channel.getMaxFamilyClients());
153+
}
154+
155+
@Test
156+
public void getNeededTalkPower() {
157+
assertEquals(0, channel.getNeededTalkPower());
158+
}
159+
160+
@Test
161+
public void getIconId() {
162+
assertEquals(12345L, channel.getIconId());
163+
}
164+
165+
@Test
166+
public void isDefault_True() {
167+
channelMap.put(ChannelProperty.CHANNEL_FLAG_DEFAULT.getName(), "1");
168+
Channel defaultChannel = new Channel(channelMap);
169+
assertTrue(defaultChannel.isDefault());
170+
}
171+
172+
@Test
173+
public void hasPassword_True() {
174+
channelMap.put(ChannelProperty.CHANNEL_FLAG_PASSWORD.getName(), "1");
175+
Channel passwordChannel = new Channel(channelMap);
176+
assertTrue(passwordChannel.hasPassword());
177+
}
178+
179+
@Test
180+
public void isPermanent_False() {
181+
channelMap.put(ChannelProperty.CHANNEL_FLAG_PERMANENT.getName(), "0");
182+
Channel nonPermanentChannel = new Channel(channelMap);
183+
assertFalse(nonPermanentChannel.isPermanent());
184+
}
185+
186+
@Test
187+
public void isSemiPermanent_True() {
188+
channelMap.put(ChannelProperty.CHANNEL_FLAG_SEMI_PERMANENT.getName(), "1");
189+
Channel semiPermanentChannel = new Channel(channelMap);
190+
assertTrue(semiPermanentChannel.isSemiPermanent());
191+
}
192+
193+
@Test
194+
public void getSecondsEmpty() {
195+
// Add test data for seconds empty
196+
channelMap.put(ChannelProperty.SECONDS_EMPTY.getName(), "120");
197+
Channel channelWithSecondsEmpty = new Channel(channelMap);
198+
assertEquals(120, channelWithSecondsEmpty.getSecondsEmpty());
199+
}
200+
201+
@Test
202+
public void edgeCase_NegativeValues() {
203+
channelMap.put(ChannelProperty.TOTAL_CLIENTS.getName(), "-1");
204+
channelMap.put(ChannelProperty.TOTAL_CLIENTS_FAMILY.getName(), "-1");
205+
Channel negativeChannel = new Channel(channelMap);
206+
207+
assertEquals(-1, negativeChannel.getTotalClients());
208+
assertEquals(-1, negativeChannel.getTotalClientsFamily());
209+
assertFalse(negativeChannel.isEmpty()); // -1 != 0
210+
assertFalse(negativeChannel.isFamilyEmpty()); // -1 != 0
211+
}
212+
213+
@Test
214+
public void edgeCase_MissingProperties() {
215+
Map<String, String> minimalMap = new HashMap<>();
216+
minimalMap.put(ChannelProperty.CID.getName(), "1");
217+
// Missing other properties should return default values
218+
219+
Channel minimalChannel = new Channel(minimalMap);
220+
221+
assertEquals(1, minimalChannel.getId());
222+
assertEquals(-1, minimalChannel.getTotalClients()); // Default value for missing property
223+
assertEquals(-1, minimalChannel.getTotalClientsFamily()); // Default value for missing property
224+
assertFalse(minimalChannel.isEmpty()); // -1 != 0, so not empty
225+
assertFalse(minimalChannel.isFamilyEmpty()); // -1 != 0, so not empty
226+
}
227+
}

0 commit comments

Comments
 (0)