Skip to content

Commit

Permalink
Added tests for optional emptiness support with Rx
Browse files Browse the repository at this point in the history
  • Loading branch information
shubhamugare committed Apr 24, 2019
1 parent 29dd90c commit 7d27261
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions nullaway/src/test/java/com/uber/nullaway/NullAwayTest.java
Expand Up @@ -1551,6 +1551,67 @@ public void OptionalEmptinessUncheckedTest() {
.doTest();
}

@Test
public void OptionalEmptinessRxPositiveTest() {
compilationHelper
.setArgs(
Arrays.asList(
"-d",
temporaryFolder.getRoot().getAbsolutePath(),
"-XepOpt:NullAway:AnnotatedPackages=com.uber,io.reactivex",
"-XepOpt:NullAway:UnannotatedSubPackages=com.uber.lib.unannotated",
"-XepOpt:NullAway:CheckOptionalEmptiness=true"))
.addSourceLines(
"TestPositive.java",
"package com.uber;",
"import java.util.Optional;",
"import io.reactivex.Observable;",
"public class TestPositive {",
" private static boolean perhaps() { return Math.random() > 0.5; }",
" void foo(Observable<Optional<String>> observable) {",
" observable",
" .filter(optional -> optional.isPresent() || perhaps())",
" // BUG: Diagnostic contains: Optional optional can be empty",
" .map(optional -> optional.get().toString());",
" observable",
" .filter(optional -> optional.isPresent() || perhaps())",
" // BUG: Diagnostic contains: returning @Nullable expression from method with @NonNull",
" .map(optional -> optional.get())",
" .map(irr -> irr.toString());",
" }",
"}")
.doTest();
}

@Test
public void OptionalEmptinessRxNegativeTest() {
compilationHelper
.setArgs(
Arrays.asList(
"-d",
temporaryFolder.getRoot().getAbsolutePath(),
"-XepOpt:NullAway:AnnotatedPackages=com.uber",
"-XepOpt:NullAway:UnannotatedSubPackages=com.uber.lib.unannotated",
"-XepOpt:NullAway:CheckOptionalEmptiness=true"))
.addSourceLines(
"TestNegative.java",
"package com.uber;",
"import java.util.Optional;",
"import io.reactivex.Observable;",
"public class TestNegative {",
" private static boolean perhaps() { return Math.random() > 0.5; }",
" void foo(Observable<Optional<String>> observable) {",
" observable",
" .filter(optional -> optional.isPresent() && perhaps())",
" .map(optional -> optional.get().toString());",
" observable",
" .filter(optional -> optional.isPresent() && perhaps())",
" .map(optional -> optional.get());",
" }",
"}")
.doTest();
}

@Test
public void testCastToNonNull() {
compilationHelper
Expand Down

0 comments on commit 7d27261

Please sign in to comment.