package info.gehrels.flockDBClient;
import com.twitter.flockdb.thrift.FlockException;
import info.gehrels.flockDBClient.FlockAndThriftExceptionHandling.MethodObject;
import org.apache.thrift.TException;
import org.junit.Test;
import java.io.IOException;
import static info.gehrels.flockDBClient.FlockAndThriftExceptionHandling.handleFlockAndThriftExceptions;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
public class FlockAndThriftExceptionHandlingTest {
private static final String ARBITRARY_TEST_STRING = "arbitraryTestString";
@Test
public void returnsMethodObjectsValueWhenNoExceptionOccured() throws IOException {
String s = handleFlockAndThriftExceptions(new MethodObject<String>() {
@Override
public String call() throws TException, FlockException {
return ARBITRARY_TEST_STRING;
}
});
assertThat(s, is(ARBITRARY_TEST_STRING));
}
@Test(expected = FlockDBException.class)
public void wrapsAThrownFlockExceptionAsARuntimeExceptionCalledFlockDBException() throws IOException {
handleFlockAndThriftExceptions(new MethodObject<String>() {
@Override
public String call() throws TException, FlockException {
throw new FlockException();
}
});
}
@Test(expected = FlockDBException.class)
public void wrapsAThrownTExceptionAsAFlockDBException() throws IOException {
handleFlockAndThriftExceptions(new MethodObject<String>() {
@Override
public String call() throws TException, FlockException {
throw new TException();
}
});
}
@Test(expected = IllegalArgumentException.class)
public void rethrowsAnyOtherExceptions() throws IOException {
handleFlockAndThriftExceptions(new MethodObject<String>() {
@Override
public String call() throws TException, FlockException {
throw new IllegalArgumentException();
}
});
}
}