Cześć, czy ktoś pomoże mi zrozumieć jak działa stream i flatmap? Potrzebuję napisać test z wykorzystaniem streama oraz flatmap. Ma on za zadanie przetestować metodę "getPeopleQuantity" z klasy "World". Zwracana liczba ma być typu BigDecimal. Tak w skrócie to mam 3 klasy (Country, Continent i World) Country udostępnie metodę getPeopleQuantity, klasa Continent zawiera kolekcję państw leżących na danym kontynencie, a klasa World zawiera kolekcję kontynentów. Napisałem taki test, ale nie bardzo wiem/rozumiem jak napisać sekcję When z wykorzystaniem streama, flatmap i reduce tak aby przetestował tą metodę i policzył wielkość populacji :/
@Test
public void testGetPeopleQuantity() {
//Given
World world = new World();
List<Continent> continents = new ArrayList<>();
List<Country> countries = new ArrayList<>();
countries.add(new Country("Poland", new BigDecimal(350000000)));
countries.add(new Country("Spain", new BigDecimal(450000000)));
continents.add(new Continent(countries, "Europe"));
world.setContinentList(continents);
//When
BigDecimal worldPeopleQuantity = countries.stream()
.flatMap(country -> country.getPeopleQuantity())
.reduce(BigDecimal.ZERO, (sum, current) -> sum = sum.add(current));
//Then
BigDecimal expectedQuantity = new BigDecimal("800000000");
Assert.assertEquals(expectedQuantity, worldPeopleQuantity);
}