Skip to content

Commit 9159644

Browse files
author
Piotr Bobinski
committed
work work
1 parent aca8d03 commit 9159644

50 files changed

Lines changed: 199 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

exercises/src/test/java/main/BasicObservableTest.groovy

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package main
22

33
import rx.Observable
4+
import rx.Subscription
45
import spock.lang.Specification
56

7+
import java.util.concurrent.TimeUnit
8+
69

710
class BasicObservableTest extends Specification {
811

@@ -50,4 +53,43 @@ class BasicObservableTest extends Specification {
5053
then:
5154
defer != null
5255
}
56+
57+
def "Supply a Subscriber to create"() {
58+
when:
59+
Observable<String> values = Observable.create { o ->
60+
o.onNext("Hello");
61+
o.onCompleted();
62+
}
63+
values.subscribe(
64+
{ v -> println "onNext: " + v },
65+
{ e -> println "onError: " + e },
66+
{ println "Completed" }
67+
)
68+
then:
69+
values != null
70+
}
71+
72+
def "Emit specified range of integers"() {
73+
when:
74+
Observable<Integer> numbers = Observable.range(1, 15)
75+
numbers.subscribe { v -> println v }
76+
77+
then:
78+
numbers != null
79+
}
80+
81+
def "timer() usage example"() {
82+
when:
83+
Observable<Long> values = Observable.timer(2, 1, TimeUnit.SECONDS);
84+
Subscription subscription = values.subscribe(
85+
{ v -> System.out.println("Received: " + v) },
86+
{ e -> System.out.println("Error: " + e) },
87+
{ System.out.println("Completed") }
88+
)
89+
System.in.read();
90+
91+
then:
92+
values != null
93+
}
94+
5395
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package main
2+
3+
import rx.Observable
4+
import rx.Subscription
5+
import spock.lang.Specification
6+
7+
8+
class ReducingSequenceTest extends Specification {
9+
10+
def "test of the distinct() transformation"() {
11+
when:
12+
Observable<Integer> obs = Observable.create { o ->
13+
o.onNext(1)
14+
o.onNext(2)
15+
o.onNext(2)
16+
o.onNext(3)
17+
o.onNext(3)
18+
o.onNext(1)
19+
o.onCompleted()
20+
}
21+
22+
Subscription subscribe = obs
23+
.distinct()
24+
.subscribe(
25+
{ v -> println "Emited: " + v },
26+
{ e -> println "Error: " + e },
27+
{ println "onCompleted " }
28+
)
29+
30+
then:
31+
obs != null
32+
}
33+
34+
def "you can supply the distinct key inside the distinct method"() {
35+
when:
36+
Observable<String> obs = Observable.create { o ->
37+
o.onNext("a")
38+
o.onNext("a")
39+
o.onNext("b")
40+
o.onNext("b")
41+
o.onNext("bb")
42+
o.onNext("aa")
43+
o.onCompleted()
44+
}
45+
46+
Subscription subscribe = obs
47+
.distinct { event -> event.charAt(0) }
48+
.subscribe(
49+
{ v -> println "Emited: " + v },
50+
{ e -> println "Error: " + e },
51+
{ println "onCompleted " }
52+
)
53+
54+
then:
55+
obs != null
56+
}
57+
58+
def "you can also use the distinctUntilChanged that filters out only consecutive same events"() {
59+
when:
60+
Observable<String> obs = Observable.create { o ->
61+
o.onNext("a")
62+
o.onNext("b")
63+
o.onNext("b")
64+
o.onNext("aa")
65+
o.onNext("bb")
66+
o.onNext("bb")
67+
o.onCompleted()
68+
}
69+
70+
Subscription subscribe = obs
71+
.distinctUntilChanged { event -> event.charAt(0) }
72+
.subscribe(
73+
{ v -> println "Emited: " + v },
74+
{ e -> println "Error: " + e },
75+
{ println "onCompleted " }
76+
)
77+
78+
then:
79+
//expecting a, b, aa, bb
80+
obs != null
81+
}
82+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package main
2+
3+
import rx.Observable
4+
import rx.Subscription
5+
import spock.lang.Specification
6+
7+
import java.util.concurrent.FutureTask
8+
import java.util.concurrent.TimeUnit
9+
import java.util.concurrent.TimeoutException
10+
11+
12+
class TransitionToObservableTest extends Specification {
13+
14+
// Observable<ActionEvent> events = Observable.create(o -> {
15+
// button2.setOnAction(new EventHandler<ActionEvent>() {
16+
// @Override public void handle(ActionEvent e) {
17+
// o.onNext(e)
18+
// }
19+
// });
20+
// })
21+
22+
def "turn future into observable"() {
23+
when:
24+
FutureTask<Integer> f = new FutureTask<Integer>({
25+
Thread.sleep(2000);
26+
return 21;
27+
});
28+
new Thread(f).start();
29+
30+
Observable<Integer> values = Observable.from(f);
31+
32+
Subscription subscription = values.subscribe(
33+
{ v -> System.out.println("Received: " + v) },
34+
{ e -> System.out.println("Error: " + e) },
35+
{ System.out.println("Completed") }
36+
);
37+
38+
then:
39+
f != null
40+
}
41+
42+
def "turn future into observable, but await only certain time before an event gets emitted"() {
43+
when:
44+
FutureTask<Integer> future = new FutureTask<Integer>({
45+
Thread.sleep(3000)
46+
return 30
47+
})
48+
49+
Observable<Integer> obs = Observable.from(future, 2000, TimeUnit.MILLISECONDS)
50+
51+
Subscription subscription = obs.subscribe(
52+
{ v -> System.out.println("Received: " + v) },
53+
{ e -> System.out.println("Error: " + e) },
54+
{ System.out.println("Completed") }
55+
);
56+
57+
then:
58+
thrown TimeoutException
59+
}
60+
61+
def "You can turn any collection into observables as well, elements of the collection will get emitted and then the onComplete event"() {
62+
when:
63+
Integer[] array = [1, 2, 3, 4]
64+
Observable<Integer> obs = Observable.from(array)
65+
66+
Subscription subscription = obs.subscribe(
67+
{ v -> System.out.println("Received: " + v) },
68+
{ e -> System.out.println("Error: " + e) },
69+
{ System.out.println("Completed") }
70+
);
71+
then:// TODO implement then
72+
obs != null
73+
}
74+
75+
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)