package net.i2p.client.streaming;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.Map;
import net.i2p.client.SendMessageStatusListener;
import net.i2p.data.i2cp.MessageStatusMessage;
import org.junit.Test;
public class I2PSocketExceptionTest {
private static Map<Integer, String> statusMap;
static {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(MessageStatusMessage.STATUS_SEND_BEST_EFFORT_FAILURE, "Message timeout");
map.put(MessageStatusMessage.STATUS_SEND_GUARANTEED_FAILURE, "Message timeout");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL, "Failed delivery to local destination");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_ROUTER, "Local router failure");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_NETWORK, "Local network failure");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_BAD_SESSION, "Session closed");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_BAD_MESSAGE, "Invalid message");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_BAD_OPTIONS, "Invalid message options");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_OVERFLOW, "Buffer overflow");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_EXPIRED, "Message expired");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL_LEASESET, "Local lease set invalid");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_NO_TUNNELS, "No local tunnels");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_UNSUPPORTED_ENCRYPTION, "Unsupported encryption options");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_DESTINATION, "Invalid destination");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_BAD_LEASESET, "Local router failure");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_EXPIRED_LEASESET, "Destination lease set expired");
map.put(MessageStatusMessage.STATUS_SEND_FAILURE_NO_LEASESET, "Destination lease set not found");
map.put(SendMessageStatusListener.STATUS_CANCELLED, "Local destination shutdown");
map.put(I2PSocketException.STATUS_CONNECTION_RESET, "Connection was reset");
statusMap = map;
}
@Test
public void testKnownStatus() {
for (Map.Entry<Integer, String> entry : statusMap.entrySet()) {
int status = entry.getKey();
String msg = entry.getValue();
I2PSocketException e = new I2PSocketException(status);
assertThat(e.getStatus(), is(status));
assertThat(e.getMessage(), is(msg));
}
}
@Test
public void testCustomStatus() {
I2PSocketException e = new I2PSocketException("foo");
assertThat(e.getStatus(), is(-1));
assertThat(e.getMessage(), is("foo"));
}
@Test
public void testUnknownStatus() {
I2PSocketException e = new I2PSocketException(255);
assertThat(e.getStatus(), is(255));
assertThat(e.getMessage(), is("Failure code: 255"));
}
}