Skip to content

Commit b19a5af

Browse files
author
Eugen Paraschiv
committed
ordering work
1 parent 8c81ec9 commit b19a5af

1 file changed

Lines changed: 46 additions & 21 deletions

File tree

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,81 @@
11
package org.baeldung.guava.collections;
22

3-
import static org.hamcrest.Matchers.equalTo;
43
import static org.hamcrest.Matchers.nullValue;
54
import static org.junit.Assert.assertThat;
5+
import static org.junit.Assert.assertTrue;
66

77
import java.util.Arrays;
88
import java.util.Collections;
99
import java.util.List;
1010

1111
import org.junit.Test;
1212

13+
import com.google.common.collect.Lists;
1314
import com.google.common.collect.Ordering;
1415
import com.google.common.primitives.Ints;
1516

1617
public class GuavaOrderingExamplesTest {
1718

19+
private final class OrderingByLenght extends Ordering<String> {
20+
@Override
21+
public final int compare(final String s1, final String s2) {
22+
return Ints.compare(s1.length(), s2.length());
23+
}
24+
}
25+
1826
// tests
1927

2028
@Test
2129
public final void givenCollectionWithNulls_whenSortingWithNullsLast_thenNullsAreLast() {
22-
final List<Integer> nums = Arrays.asList(3, 5, 4, null, 1, 2);
23-
Collections.sort(nums, Ordering.natural().nullsLast());
24-
assertThat(nums.get(nums.size() - 1), nullValue());
30+
final List<Integer> toSort = Arrays.asList(3, 5, 4, null, 1, 2);
31+
Collections.sort(toSort, Ordering.natural().nullsLast());
32+
assertThat(toSort.get(toSort.size() - 1), nullValue());
2533
}
2634

2735
@Test
2836
public final void givenCollectionWithNulls_whenSortingWithNullsFirst_thenNullsAreFirst() {
29-
final List<Integer> nums = Arrays.asList(3, 5, 4, null, 1, 2);
30-
Collections.sort(nums, Ordering.natural().nullsFirst());
31-
assertThat(nums.get(0), nullValue());
37+
final List<Integer> toSort = Arrays.asList(3, 5, 4, null, 1, 2);
38+
Collections.sort(toSort, Ordering.natural().nullsFirst());
39+
assertThat(toSort.get(0), nullValue());
3240
}
3341

3442
@Test
3543
public final void whenCollectionIsSortedNullsLastReversed_thenNullAreFirst() {
36-
final List<Integer> nums = Arrays.asList(3, 5, 4, null, 1, 2);
37-
Collections.sort(nums, Ordering.natural().nullsLast().reverse());
38-
assertThat(nums.get(0), nullValue());
44+
final List<Integer> toSort = Arrays.asList(3, 5, 4, null, 1, 2);
45+
Collections.sort(toSort, Ordering.natural().nullsLast().reverse());
46+
assertThat(toSort.get(0), nullValue());
47+
}
48+
49+
@Test
50+
public final void givenCollectionIsSorted_whenUsingOrderingApiToCheckOrder_thenCheckCanBePerformed() {
51+
final List<String> toSort = Arrays.asList("zz", "aa", "b", "ccc");
52+
final Ordering<String> byLength = new OrderingByLenght();
53+
Collections.sort(toSort, byLength);
54+
55+
final Ordering<String> expectedOrder = Ordering.explicit(Lists.newArrayList("b", "zz", "aa", "ccc"));
56+
assertTrue(expectedOrder.isOrdered(toSort));
3957
}
4058

4159
@Test
4260
public final void whenSortingCollectionsOfStringsByLenght_thenCorrectlySorted() {
43-
final List<String> toSort = Arrays.asList("aa", "b", null, "ccc");
44-
final Ordering<String> byLength = new Ordering<String>() {
45-
@Override
46-
public int compare(final String s1, final String s2) {
47-
return Ints.compare(s1.length(), s2.length());
48-
}
49-
};
50-
51-
Collections.sort(toSort, byLength.nullsFirst());
52-
assertThat(toSort.get(0), nullValue());
53-
assertThat(toSort.get(1), equalTo("b"));
61+
final List<String> toSort = Arrays.asList("zz", "aa", "b", "ccc");
62+
final Ordering<String> byLength = new OrderingByLenght();
63+
64+
Collections.sort(toSort, byLength);
65+
66+
final Ordering<String> expectedOrder = Ordering.explicit(Lists.newArrayList("b", "zz", "aa", "ccc"));
67+
assertTrue(expectedOrder.isOrdered(toSort));
68+
}
69+
70+
@Test
71+
public final void whenSortingCollectionsOfStringsByLenghtWithSecondaryNaturalOrdering_thenCorrectlySorted() {
72+
final List<String> toSort = Arrays.asList("zz", "aa", "b", "ccc");
73+
final Ordering<String> byLength = new OrderingByLenght();
74+
75+
Collections.sort(toSort, byLength.compound(Ordering.natural()));
76+
77+
final Ordering<String> expectedOrder = Ordering.explicit(Lists.newArrayList("b", "aa", "zz", "ccc"));
78+
assertTrue(expectedOrder.isOrdered(toSort));
5479
}
5580

5681
}

0 commit comments

Comments
 (0)