From: David ‘Bombe’ Roden Date: Mon, 24 Nov 2014 06:19:02 +0000 (+0100) Subject: Add helper methods for Optionals. X-Git-Tag: 0.9-rc1^2~3^2~16 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=d925df7b6a110eeec00284958903800f60631974;p=Sone.git Add helper methods for Optionals. --- diff --git a/src/main/java/net/pterodactylus/sone/utils/Optionals.java b/src/main/java/net/pterodactylus/sone/utils/Optionals.java new file mode 100644 index 0000000..67132aa --- /dev/null +++ b/src/main/java/net/pterodactylus/sone/utils/Optionals.java @@ -0,0 +1,32 @@ +package net.pterodactylus.sone.utils; + +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Predicate; + +/** + * Helper methods for dealing with {@link Optional}s. + * + * @author David ‘Bombe’ Roden + */ +public class Optionals { + + public static Predicate> isPresent() { + return new Predicate>() { + @Override + public boolean apply(Optional input) { + return input.isPresent(); + } + }; + } + + public static Function, T> get() { + return new Function, T>() { + @Override + public T apply(Optional input) { + return input.get(); + } + }; + } + +} diff --git a/src/test/java/net/pterodactylus/sone/utils/OptionalsTest.java b/src/test/java/net/pterodactylus/sone/utils/OptionalsTest.java new file mode 100644 index 0000000..0f7dee3 --- /dev/null +++ b/src/test/java/net/pterodactylus/sone/utils/OptionalsTest.java @@ -0,0 +1,52 @@ +package net.pterodactylus.sone.utils; + +import java.util.Arrays; +import java.util.List; + +import com.google.common.base.Optional; +import com.google.common.collect.FluentIterable; +import org.hamcrest.MatcherAssert; +import org.hamcrest.Matchers; +import org.junit.Test; + +/** + * Unit test for {@link Optionals}. + * + * @author David ‘Bombe’ Roden + */ +public class OptionalsTest { + + private final Object object1 = new Object(); + private final Object object2 = new Object(); + private final Object object3 = new Object(); + + @Test + public void canCreateOptionals() { + new Optionals(); + } + + @Test + public void isPresentFiltersCorrectOptionals() { + List> optionals = Arrays.asList( + Optional.of(object1), Optional.absent(), + Optional.of(object2), Optional.absent(), + Optional.of(object3), Optional.absent() + ); + List> filteredOptionals = + FluentIterable.from(optionals).filter(Optionals.isPresent()).toList(); + MatcherAssert.assertThat(filteredOptionals, Matchers.contains( + Optional.of(object1), Optional.of(object2), Optional.of(object3))); + } + + @Test + public void getReturnsCorrectValues() { + List> optionals = Arrays.asList( + Optional.of(object1), + Optional.of(object2), + Optional.of(object3) + ); + List objects = FluentIterable.from(optionals).transform(Optionals.get()).toList(); + MatcherAssert.assertThat(objects, Matchers.contains(object1, object2, object3)); + } + +}