package com.codepoetics.protonpack;
import com.codepoetics.protonpack.collectors.CollectorUtils;
import com.codepoetics.protonpack.collectors.NonUniqueValueException;
import org.junit.Test;
import java.util.Optional;
import java.util.stream.Stream;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
public class UniqueTest {
@Test public void
returns_empty_for_empty_stream() {
assertThat(Stream.empty().collect(CollectorUtils.unique()), equalTo(Optional.empty()));
}
@Test public void
returns_unique_item() {
assertThat(Stream.of(1, 2, 3).filter(i -> i > 2).collect(CollectorUtils.unique()), equalTo(Optional.of(3)));
}
@Test public void
returns_unique_nullable_item(){
assertThat(Stream.of(1, 2, 3).filter(i -> i > 2).collect(CollectorUtils.uniqueNullable()), equalTo(3));
}
@Test(expected=NonUniqueValueException.class) public void
throws_exception_if_item_is_not_unique() {
Stream.of(1, 2, 3).filter(i -> i > 1).collect(CollectorUtils.unique());
}
}