Skip to content

Commit 058a65d

Browse files
authored
Merge pull request #33 from HubSpot/if-ok-or-else-err
Add ifOkOrElseError
2 parents bb2e8dd + 1d2c71a commit 058a65d

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

algebra/src/main/java/com/hubspot/algebra/Result.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ public void ifErr(Consumer<? super ERROR_TYPE> consumer) {
4444
Results.getErr(this).ifPresent(consumer);
4545
}
4646

47+
public void consume(Consumer<? super ERROR_TYPE> errConsumer, Consumer<? super SUCCESS_TYPE> okConsumer) {
48+
ifOk(okConsumer);
49+
ifErr(errConsumer);
50+
}
51+
4752
public <NEW_ERROR_TYPE> Result<SUCCESS_TYPE, NEW_ERROR_TYPE> mapErr(Function<ERROR_TYPE, NEW_ERROR_TYPE> mapper) {
4853
return Results.<SUCCESS_TYPE, ERROR_TYPE, NEW_ERROR_TYPE>modErr(mapper).apply(this);
4954
}

algebra/src/test/java/com/hubspot/algebra/ResultTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
55

66
import java.util.ArrayList;
7+
import java.util.Collections;
78
import java.util.List;
89
import java.util.function.Consumer;
910
import java.util.function.Function;
@@ -172,4 +173,22 @@ public void itAllowsConsumerOfErrSuperType() {
172173
result.ifErr(consumer);
173174
assertThat(!check.isEmpty());
174175
}
176+
177+
@Test
178+
public void itConsumesOks() throws Exception {
179+
List<String> okResults = new ArrayList<>();
180+
List<SampleError> errorResults = Collections.emptyList();
181+
OK_RESULT.consume(errorResults::add, okResults::add);
182+
assertThat(okResults).contains(OK_RESULT.unwrapOrElseThrow());
183+
assertThat(errorResults).isEmpty();
184+
}
185+
186+
@Test
187+
public void itConsumesErrors() throws Exception {
188+
List<String> okResults = Collections.emptyList();
189+
List<SampleError> errorResults = new ArrayList<>();
190+
ERR_RESULT.consume(errorResults::add, okResults::add);
191+
assertThat(okResults).isEmpty();
192+
assertThat(errorResults).contains(ERR_RESULT.unwrapErrOrElseThrow());
193+
}
175194
}

0 commit comments

Comments
 (0)