-
Notifications
You must be signed in to change notification settings - Fork 183
Expand file tree
/
Copy pathLambda_01_Test.java
More file actions
88 lines (65 loc) · 2.69 KB
/
Lambda_01_Test.java
File metadata and controls
88 lines (65 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package java17.ex01;
import org.apache.commons.codec.cli.Digest;
import org.apache.commons.codec.digest.DigestUtils;
import org.junit.Test;
import java17.data.Data;
import java17.data.Person;
import java.util.ArrayList;
import java.util.List;
/**
* Exercice 01 - Filter
*/
public class Lambda_01_Test {
// tag::PersonPredicate[]
interface PersonPredicate {
boolean test(Person p);
}
// end::PersonPredicate[]
// tag::filter[]
private List<Person> filter(List<Person> persons, PersonPredicate predicate) {
List<Person> filteredPersons = new ArrayList<Person>();
for (Person p : persons) {
if (predicate.test(p)) {
filteredPersons.add(p);
}
}
return filteredPersons;
}
// end::filter[]
// tag::test_filter_by_age[]
@Test
public void test_filter_by_age() throws Exception {
List<Person> personList = Data.buildPersonList(100);
// TODO result ne doit contenir que des personnes adultes (age >= 18)
List<Person> result = filter(personList, person -> person.getAge() >= 18);
assert result.size() == 83;
for (Person person : result) {
assert person.getAge() > 17;
}
}
// end::test_filter_by_age[]
// tag::test_filter_by_firstname[]
@Test
public void test_filter_by_firstname() throws Exception {
List<Person> personList = Data.buildPersonList(100);
// TODO result ne doit contenir que des personnes dont le prénom est "first_10"
List<Person> result = filter(personList, person -> person.getFirstname().equals("first_10"));
assert result.size() == 1;
assert result.get(0).getFirstname().equals("first_10");
}
// end::test_filter_by_firstname[]
// tag::test_filter_by_password[]
@Test
public void test_filter_by_password() throws Exception {
List<Person> personList = Data.buildPersonList(100);
String passwordSha512Hex = "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff";
// TODO result ne doit contenir que les personnes dont l'age est > 49 et dont le hash du mot de passe correspond à la valeur de la variable passwordSha512Hex
// TODO Pour obtenir le hash d'un mot, utiliser la méthode DigestUtils.sha512Hex(mot)
List<Person> result = filter(personList, person -> person.getAge() > 49 && DigestUtils.sha512Hex(person.getPassword()).equals(passwordSha512Hex));
assert result.size() == 6;
for (Person person : result) {
assert person.getPassword().equals("test");
}
}
// end::test_filter_by_password[]
}