use of javaslang.control.Try in project javaslang by javaslang.
the class CheckedFunction0Test method shouldLiftTryPartialFunction.
@Test
public void shouldLiftTryPartialFunction() {
final AtomicInteger integer = new AtomicInteger();
CheckedFunction0<MessageDigest> digest = () -> MessageDigest.getInstance(integer.get() == 0 ? "MD5" : "Unknown");
Function0<Try<MessageDigest>> liftTry = CheckedFunction0.liftTry(digest);
Try<MessageDigest> md5 = liftTry.apply();
assertThat(md5.isSuccess()).isTrue();
assertThat(md5.get()).isNotNull();
assertThat(md5.get().getAlgorithm()).isEqualToIgnoringCase("MD5");
assertThat(md5.get().getDigestLength()).isEqualTo(16);
integer.incrementAndGet();
Try<MessageDigest> unknown = liftTry.apply();
assertThat(unknown.isFailure()).isTrue();
assertThat(unknown.getCause()).isNotNull();
assertThat(unknown.getCause().getMessage()).isEqualToIgnoringCase("Unknown MessageDigest not available");
}
use of javaslang.control.Try in project javaslang by javaslang.
the class StreamTest method shouldNotEvaluateHeadOfTailWhenCallingIteratorHasNext.
// See #327, #594
@Test
public void shouldNotEvaluateHeadOfTailWhenCallingIteratorHasNext() {
final Integer[] vals = new Integer[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
final CheckedFunction2<StringBuilder, Integer, Void> doStuff = (builder, i) -> {
builder.append(i);
if (i == 5) {
throw new Exception("Some error !!!");
} else {
return null;
}
};
final StringBuilder actual = new StringBuilder();
final CheckedFunction1<Integer, Void> consumer1 = doStuff.apply(actual);
Stream.of(vals).map(v -> Try.run(() -> consumer1.apply(v))).find(Try::isFailure).getOrElse(() -> Try.success(null));
final StringBuilder expected = new StringBuilder();
final CheckedFunction1<Integer, Void> consumer2 = doStuff.apply(expected);
java.util.stream.Stream.of(vals).map(v -> Try.run(() -> consumer2.apply(v))).filter(Try::isFailure).findFirst().orElseGet(() -> Try.success(null));
assertThat(actual.toString()).isEqualTo(expected.toString());
}
use of javaslang.control.Try in project javaslang by javaslang.
the class Function0Test method shouldLiftTryPartialFunction.
@Test
public void shouldLiftTryPartialFunction() {
AtomicInteger integer = new AtomicInteger();
Function0<Integer> divByZero = () -> 10 / integer.get();
Function0<Try<Integer>> divByZeroTry = Function0.liftTry(divByZero);
Try<Integer> res = divByZeroTry.apply();
assertThat(res.isFailure()).isTrue();
assertThat(res.getCause()).isNotNull();
assertThat(res.getCause().getMessage()).isEqualToIgnoringCase("/ by zero");
integer.incrementAndGet();
res = divByZeroTry.apply();
assertThat(res.isSuccess()).isTrue();
assertThat(res.get()).isEqualTo(10);
}
use of javaslang.control.Try in project javaslang by javaslang.
the class Function2Test method shouldLiftTryPartialFunction.
@Test
public void shouldLiftTryPartialFunction() {
AtomicInteger integer = new AtomicInteger();
Function2<Integer, Integer, Integer> divByZero = (i1, i2) -> 10 / integer.get();
Function2<Integer, Integer, Try<Integer>> divByZeroTry = Function2.liftTry(divByZero);
Try<Integer> res = divByZeroTry.apply(0, 0);
assertThat(res.isFailure()).isTrue();
assertThat(res.getCause()).isNotNull();
assertThat(res.getCause().getMessage()).isEqualToIgnoringCase("/ by zero");
integer.incrementAndGet();
res = divByZeroTry.apply(1, 2);
assertThat(res.isSuccess()).isTrue();
assertThat(res.get()).isEqualTo(10);
}
use of javaslang.control.Try in project javaslang by javaslang.
the class Function5Test method shouldLiftTryPartialFunction.
@Test
public void shouldLiftTryPartialFunction() {
AtomicInteger integer = new AtomicInteger();
Function5<Integer, Integer, Integer, Integer, Integer, Integer> divByZero = (i1, i2, i3, i4, i5) -> 10 / integer.get();
Function5<Integer, Integer, Integer, Integer, Integer, Try<Integer>> divByZeroTry = Function5.liftTry(divByZero);
Try<Integer> res = divByZeroTry.apply(0, 0, 0, 0, 0);
assertThat(res.isFailure()).isTrue();
assertThat(res.getCause()).isNotNull();
assertThat(res.getCause().getMessage()).isEqualToIgnoringCase("/ by zero");
integer.incrementAndGet();
res = divByZeroTry.apply(1, 2, 3, 4, 5);
assertThat(res.isSuccess()).isTrue();
assertThat(res.get()).isEqualTo(10);
}
Aggregations