|
9 | 9 | import io.vavr.AbstractValueTest;
|
10 | 10 | import io.vavr.collection.Seq;
|
11 | 11 | import io.vavr.collection.List;
|
| 12 | +import io.vavr.collection.Vector; |
12 | 13 | import org.junit.Test;
|
13 | 14 |
|
14 | 15 | import java.util.NoSuchElementException;
|
|
17 | 18 |
|
18 | 19 | import static io.vavr.API.Left;
|
19 | 20 | import static io.vavr.API.Right;
|
| 21 | +import static org.assertj.core.api.Assertions.assertThatThrownBy; |
20 | 22 |
|
21 | 23 | public class EitherTest extends AbstractValueTest {
|
22 | 24 |
|
@@ -93,26 +95,42 @@ public void shouldFoldRight() {
|
93 | 95 | // -- sequence
|
94 | 96 |
|
95 | 97 | @Test
|
96 |
| - public void shouldConvertListOfRightToEitherOfList() { |
97 |
| - List<Either<String, String>> tries = List.of(Either.right("a"), Either.right("b"), Either.right("c")); |
98 |
| - Either<String, Seq<String>> reducedEither = Either.sequence(tries); |
99 |
| - assertThat(reducedEither instanceof Either.Right).isTrue(); |
100 |
| - assertThat(reducedEither.get().size()).isEqualTo(3); |
101 |
| - assertThat(reducedEither.get().mkString()).isEqualTo("abc"); |
| 98 | + public void shouldThrowWhenSequencingNull() { |
| 99 | + assertThatThrownBy(() -> Either.sequence(null)) |
| 100 | + .isInstanceOf(NullPointerException.class) |
| 101 | + .withFailMessage("eithers is null"); |
102 | 102 | }
|
103 | 103 |
|
104 | 104 | @Test
|
105 |
| - public void shouldConvertListOfLeftToEitherOfList() { |
106 |
| - List<Either<Integer, String>> tries = List.of(Either.left(1), Either.left(2), Either.left(3)); |
107 |
| - Either<Integer, Seq<String>> reducedEither = Either.sequence(tries); |
108 |
| - assertThat(reducedEither).isEqualTo(Either.left(1)); |
| 105 | + public void shouldSequenceEmptyIterableOfEither() { |
| 106 | + final Iterable<Either<Integer, String>> eithers = List.empty(); |
| 107 | + final Either<Seq<Integer>, Seq<String>> actual = Either.sequence(eithers); |
| 108 | + final Either<Seq<Integer>, Seq<String>> expected = Either.right(Vector.empty()); |
| 109 | + assertThat(actual).isEqualTo(expected); |
| 110 | + } |
| 111 | + |
| 112 | + @Test |
| 113 | + public void shouldSequenceNonEmptyIterableOfRight() { |
| 114 | + final Iterable<Either<Integer, String>> eithers = List.of(Either.right("a"), Either.right("b"), Either.right("c")); |
| 115 | + final Either<Seq<Integer>, Seq<String>> actual = Either.sequence(eithers); |
| 116 | + final Either<Seq<Integer>, Seq<String>> expected = Either.right(Vector.of("a", "b", "c")); |
| 117 | + assertThat(actual).isEqualTo(expected); |
109 | 118 | }
|
110 | 119 |
|
111 | 120 | @Test
|
112 |
| - public void shouldConvertListOfMixedEitherToEitherOfList() { |
113 |
| - List<Either<Integer,String>> tries = List.of(Either.right("a"), Either.left(1), Either.right("c")); |
114 |
| - Either<Integer, Seq<String>> reducedEither = Either.sequence(tries); |
115 |
| - assertThat(reducedEither).isEqualTo(Either.left(1)); |
| 121 | + public void shouldSequenceNonEmptyIterableOfLeft() { |
| 122 | + final Iterable<Either<Integer, String>> eithers = List.of(Either.left(1), Either.left(2), Either.left(3)); |
| 123 | + final Either<Seq<Integer>, Seq<String>> actual = Either.sequence(eithers); |
| 124 | + final Either<Seq<Integer>, Seq<String>> expected = Either.left(Vector.of(1, 2, 3)); |
| 125 | + assertThat(actual).isEqualTo(expected); |
| 126 | + } |
| 127 | + |
| 128 | + @Test |
| 129 | + public void shouldSequenceNonEmptyIterableOfMixedEither() { |
| 130 | + final Iterable<Either<Integer,String>> eithers = List.of(Either.right("a"), Either.left(1), Either.right("c"), Either.left(3)); |
| 131 | + final Either<Seq<Integer>, Seq<String>> actual = Either.sequence(eithers); |
| 132 | + final Either<Seq<Integer>, Seq<String>> expected = Either.left(Vector.of(1, 3)); |
| 133 | + assertThat(actual).isEqualTo(expected); |
116 | 134 | }
|
117 | 135 |
|
118 | 136 | @Test
|
|
0 commit comments