Skip to content

Commit 6633f5b

Browse files
author
eugenp
committed
new tests
1 parent ba8559a commit 6633f5b

File tree

2 files changed

+76
-1
lines changed

2 files changed

+76
-1
lines changed

core-java-8/src/test/java/org/baeldung/java8/Java8SortUnitTest.java

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.baeldung.java8;
22

3+
import static org.baeldung.java8.entity.Human.compareByNameThenAge;
34
import static org.hamcrest.Matchers.equalTo;
45

56
import java.util.Collections;
7+
import java.util.Comparator;
68
import java.util.List;
79

810
import org.baeldung.java8.entity.Human;
@@ -16,18 +18,81 @@ public class Java8SortUnitTest {
1618

1719
// tests -
1820

21+
@Test
22+
public final void givenPreLambda_whenSortingEntitiesByName_thenCorrectlySorted() {
23+
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12));
24+
Collections.sort(humans, new Comparator<Human>() {
25+
@Override
26+
public final int compare(final Human h1, final Human h2) {
27+
return h1.getName().compareTo(h2.getName());
28+
}
29+
});
30+
Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12)));
31+
}
32+
1933
@Test
2034
public final void whenSortingEntitiesByName_thenCorrectlySorted() {
2135
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12));
2236
Collections.sort(humans, (final Human h1, final Human h2) -> h1.getName().compareTo(h2.getName()));
2337
Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12)));
2438
}
2539

40+
@Test
41+
public final void givenLambdaShortForm_whenSortingEntitiesByName_thenCorrectlySorted() {
42+
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12));
43+
Collections.sort(humans, (h1, h2) -> h1.getName().compareTo(h2.getName()));
44+
Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12)));
45+
}
46+
47+
@Test
48+
public final void whenSortingEntitiesByNameThenAge_thenCorrectlySorted() {
49+
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12));
50+
Collections.sort(humans, (lhs, rhs) -> {
51+
if (lhs.getName().equals(rhs.getName())) {
52+
return lhs.getAge() - rhs.getAge();
53+
} else {
54+
return lhs.getName().compareTo(rhs.getName());
55+
}
56+
});
57+
Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10)));
58+
}
59+
60+
@Test
61+
public final void givenComposition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() {
62+
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 12), new Human("Sarah", 10), new Human("Zack", 12));
63+
final Comparator<Human> byName = (h1, h2) -> h1.getName().compareTo(h2.getName());
64+
final Comparator<Human> byAge = (h1, h2) -> Ints.compare(h1.getAge(), h2.getAge());
65+
Collections.sort(humans, byName.thenComparing(byAge));
66+
Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10)));
67+
}
68+
2669
@Test
2770
public final void whenSortingEntitiesByAge_thenCorrectlySorted() {
2871
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12));
29-
Collections.sort(humans, (final Human h1, final Human h2) -> Ints.compare(h1.getAge(), h2.getAge()));
72+
Collections.sort(humans, (h1, h2) -> Ints.compare(h1.getAge(), h2.getAge()));
73+
Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10)));
74+
}
75+
76+
@Test
77+
public final void whenSortingEntitiesByNameReversed_thenCorrectlySorted() {
78+
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12));
79+
final Comparator<Human> comparator = (h1, h2) -> h1.getName().compareTo(h2.getName());
80+
Collections.sort(humans, comparator.reversed());
3081
Assert.assertThat(humans.get(0), equalTo(new Human("Sarah", 10)));
3182
}
3283

84+
@Test
85+
public final void givenMethodDefinition_whenSortingEntitiesByNameThenAge_thenCorrectlySorted() {
86+
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12));
87+
Collections.sort(humans, Human::compareByNameThenAge);
88+
Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12)));
89+
}
90+
91+
@Test
92+
public final void givenInstanceMethod_whenSortingEntitiesByName_thenCorrectlySorted() {
93+
final List<Human> humans = Lists.newArrayList(new Human("Sarah", 10), new Human("Jack", 12));
94+
Collections.sort(humans, Comparator.comparing(Human::getName));
95+
Assert.assertThat(humans.get(0), equalTo(new Human("Jack", 12)));
96+
}
97+
3398
}

core-java-8/src/test/java/org/baeldung/java8/entity/Human.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ public void setAge(final int age) {
3333
this.age = age;
3434
}
3535

36+
// compare
37+
38+
public static int compareByNameThenAge(final Human lhs, final Human rhs) {
39+
if (lhs.name.equals(rhs.name)) {
40+
return lhs.age - rhs.age;
41+
} else {
42+
return lhs.name.compareTo(rhs.name);
43+
}
44+
}
45+
3646
//
3747

3848
@Override

0 commit comments

Comments
 (0)