1 package net.pterodactylus.xdcc.ui.stdin;
3 import java.io.IOException;
4 import java.io.StringWriter;
6 import java.time.Duration;
7 import java.util.Arrays;
8 import java.util.Collections;
10 import net.pterodactylus.xdcc.core.Core;
11 import net.pterodactylus.xdcc.data.ConnectedNetwork;
12 import net.pterodactylus.xdcc.data.Network;
14 import org.hamcrest.MatcherAssert;
15 import org.hamcrest.Matchers;
16 import org.junit.Test;
17 import org.mockito.Mockito;
20 * Unit test for {@link UptimeCommand}.
22 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
24 public class UptimeCommandTest {
26 private final Core core = Mockito.mock(Core.class);
27 private final UptimeCommand uptimeCommand = new UptimeCommand(core);
28 private final State state = Mockito.mock(State.class);
29 private final Writer writer = new StringWriter();
32 public void commandNameIsCorrect() {
33 MatcherAssert.assertThat(uptimeCommand.getName(), Matchers.is("uptime"));
37 public void aliasesAreEmpty() {
38 MatcherAssert.assertThat(uptimeCommand.getAliases(), Matchers.empty());
42 public void connectionUptimeIsWritten() throws IOException {
43 Mockito.when(core.getUptime()).thenReturn(createDuration(1, 2, 3, 4, 5));
44 uptimeCommand.execute(state, Collections.<String>emptyList(), writer);
45 MatcherAssert.assertThat(writer.toString(), Matchers.containsString("1w 2d 3h 4m 5s"));
49 public void connectionUptimeIsWrittenIfItIsZeroSeconds() throws IOException {
50 Mockito.when(core.getUptime()).thenReturn(createDuration(0, 0, 0, 0, 0));
51 uptimeCommand.execute(state, Collections.<String>emptyList(), writer);
52 MatcherAssert.assertThat(writer.toString(), Matchers.containsString("0s"));
56 public void networkUptimeIsWritten() throws IOException {
57 Mockito.when(core.getUptime()).thenReturn(createDuration(1, 2, 3, 4, 5));
58 ConnectedNetwork connectedNetwork = Mockito.mock(ConnectedNetwork.class);
59 Network network = Mockito.mock(Network.class);
60 Mockito.when(network.name()).thenReturn("Test");
61 Mockito.when(connectedNetwork.getNetwork()).thenReturn(network);
62 Mockito.when(connectedNetwork.getUptime()).thenReturn(createDuration(2, 3, 4, 5, 6));
63 Mockito.when(core.connectedNetworks()).thenReturn(Arrays.asList(connectedNetwork));
64 uptimeCommand.execute(state, Collections.<String>emptyList(), writer);
65 MatcherAssert.assertThat(writer.toString(), Matchers.containsString("2w 3d 4h 5m 6s"));
68 private Duration createDuration(int weeks, int days, int hours, int minutes, int seconds) {
69 return Duration.ofSeconds(
70 weeks * (7 * 24 * 60 * 60) +
71 days * (24 * 60 * 60) +