Search in sources :

Example 6 with Try

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");
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Try(javaslang.control.Try) MessageDigest(java.security.MessageDigest) Test(org.junit.Test)

Example 7 with Try

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());
}
Also used : Option(javaslang.control.Option) Predicate(java.util.function.Predicate) BiFunction(java.util.function.BiFunction) Test(org.junit.Test) javaslang(javaslang) Function(java.util.function.Function) Supplier(java.util.function.Supplier) Try(javaslang.control.Try) ArrayList(java.util.ArrayList) Stream.concat(javaslang.collection.Stream.concat) BigDecimal(java.math.BigDecimal) Ignore(org.junit.Ignore) InvalidObjectException(java.io.InvalidObjectException) Collector(java.util.stream.Collector) Spliterator(java.util.Spliterator) Try(javaslang.control.Try) InvalidObjectException(java.io.InvalidObjectException) Test(org.junit.Test)

Example 8 with Try

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);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Try(javaslang.control.Try) Test(org.junit.Test)

Example 9 with Try

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);
}
Also used : CharSequence(java.lang.CharSequence) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Test(org.junit.Test) Try(javaslang.control.Try) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Try(javaslang.control.Try) Test(org.junit.Test)

Example 10 with Try

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);
}
Also used : CharSequence(java.lang.CharSequence) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Test(org.junit.Test) Try(javaslang.control.Try) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Try(javaslang.control.Try) Test(org.junit.Test)

Aggregations

Try (javaslang.control.Try)11 Test (org.junit.Test)11 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)10 CharSequence (java.lang.CharSequence)8 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)8 InvalidObjectException (java.io.InvalidObjectException)1 BigDecimal (java.math.BigDecimal)1 MessageDigest (java.security.MessageDigest)1 ArrayList (java.util.ArrayList)1 Spliterator (java.util.Spliterator)1 BiFunction (java.util.function.BiFunction)1 Function (java.util.function.Function)1 Predicate (java.util.function.Predicate)1 Supplier (java.util.function.Supplier)1 Collector (java.util.stream.Collector)1 javaslang (javaslang)1 Stream.concat (javaslang.collection.Stream.concat)1 Option (javaslang.control.Option)1 Ignore (org.junit.Ignore)1