File tree Expand file tree Collapse file tree
app/src/test/java/ru/androidschool/rxjava/kotlin/subjects Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package ru.androidschool.rxjava.kotlin.subjects
2+
3+ import io.reactivex.subjects.AsyncSubject
4+ import io.reactivex.subjects.Subject
5+ import org.junit.Test
6+
7+ class AsyncSubjectDemo {
8+
9+ @Test
10+ fun asyncSubjectdDemo () {
11+ val subject: Subject <String > = AsyncSubject .create()
12+
13+ subject.subscribe(
14+ { s -> println (" Observer 1: $s " ) },
15+ { e -> e.printStackTrace() }
16+ ) { println (" Observer 1 done!" ) }
17+
18+ subject.onNext(" Alpha" )
19+ subject.onNext(" Beta" )
20+ subject.onNext(" Gamma" )
21+ subject.onComplete()
22+
23+ subject.subscribe(
24+ { s -> println (" Observer 2: $s " ) },
25+ { e: Throwable -> e.printStackTrace() }
26+ ) { println (" Observer 2 done!" ) }
27+ }
28+ }
Original file line number Diff line number Diff line change 1+ package ru.androidschool.rxjava.kotlin.subjects
2+
3+ import io.reactivex.subjects.BehaviorSubject
4+ import io.reactivex.subjects.Subject
5+ import org.junit.Test
6+
7+ class BehaviorSubjectDemo {
8+
9+ @Test
10+ fun behaviorSubjectdDemo () {
11+ val subject: Subject <String > = BehaviorSubject .create()
12+
13+ subject.subscribe { s -> println (" Observer 1: $s " ) }
14+
15+ subject.onNext(" Alpha" )
16+ subject.onNext(" Beta" )
17+ subject.onNext(" Gamma" )
18+
19+ subject.subscribe { s -> println (" Observer 2: $s " ) }
20+ }
21+ }
Original file line number Diff line number Diff line change 1+ package ru.androidschool.rxjava.kotlin.subjects
2+
3+ import io.reactivex.subjects.PublishSubject
4+ import io.reactivex.subjects.Subject
5+ import org.junit.Test
6+
7+ class PublishSubjectDemo {
8+
9+ @Test
10+ fun publishSubjectDemo () {
11+ val subject: Subject <String > = PublishSubject .create()
12+
13+ subject.subscribe { x -> println (x) }
14+
15+ subject.onNext(" 1" )
16+ subject.onNext(" 2" )
17+ subject.onNext(" 3" )
18+
19+ subject.onComplete()
20+ }
21+ }
Original file line number Diff line number Diff line change 1+ package ru.androidschool.rxjava.kotlin.subjects
2+
3+ import io.reactivex.subjects.ReplaySubject
4+ import io.reactivex.subjects.Subject
5+ import org.junit.Test
6+
7+ class ReplaySubjectDemo {
8+
9+ @Test
10+ fun replaySubjectdDemo () {
11+ val subject: Subject <String > = ReplaySubject .create()
12+
13+ subject.subscribe { s -> println (" Observer 1: $s " ) }
14+
15+ subject.onNext(" Alpha" )
16+ subject.onNext(" Beta" )
17+ subject.onNext(" Gamma" )
18+
19+ subject.onComplete()
20+ // Здесь подписываемся еще раз и получаем все переданные события
21+ subject.subscribe { s -> println (" Observer 2: $s " ) }
22+ }
23+ }
Original file line number Diff line number Diff line change 1+ package ru.androidschool.rxjava.kotlin.subjects
2+
3+ import io.reactivex.Observable
4+ import io.reactivex.subjects.Subject
5+ import io.reactivex.subjects.UnicastSubject
6+ import org.junit.Test
7+ import java.util.concurrent.TimeUnit
8+
9+ class UnicastSubject {
10+
11+ @Test
12+ fun unicastcSubjectdDemo () {
13+ val subject: Subject <String > = UnicastSubject .create()
14+
15+ Observable .interval(300 , TimeUnit .MILLISECONDS )
16+ .map { l: Long -> ((l + 1 ) * 300 ).toString() + " milliseconds" }
17+ .subscribe(subject)
18+
19+ sleep(2000 )
20+ subject.subscribe { s -> println (" Observer 1: $s " ) }
21+ sleep(2000 )
22+ }
23+
24+ fun sleep (millis : Long ) {
25+ try {
26+ Thread .sleep(millis)
27+ } catch (e: InterruptedException ) {
28+ e.printStackTrace()
29+ }
30+ }
31+
32+ }
You can’t perform that action at this time.
0 commit comments