Added new samples
This commit is contained in:
parent
f06a9f4106
commit
be16616bb8
|
@ -8,56 +8,93 @@ import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
|
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
|
||||||
|
|
||||||
public class StreamFilterUnitTest {
|
public class StreamFilterUnitTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenListOfCustomers_whenFilterByLambda_thenGetTwo() {
|
public void givenListOfCustomers_whenFilterByPoints_thenGetTwo() {
|
||||||
List<Customer> customers = Arrays.asList(new Customer("John P.", 15), new Customer("Sarah M.", 200), new Customer("Charles B.", 150), new Customer("Mary T.", 1));
|
Customer john = new Customer("John P.", 15);
|
||||||
|
Customer sarah = new Customer("Sarah M.", 200);
|
||||||
|
Customer charles = new Customer("Charles B.", 150);
|
||||||
|
Customer mary = new Customer("Mary T.", 1);
|
||||||
|
List<Customer> customers = Arrays.asList(john, sarah, charles, mary);
|
||||||
|
|
||||||
long customersWithMoreThan100Points = customers
|
List<Customer> customersWithMoreThan100Points = customers
|
||||||
.stream()
|
.stream()
|
||||||
.filter(c -> c.getPoints() > 100)
|
.filter(c -> c.getPoints() > 100)
|
||||||
.count();
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
assertThat(customersWithMoreThan100Points).isEqualTo(2);
|
assertThat(customersWithMoreThan100Points).hasSize(2);
|
||||||
|
assertThat(customersWithMoreThan100Points).contains(sarah, charles);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenListOfCustomers_whenFilterByPointsAndName_thenGetOne() {
|
||||||
|
Customer john = new Customer("John P.", 15);
|
||||||
|
Customer sarah = new Customer("Sarah M.", 200);
|
||||||
|
Customer charles = new Customer("Charles B.", 150);
|
||||||
|
Customer mary = new Customer("Mary T.", 1);
|
||||||
|
List<Customer> customers = Arrays.asList(john, sarah, charles, mary);
|
||||||
|
|
||||||
|
List<Customer> charlesWithMoreThan100Points = customers
|
||||||
|
.stream()
|
||||||
|
.filter(c -> c.getPoints() > 100 && c
|
||||||
|
.getName()
|
||||||
|
.startsWith("Charles"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
assertThat(charlesWithMoreThan100Points).hasSize(1);
|
||||||
|
assertThat(charlesWithMoreThan100Points).contains(charles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenListOfCustomers_whenFilterByMethodReference_thenGetTwo() {
|
public void givenListOfCustomers_whenFilterByMethodReference_thenGetTwo() {
|
||||||
List<Customer> customers = Arrays.asList(new Customer("John P.", 15), new Customer("Sarah M.", 200), new Customer("Charles B.", 150), new Customer("Mary T.", 1));
|
Customer john = new Customer("John P.", 15);
|
||||||
|
Customer sarah = new Customer("Sarah M.", 200);
|
||||||
|
Customer charles = new Customer("Charles B.", 150);
|
||||||
|
Customer mary = new Customer("Mary T.", 1);
|
||||||
|
List<Customer> customers = Arrays.asList(john, sarah, charles, mary);
|
||||||
|
|
||||||
long customersWithMoreThan100Points = customers
|
List<Customer> customersWithMoreThan100Points = customers
|
||||||
.stream()
|
.stream()
|
||||||
.filter(Customer::hasOverThousandPoints)
|
.filter(Customer::hasOverThousandPoints)
|
||||||
.count();
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
assertThat(customersWithMoreThan100Points).isEqualTo(2);
|
assertThat(customersWithMoreThan100Points).hasSize(2);
|
||||||
|
assertThat(customersWithMoreThan100Points).contains(sarah, charles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenListOfCustomersWithOptional_whenFilterBy100Points_thenGetTwo() {
|
public void givenListOfCustomersWithOptional_whenFilterBy100Points_thenGetTwo() {
|
||||||
List<Optional<Customer>> customers = Arrays.asList(Optional.of(new Customer("John P.", 15)), Optional.of(new Customer("Sarah M.", 200)), Optional.empty(), Optional.of(new Customer("Mary T.", 300)), Optional.empty());
|
Optional<Customer> john = Optional.of(new Customer("John P.", 15));
|
||||||
|
Optional<Customer> sarah = Optional.of(new Customer("Sarah M.", 200));
|
||||||
|
Optional<Customer> mary = Optional.of(new Customer("Mary T.", 300));
|
||||||
|
List<Optional<Customer>> customers = Arrays.asList(john, sarah, Optional.empty(), mary, Optional.empty());
|
||||||
|
|
||||||
long customersWithMoreThan100Points = customers
|
List<Customer> customersWithMoreThan100Points = customers
|
||||||
.stream()
|
.stream()
|
||||||
.flatMap(c -> c
|
.flatMap(c -> c
|
||||||
.map(Stream::of)
|
.map(Stream::of)
|
||||||
.orElseGet(Stream::empty))
|
.orElseGet(Stream::empty))
|
||||||
.filter(Customer::hasOverThousandPoints)
|
.filter(Customer::hasOverThousandPoints)
|
||||||
.count();
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
assertThat(customersWithMoreThan100Points).isEqualTo(2);
|
assertThat(customersWithMoreThan100Points).hasSize(2);
|
||||||
|
assertThat(customersWithMoreThan100Points).contains(sarah.get(), mary.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenListOfCustomers_whenFilterWithCustomHandling_thenThrowException() {
|
public void givenListOfCustomers_whenFilterWithCustomHandling_thenThrowException() {
|
||||||
List<Customer> customers = Arrays.asList(new Customer("John P.", 15, "https://images.unsplash.com/photo-1543320485-d0d5a49c2b2e"), new Customer("Sarah M.", 200), new Customer("Charles B.", 150),
|
Customer john = new Customer("John P.", 15, "https://images.unsplash.com/photo-1543320485-d0d5a49c2b2e");
|
||||||
new Customer("Mary T.", 1, "https://images.unsplash.com/photo-1543297057-25167dfc180e"));
|
Customer sarah = new Customer("Sarah M.", 200);
|
||||||
|
Customer charles = new Customer("Charles B.", 150);
|
||||||
|
Customer mary = new Customer("Mary T.", 1, "https://images.unsplash.com/photo-1543297057-25167dfc180e");
|
||||||
|
List<Customer> customers = Arrays.asList(john, sarah, charles, mary);
|
||||||
|
|
||||||
assertThatThrownBy(() -> customers
|
assertThatThrownBy(() -> customers
|
||||||
.stream()
|
.stream()
|
||||||
|
@ -67,21 +104,27 @@ public class StreamFilterUnitTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenListOfCustomers_whenFilterWithThrowingFunction_thenThrowException() {
|
public void givenListOfCustomers_whenFilterWithThrowingFunction_thenThrowException() {
|
||||||
List<Customer> customers = Arrays.asList(new Customer("John P.", 15, "https://images.unsplash.com/photo-1543320485-d0d5a49c2b2e"), new Customer("Sarah M.", 200), new Customer("Charles B.", 150),
|
Customer john = new Customer("John P.", 15, "https://images.unsplash.com/photo-1543320485-d0d5a49c2b2e");
|
||||||
new Customer("Mary T.", 1, "https://images.unsplash.com/photo-1543297057-25167dfc180e"));
|
Customer sarah = new Customer("Sarah M.", 200);
|
||||||
|
Customer charles = new Customer("Charles B.", 150);
|
||||||
|
Customer mary = new Customer("Mary T.", 1, "https://images.unsplash.com/photo-1543297057-25167dfc180e");
|
||||||
|
List<Customer> customers = Arrays.asList(john, sarah, charles, mary);
|
||||||
|
|
||||||
assertThatThrownBy(() -> customers
|
assertThatThrownBy(() -> customers
|
||||||
.stream()
|
.stream()
|
||||||
.filter((ThrowingPredicate.unchecked(Customer::hasValidProfilePhoto)))
|
.filter((ThrowingPredicate.unchecked(Customer::hasValidProfilePhoto)))
|
||||||
.count()).isInstanceOf(WrappedException.class);
|
.collect(Collectors.toList())).isInstanceOf(WrappedException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenListOfCustomers_whenFilterWithTryCatch_thenGetTwo() {
|
public void givenListOfCustomers_whenFilterWithTryCatch_thenGetTwo() {
|
||||||
List<Customer> customers = Arrays.asList(new Customer("John P.", 15, "https://images.unsplash.com/photo-1543320485-d0d5a49c2b2e"), new Customer("Sarah M.", 200), new Customer("Charles B.", 150),
|
Customer john = new Customer("John P.", 15, "https://images.unsplash.com/photo-1543320485-d0d5a49c2b2e");
|
||||||
new Customer("Mary T.", 1, "https://images.unsplash.com/photo-1543297057-25167dfc180e"));
|
Customer sarah = new Customer("Sarah M.", 200);
|
||||||
|
Customer charles = new Customer("Charles B.", 150);
|
||||||
|
Customer mary = new Customer("Mary T.", 1, "https://images.unsplash.com/photo-1543297057-25167dfc180e");
|
||||||
|
List<Customer> customers = Arrays.asList(john, sarah, charles, mary);
|
||||||
|
|
||||||
long customersWithValidProfilePhoto = customers
|
List<Customer> customersWithValidProfilePhoto = customers
|
||||||
.stream()
|
.stream()
|
||||||
.filter(c -> {
|
.filter(c -> {
|
||||||
try {
|
try {
|
||||||
|
@ -91,9 +134,10 @@ public class StreamFilterUnitTest {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
.count();
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
assertThat(customersWithValidProfilePhoto).isEqualTo(2);
|
assertThat(customersWithValidProfilePhoto).hasSize(2);
|
||||||
|
assertThat(customersWithValidProfilePhoto).contains(john, mary);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -110,6 +154,6 @@ public class StreamFilterUnitTest {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.count()).isInstanceOf(RuntimeException.class);
|
.collect(Collectors.toList())).isInstanceOf(RuntimeException.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue