Skip to content

Commit aae04c1

Browse files
add exists and isEmpty
1 parent dcbae87 commit aae04c1

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

language-adaptors/rxjava-scala/src/examples/scala/rx/lang/scala/examples/RxScalaDemo.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,15 @@ class RxScalaDemo extends JUnitSuite {
411411
})
412412
}
413413

414+
@Test def elementAtReplacement() {
415+
assertEquals("b", Observable("a", "b", "c").drop(1).first.toBlockingObservable.single)
416+
}
417+
418+
@Test def elementAtOrDefaultReplacement() {
419+
assertEquals("b", Observable("a", "b", "c").drop(1).firstOrElse("!").toBlockingObservable.single)
420+
assertEquals("!!", Observable("a", "b", "c").drop(10).firstOrElse("!!").toBlockingObservable.single)
421+
}
422+
414423
def output(s: String): Unit = println(s)
415424

416425
// blocks until obs has completed

language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Observable.scala

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1749,7 +1749,26 @@ class Observable[+T] private[scala] (val asJava: rx.Observable[_ <: T])
17491749
val fJava: Func1[rx.Observable[T], rx.Observable[R]] =
17501750
(jo: rx.Observable[T]) => f(Observable[T](jo)).asJava.asInstanceOf[rx.Observable[R]]
17511751
Observable[R](asJava.asInstanceOf[rx.Observable[T]].parallel[R](fJava, scheduler))
1752-
}
1752+
}
1753+
1754+
/** Tests whether a predicate holds for some of the elements of this `Observable`.
1755+
*
1756+
* @param p the predicate used to test elements.
1757+
* @return an Observable emitting one single Boolean, which is `true` if the given predicate `p`
1758+
* holds for some of the elements of this Observable, and `false` otherwise.
1759+
*/
1760+
def exists(p: T => Boolean): Observable[Boolean] = {
1761+
Observable[java.lang.Boolean](asJava.exists(p)).map(_.booleanValue())
1762+
}
1763+
1764+
/** Tests whether this `Observable` emits no elements.
1765+
*
1766+
* @return an Observable emitting one single Boolean, which is `true` if this `Observable`
1767+
* emits no elements, and `false` otherwise.
1768+
*/
1769+
def isEmpty: Observable[Boolean] = {
1770+
Observable[java.lang.Boolean](asJava.isEmpty).map(_.booleanValue())
1771+
}
17531772

17541773
def withFilter(p: T => Boolean): WithFilter[T] = {
17551774
new WithFilter[T](p, asJava)

language-adaptors/rxjava-scala/src/test/scala/rx/lang/scala/CompletenessTest.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ class CompletenessTest extends JUnitSuite {
3131
"buffer(Long, Long, TimeUnit)" -> "buffer(Duration, Duration)",
3232
"buffer(Long, Long, TimeUnit, Scheduler)" -> "buffer(Duration, Duration, Scheduler)",
3333
"count()" -> "length",
34-
"dematerialize()" -> "dematerialize(<:<[T, Notification[U]])",
34+
"dematerialize()" -> "dematerialize(<:<[Observable[T], Observable[Notification[U]]])",
35+
"elementAt(Int)" -> "[use `.drop(index).first`]",
36+
"elementAtOrDefault(Int, T)" -> "[use `.drop(index).firstOrElse(default)`]",
3537
"first(Func1[_ >: T, Boolean])" -> commentForFirstWithPredicate,
3638
"firstOrDefault(T)" -> "firstOrElse(=> U)",
3739
"firstOrDefault(Func1[_ >: T, Boolean], T)" -> "[use `.filter(condition).firstOrElse(default)`]",

0 commit comments

Comments
 (0)