Skip to content

Commit 7f908db

Browse files
authored
Add missing test coverage for Peek methods (#2961)
- Add test coverage for `Option#peek(Runnable, Consumer)` - Add test coverage for `Either#peek(Consumer, Consumer)`
1 parent 82bd4ed commit 7f908db

File tree

2 files changed

+65
-14
lines changed

2 files changed

+65
-14
lines changed

src/test/java/io/vavr/control/EitherTest.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import io.vavr.collection.List;
3131
import io.vavr.collection.Seq;
3232
import io.vavr.collection.Vector;
33+
import org.junit.jupiter.api.DisplayName;
34+
import org.junit.jupiter.api.Nested;
3335
import org.junit.jupiter.api.Test;
3436

3537
import java.util.NoSuchElementException;
@@ -482,11 +484,35 @@ public void shouldPeekLeftNil() {
482484
@Test
483485
public void shouldPeekLeftForLeft() {
484486
final int[] effect = { 0 };
485-
final Either<Integer, ?> actual = Either.left(1).peekLeft(i -> effect[0] = i);
487+
final Either<Integer, ?> actual = Either.left(1)
488+
.peekLeft(i -> effect[0] = i);
486489
assertThat(actual).isEqualTo(Either.left(1));
487490
assertThat(effect[0]).isEqualTo(1);
488491
}
489492

493+
494+
@Nested
495+
@DisplayName("peek(Runnable, Consumer)")
496+
class PeekRunnableConsumer {
497+
@Test
498+
void shouldConsumePresentValueOnPeekWhenValueIsDefined() {
499+
final int[] actual = new int[] { -1 };
500+
final Either<Integer, ?> testee = Either.left(1)
501+
.peek(i -> actual[0] = 1, i -> actual[0] = 2);
502+
assertThat(testee).isEqualTo(Either.left(1));
503+
assertThat(actual[0]).isEqualTo(1);
504+
}
505+
506+
@Test
507+
void shouldRunRunnableWhenValueIsNotDefined() {
508+
final int[] actual = new int[] { -1 };
509+
final Either<?, Integer> testee = Either.right(1)
510+
.peek(i -> actual[0] = 1, i -> actual[0] = 2);
511+
assertThat(testee).isEqualTo(Either.right(1));
512+
assertThat(actual[0]).isEqualTo(2);
513+
}
514+
}
515+
490516
@Test
491517
public void shouldNotPeekLeftForRight() {
492518
Either.right(1).peekLeft(i -> { throw new IllegalStateException(); });

src/test/java/io/vavr/control/OptionTest.java

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import io.vavr.*;
3030
import io.vavr.collection.Seq;
3131
import org.junit.jupiter.api.Assertions;
32+
import org.junit.jupiter.api.DisplayName;
33+
import org.junit.jupiter.api.Nested;
3234
import org.junit.jupiter.api.Test;
3335

3436
import java.util.*;
@@ -509,22 +511,45 @@ public void shouldMakeLeftOnNoneToValidationSupplier() {
509511
assertThat(API.None().toValidation(() -> "bad")).isEqualTo(API.Invalid("bad"));
510512
}
511513

512-
// -- peek
514+
@Nested
515+
class Peek {
516+
@Test
517+
public void shouldConsumePresentValueOnPeekWhenValueIsDefined() {
518+
final int[] actual = new int[] { -1 };
519+
final Option<Integer> testee = Option.of(1).peek(i -> actual[0] = i);
520+
assertThat(actual[0]).isEqualTo(1);
521+
assertThat(testee).isEqualTo(Option.of(1));
522+
}
513523

514-
@Test
515-
public void shouldConsumePresentValueOnPeekWhenValueIsDefined() {
516-
final int[] actual = new int[] { -1 };
517-
final Option<Integer> testee = Option.of(1).peek(i -> actual[0] = i);
518-
assertThat(actual[0]).isEqualTo(1);
519-
assertThat(testee).isEqualTo(Option.of(1));
524+
@Test
525+
public void shouldNotConsumeAnythingOnPeekWhenValueIsNotDefined() {
526+
final int[] actual = new int[] { -1 };
527+
final Option<Integer> testee = Option.<Integer> none().peek(i -> actual[0] = i);
528+
assertThat(actual[0]).isEqualTo(-1);
529+
assertThat(testee).isEqualTo(Option.none());
530+
}
520531
}
521532

522-
@Test
523-
public void shouldNotConsumeAnythingOnPeekWhenValueIsNotDefined() {
524-
final int[] actual = new int[] { -1 };
525-
final Option<Integer> testee = Option.<Integer> none().peek(i -> actual[0] = i);
526-
assertThat(actual[0]).isEqualTo(-1);
527-
assertThat(testee).isEqualTo(Option.none());
533+
@Nested
534+
@DisplayName("peek(Runnable, Consumer)")
535+
class PeekRunnableConsumer {
536+
@Test
537+
void shouldConsumePresentValueOnPeekWhenValueIsDefined() {
538+
final int[] actual = new int[] { -1 };
539+
final Option<Integer> testee = Option.of(1)
540+
.peek(() -> actual[0] = -2, i -> actual[0] = i);
541+
assertThat(actual[0]).isEqualTo(1);
542+
assertThat(testee).isEqualTo(Option.of(1));
543+
}
544+
545+
@Test
546+
void shouldRunRunnableWhenValueIsNotDefined() {
547+
final int[] actual = new int[] { -1 };
548+
final Option<Integer> testee = Option.<Integer> none()
549+
.peek(() -> actual[0] = -2, i -> actual[0] = i);
550+
assertThat(actual[0]).isEqualTo(-2);
551+
assertThat(testee).isEqualTo(Option.none());
552+
}
528553
}
529554

530555
// -- transform

0 commit comments

Comments
 (0)