package com.annimon.stream.streamtests;
import com.annimon.stream.Functions;
import com.annimon.stream.Stream;
import java.util.AbstractMap;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import static com.annimon.stream.test.hamcrest.StreamMatcher.assertElements;
import static org.hamcrest.Matchers.containsInAnyOrder;
public final class GroupByTest {
@Test
@SuppressWarnings("unchecked")
public void testGroupBy() {
final Integer partitionItem = 1;
Stream.of(1, 2, 3, 1, 2, 3, 1, 2, 3)
.groupBy(Functions.equalityPartitionItem(partitionItem))
.custom(assertElements(containsInAnyOrder(
entry(false, Arrays.asList(2, 3, 2, 3, 2, 3)),
entry(true, Arrays.asList(1, 1, 1))
)));
}
private Map.Entry<Boolean, List<Integer>> entry(boolean key, List<Integer> value) {
return new AbstractMap.SimpleEntry<Boolean, List<Integer>>(key, value);
}
}