@@ -25,6 +25,7 @@ import scala.language.implicitConversions
25
25
26
26
import org .junit .Assert .assertEquals
27
27
import org .junit .Assert .assertTrue
28
+ import org .junit .Assert .assertFalse
28
29
import org .junit .Ignore
29
30
import org .junit .Test
30
31
import org .scalatest .junit .JUnitSuite
@@ -296,6 +297,28 @@ class RxScalaDemo extends JUnitSuite {
296
297
shared.connect
297
298
}
298
299
300
+ @ Test def exampleWithPublish2 () {
301
+ val unshared = Observable .from(1 to 4 )
302
+ val shared = unshared.publish(0 )
303
+ shared.subscribe(n => println(s " subscriber 1 gets $n" ))
304
+ shared.subscribe(n => println(s " subscriber 2 gets $n" ))
305
+ shared.connect
306
+ }
307
+
308
+ @ Test def exampleWithPublish3 () {
309
+ val o = Observable .interval(100 millis).take(5 ).publish((o : Observable [Long ]) => o.map(_ * 2 ))
310
+ o.subscribe(n => println(s " subscriber 1 gets $n" ))
311
+ o.subscribe(n => println(s " subscriber 2 gets $n" ))
312
+ Thread .sleep(1000 )
313
+ }
314
+
315
+ @ Test def exampleWithPublish4 () {
316
+ val o = Observable .interval(100 millis).take(5 ).publish((o : Observable [Long ]) => o.map(_ * 2 ), - 1L )
317
+ o.subscribe(n => println(s " subscriber 1 gets $n" ))
318
+ o.subscribe(n => println(s " subscriber 2 gets $n" ))
319
+ Thread .sleep(1000 )
320
+ }
321
+
299
322
def doLater (waitTime : Duration , action : () => Unit ): Unit = {
300
323
Observable .interval(waitTime).take(1 ).subscribe(_ => action())
301
324
}
@@ -426,6 +449,15 @@ class RxScalaDemo extends JUnitSuite {
426
449
)
427
450
}
428
451
452
+ @ Test def dropUntilExample () {
453
+ val o = List (" Alice" , " Bob" , " Carlos" ).toObservable.zip(
454
+ Observable .interval(700 millis, IOScheduler ())).map(_._1) // emit every 700 millis
455
+ val other = List (1 ).toObservable.delay(1 seconds)
456
+ println(
457
+ o.dropUntil(other).toBlockingObservable.toList // output List("Bob", "Carlos")
458
+ )
459
+ }
460
+
429
461
def square (x : Int ): Int = {
430
462
println(s " $x* $x is being calculated on thread ${Thread .currentThread().getId}" )
431
463
Thread .sleep(100 ) // calculating a square is heavy work :)
@@ -550,6 +582,26 @@ class RxScalaDemo extends JUnitSuite {
550
582
obs.toBlockingObservable.toIterable.last
551
583
}
552
584
585
+ @ Test def doOnTerminateExample (): Unit = {
586
+ val o = List (" red" , " green" , " blue" ).toObservable.doOnTerminate(() => println(" terminate" ))
587
+ o.subscribe(v => println(v), e => e.printStackTrace, () => println(" onCompleted" ))
588
+ // red
589
+ // green
590
+ // blud
591
+ // terminate
592
+ // onCompleted
593
+ }
594
+
595
+ @ Test def finallyDoExample (): Unit = {
596
+ val o = List (" red" , " green" , " blue" ).toObservable.finallyDo(() => println(" finally" ))
597
+ o.subscribe(v => println(v), e => e.printStackTrace, () => println(" onCompleted" ))
598
+ // red
599
+ // green
600
+ // blud
601
+ // onCompleted
602
+ // finally
603
+ }
604
+
553
605
@ Test def timeoutExample (): Unit = {
554
606
val other = List (100L , 200L , 300L ).toObservable
555
607
val result = Observable .interval(100 millis).timeout(50 millis, other).toBlockingObservable.toList
@@ -636,6 +688,24 @@ class RxScalaDemo extends JUnitSuite {
636
688
println(m.toBlockingObservable.single)
637
689
}
638
690
691
+ @ Test def containsExample (): Unit = {
692
+ val o1 = List (1 , 2 , 3 ).toObservable.contains(2 )
693
+ assertTrue(o1.toBlockingObservable.single)
694
+
695
+ val o2 = List (1 , 2 , 3 ).toObservable.contains(4 )
696
+ assertFalse(o2.toBlockingObservable.single)
697
+ }
698
+
699
+ @ Test def repeatExample1 (): Unit = {
700
+ val o : Observable [String ] = List (" alice" , " bob" , " carol" ).toObservable.repeat().take(6 )
701
+ assertEquals(List (" alice" , " bob" , " carol" , " alice" , " bob" , " carol" ), o.toBlockingObservable.toList)
702
+ }
703
+
704
+ @ Test def repeatExample2 (): Unit = {
705
+ val o : Observable [String ] = List (" alice" , " bob" , " carol" ).toObservable.repeat(2 )
706
+ assertEquals(List (" alice" , " bob" , " carol" , " alice" , " bob" , " carol" ), o.toBlockingObservable.toList)
707
+ }
708
+
639
709
@ Test def retryExample1 (): Unit = {
640
710
val o : Observable [String ] = List (" alice" , " bob" , " carol" ).toObservable
641
711
assertEquals(List (" alice" , " bob" , " carol" ), o.retry.toBlockingObservable.toList)
@@ -708,4 +778,27 @@ class RxScalaDemo extends JUnitSuite {
708
778
case e : IllegalArgumentException => println(" IllegalArgumentException from skipWithException" )
709
779
}
710
780
}
781
+
782
+ @ Test def startWithExample1 (): Unit = {
783
+ val o1 = List (3 , 4 ).toObservable
784
+ val o2 = 1 :: 2 :: o1
785
+ assertEquals(List (1 , 2 , 3 , 4 ), o2.toBlockingObservable.toList)
786
+ }
787
+
788
+ @ Test def startWithExample2 (): Unit = {
789
+ val prepended = List (2 , 4 ).toObservable
790
+ val o = List (5 , 6 , 7 , 8 ).toObservable.filter(_ % 2 == 0 ).startWith(prepended)
791
+ assertEquals(List (2 , 4 , 6 , 8 ), o.toBlockingObservable.toList)
792
+ }
793
+
794
+ @ Test def startWithExample3 (): Unit = {
795
+ val o = List (5 , 6 , 7 , 8 ).toObservable.filter(_ % 2 == 0 ).startWith(List (2 , 4 ))
796
+ assertEquals(List (2 , 4 , 6 , 8 ), o.toBlockingObservable.toList)
797
+ }
798
+
799
+ @ Test def startWithExample4 (): Unit = {
800
+ val o = List (5 , 6 , 7 , 8 ).toObservable.filter(_ % 2 == 0 ).startWith(Array (2 , 4 ))
801
+ assertEquals(List (2 , 4 , 6 , 8 ), o.toBlockingObservable.toList)
802
+ }
803
+
711
804
}
0 commit comments