Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions src/test/java/java17/ex01/Stream_01_Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import org.junit.Test;

Expand All @@ -28,7 +29,7 @@ public void test_stream_filter() throws Exception {
List<Pizza> pizzas = new Data().getPizzas();

// TODO récupérer la liste des pizzas dont le prix est >= 1300
List<Pizza> result = null;
List<Pizza> result = pizzas.stream().filter(p -> p.getPrice() >= 1300).toList();

assertThat(result, hasSize(3));
assertThat(result, everyItem(hasProperty("price", anyOf(equalTo(1300), greaterThan(1300)))));
Expand All @@ -39,7 +40,7 @@ public void test_stream_filter_count() throws Exception {
List<Pizza> pizzas = new Data().getPizzas();

// TODO compter le nombre de pizzas dont le prix est >= 1300
long result = 0L;
long result = pizzas.stream().filter(p->p.getPrice() >= 1300).count();

assertThat(result, is(3L));
}
Expand All @@ -50,10 +51,10 @@ public void test_stream_anyMatch() throws Exception {
List<Pizza> pizzas = new Data().getPizzas();

// TODO valider si au moins une pizza à un prix >= 1300
Boolean result1 = null;
Boolean result1 = pizzas.stream().anyMatch(p->p.getPrice() >= 1300);

// TODO valider si au moins une pizza à un prix >= 2000
Boolean result2 = null;
Boolean result2 = pizzas.stream().anyMatch(p->p.getPrice() >= 2000);;

assertThat(result1, is(true));
assertThat(result2, is(false));
Expand All @@ -65,10 +66,10 @@ public void test_stream_allMatch() throws Exception {
List<Pizza> pizzas = new Data().getPizzas();

// TODO valider que toutes les pizzas ont un prix >= 1300
Boolean result1 = null;
Boolean result1 = pizzas.stream().allMatch(p->p.getPrice() >= 1300);

// TODO valider que toutes les pizzas ont un prix >= 900
Boolean result2 = null;
Boolean result2 = pizzas.stream().allMatch(p->p.getPrice() >= 900);;

assertThat(result1, is(false));
assertThat(result2, is(true));
Expand All @@ -80,7 +81,7 @@ public void test_stream_noneMatch() throws Exception {
List<Pizza> pizzas = new Data().getPizzas();

// TODO valider qu'aucune pizza n'a un prix >= 2000
Boolean result1 = null;
Boolean result1 = pizzas.stream().noneMatch(p->p.getPrice() >= 2000);

assertThat(result1, is(true));
}
Expand All @@ -90,7 +91,7 @@ public void test_stream_findFirst() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO récupérer une commande faite par un client dont le prénom est "Sophie"
Optional<Order> result = null;
Optional<Order> result = orders.stream().filter(o->o.getCustomer().getFirstname().equals("Sophie")).findFirst();

assertThat(result.isPresent(), is(false));
}
Expand Down
13 changes: 7 additions & 6 deletions src/test/java/java17/ex02/Stream_02_Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import java.util.List;
import java.util.OptionalDouble;
import java.util.stream.Collectors;

import org.junit.Test;

Expand All @@ -24,7 +25,7 @@ public void test_map() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Trouver la liste des clients associés aux commandes
List<Customer> result = null;
List<Customer> result = orders.stream().map(o->o.getCustomer()).toList();

assertThat(result, hasSize(8));
}
Expand All @@ -35,7 +36,7 @@ public void test_map_count() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Compter le nombre de clients associés aux commandes
long result = 0;
long result = orders.stream().map(o->o.getCustomer()).count();

assertThat(result, is(8L));
}
Expand All @@ -46,7 +47,7 @@ public void test_map_distinct() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Trouver la liste des différents clients associés aux commandes (sans doublon)
List<Customer> result = null;
List<Customer> result = orders.stream().map(o->o.getCustomer()).distinct().toList();

assertThat(result, hasSize(2));
}
Expand All @@ -57,7 +58,7 @@ public void test_map_distinct_count() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Compter le nombre des différents clients associés aux commandes
long result = 0L;
long result = orders.stream().map(o->o.getCustomer()).distinct().count();

assertThat(result, is(2L));
}
Expand All @@ -71,7 +72,7 @@ public void test_mapToDouble_sum() throws Exception {
* TODO Calculer le chiffre d'affaires total de la pizzeria (somme des prix des
* commandes)
*/
double result = 0.0;
double result = orders.stream().mapToDouble(o->o.getPrice()).sum();

assertThat(result, is(10900.0));
}
Expand All @@ -84,7 +85,7 @@ public void test_mapToDouble_avg() throws Exception {
/*
* TODO Calculer le prix moyen des commandes de la pizzeria
*/
OptionalDouble result = null;
OptionalDouble result = orders.stream().mapToDouble(o->o.getPrice()).average();

assertThat(result.isPresent(), is(true));
assertThat(result.getAsDouble(), is(1362.5));
Expand Down
29 changes: 22 additions & 7 deletions src/test/java/java17/ex03/Stream_03_Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collector;
import java.util.stream.Collectors;

import org.junit.Test;

Expand All @@ -26,7 +29,17 @@ public void test_max() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Retrouver la commande avec le prix le plus élevé
Optional<Order> result = null;

Comparator<Order> comparator = (Order o1, Order o2) -> {
if (o1.getPrice()>o2.getPrice()) {
return 1;
} else if (o1.getPrice()<o2.getPrice()) {
return -1;
} return 0;
};

// Comparator.comparating(x->x.getMethode)
Optional<Order> result = orders.stream().max(Comparator.comparing(o->o.getPrice()));

assertThat(result.isPresent(), is(true));
assertThat(result.get().getPrice(), is(2200.0));
Expand All @@ -38,7 +51,9 @@ public void test_min() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Retrouver la commande avec le prix le moins élevé
Optional<Order> result = null;

// cas inverse de max
Optional<Order> result = orders.stream().min(Comparator.comparing(o->o.getPrice()));

assertThat(result.isPresent(), is(true));
assertThat(result.get().getPrice(), is(1000.0));
Expand All @@ -51,7 +66,7 @@ public void test_map_collect_joining() throws Exception {

// TODO construire une chaîne contenant les prénoms des clients triés et séparés
// par le caractère "|"
String result = null;
String result = customers.stream().map(c->c.getFirstname()).sorted().collect(Collectors.joining("|"));

assertThat(result, is("Alexandra|Cyril|Johnny|Marion|Sophie"));
}
Expand All @@ -62,7 +77,7 @@ public void test_flatMap() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Extraire la liste des pizzas de toutes les commandes
List<Pizza> result = null;
List<Pizza> result = orders.stream().flatMap(o->o.getPizzas().stream()).toList();

assertThat(result.size(), is(9));
}
Expand All @@ -73,7 +88,7 @@ public void test_flatMap_distinct() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO Extraire la liste des différentes pizzas de toutes les commandes
List<Pizza> result = null;
List<Pizza> result = orders.stream().flatMap(o->o.getPizzas().stream()).distinct().toList();;

assertThat(result.size(), is(4));
}
Expand All @@ -84,7 +99,7 @@ public void test_grouping() throws Exception {
List<Order> orders = new Data().getOrders();

// TODO construire une Map <Client, Commandes effectuées par le client
Map<Customer, List<Order>> result = null;
Map<Customer, List<Order>> result = orders.stream().collect(Collectors.groupingBy(Order::getCustomer)); // Order::getMethode reviens à faire x->x.getMethode

assertThat(result.size(), is(2));
assertThat(result.get(new Customer(1)), hasSize(4));
Expand All @@ -98,7 +113,7 @@ public void test_partitionning() throws Exception {
// TODO Séparer la liste des pizzas en 2 ensembles :
// TODO true -> les pizzas dont le nom commence par "L"
// TODO false -> les autres
Map<Boolean, List<Pizza>> result = null;
Map<Boolean, List<Pizza>> result = pizzas.stream().collect(Collectors.partitioningBy(p->p.getName().charAt(0) == 'L'));

assertThat(result.get(true), hasSize(6));
assertThat(result.get(false), hasSize(2));
Expand Down
12 changes: 7 additions & 5 deletions src/test/java/java17/ex04/Stream_04_Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ public class Stream_04_Test {
@Test
public void test_of() throws Exception {
// Construire un stream permettant de rendre le test passant
Stream<String> result = null;


Stream<String> result = Stream.of("Alexandra", "Cyril", "Johnny", "Marion", "Sophie");

assertThat(result.toArray(), arrayContaining("Alexandra", "Cyril", "Johnny", "Marion", "Sophie"));
}
Expand All @@ -26,7 +28,7 @@ public void test_builder() throws Exception {

// TODO compléter pour rendre le test passant
// TODO utiliser la méthode "add"
Stream<Object> result = Stream.builder().build();
Stream<Object> result = Stream.builder().add("Alexandra").add("Cyril").add("Johnny").add("Marion").add("Sophie").build();

assertThat(result.toArray(), arrayContaining("Alexandra", "Cyril", "Johnny", "Marion", "Sophie"));
}
Expand All @@ -37,16 +39,16 @@ public void test_concat() throws Exception {
Stream<String> s2 = Stream.of("Johnny", "Marion", "Sophie");

// TODO concatener les deux streams s1 et s2
Stream<String> result = null;
Stream<String> result = Stream.concat(s1, s2);

assertThat(result.toArray(), arrayContaining("Alexandra", "Cyril", "Johnny", "Marion", "Sophie"));
}

@Test
public void test_iterate() throws Exception {
// TODO utiliser la méthode "iterate" de Stream afin de rendre le test passant
Stream<Integer> result1 = null;
Stream<Integer> result2 = null;
Stream<Integer> result1 = Stream.iterate(1, i->i).limit(5);
Stream<Integer> result2 = Stream.iterate(1, i->i+1).limit(5);
assertThat(result1.toArray(), arrayContaining(1,1,1,1,1));
assertThat(result2.toArray(), arrayContaining(1,2,3,4,5));
}
Expand Down