Skip to content
This repository was archived by the owner on Nov 23, 2023. It is now read-only.

Commit 214f6fe

Browse files
authored
Merge pull request #102 from alexengrig/optional-of-nullable
Optional of nullable value Fix #99
2 parents f4625f7 + ea7abe0 commit 214f6fe

File tree

3 files changed

+44
-5
lines changed

3 files changed

+44
-5
lines changed

CHANGES.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## 0.4.0
44

55
* [[#101](../../issues/101)] Create left, right, center, compose and pipe of FunctionX
6+
* [[#88](../../issues/88)] Create OptionalX#of for nullable object
67

78
## 0.3.0
89

src/main/java/io/github/alexengrig/lambdax/OptionalX.java

+16-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* This utility class contains useful lambdas for {@link java.util.Optional}.
2626
*
2727
* @author Grig Alex
28-
* @version 0.1.1
28+
* @version 0.4.0
2929
* @see java.util.Optional
3030
* @see java.util.function.Consumer
3131
* @see java.util.function.Supplier
@@ -36,6 +36,19 @@ public final class OptionalX {
3636
private OptionalX() {
3737
}
3838

39+
/**
40+
* Returns an {@link java.util.Optional} describing the value.
41+
*
42+
* @param value a value is passed as the argument to {@link java.util.Optional#ofNullable(Object)}
43+
* @param <T> a type of {@link java.util.Optional} value
44+
* @return an {@link java.util.Optional} with the value
45+
* @see java.util.Optional#ofNullable(Object)
46+
* @since 0.4.0
47+
*/
48+
public static <T> Optional<T> of(T value) {
49+
return Optional.ofNullable(value);
50+
}
51+
3952
/**
4053
* <p>Returns an {@link java.util.Optional} describing the given value
4154
* from {@link java.util.function.Supplier}.</p>
@@ -56,8 +69,8 @@ public static <T> Optional<T> of(Supplier<? extends T> generator) {
5669
}
5770

5871
/**
59-
* <p>Returns an {@link java.util.function.UnaryOperator}
60-
* that execute the action ({@link java.util.function.Consumer}) for a value and return it.</p>
72+
* Returns an {@link java.util.function.UnaryOperator}
73+
* that execute the action ({@link java.util.function.Consumer}) for a value and return it.
6174
*
6275
* @param action a {@link java.util.function.Consumer} that execute an action on a value
6376
* @param <T> a type of the operand and result of the operator

src/test/java/io/github/alexengrig/lambdax/OptionalXTest.java

+27-2
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,37 @@
2020
import org.junit.Test;
2121

2222
import java.util.ArrayDeque;
23+
import java.util.ArrayList;
2324
import java.util.Deque;
25+
import java.util.function.Supplier;
2426

25-
import static org.junit.Assert.assertEquals;
27+
import static org.junit.Assert.*;
2628

2729
public class OptionalXTest {
30+
@Test
31+
public void checkOfValue() {
32+
Object o = new Object();
33+
assertTrue(OptionalX.of(o).isPresent());
34+
o = null;
35+
//noinspection ConstantConditions
36+
assertFalse(OptionalX.of(o).isPresent());
37+
}
38+
39+
@Test
40+
public void checkOfSupplier() {
41+
final Supplier<Object> o = Object::new;
42+
assertTrue(OptionalX.of(o).isPresent());
43+
}
44+
45+
@Test
46+
public void checkPeek() {
47+
final Object expect = new Object();
48+
final ArrayList<Object> list = new ArrayList<>();
49+
final Object actual = OptionalX.peek(list::add).apply(expect);
50+
assertEquals(expect, actual);
51+
assertTrue(list.contains(expect));
52+
}
53+
2854
@Test
2955
public void checkOfAndPeek() {
3056
int value = 1;
@@ -34,5 +60,4 @@ public void checkOfAndPeek() {
3460
.orElseThrow(IllegalStateException::new);
3561
assertEquals(value, actual);
3662
}
37-
3863
}

0 commit comments

Comments
 (0)