1 module rx.algorithm;
2 
3 public import rx.algorithm.all;
4 public import rx.algorithm.any;
5 public import rx.algorithm.buffer;
6 public import rx.algorithm.debounce;
7 public import rx.algorithm.filter;
8 public import rx.algorithm.fold;
9 public import rx.algorithm.map;
10 public import rx.algorithm.merge;
11 public import rx.algorithm.scan;
12 public import rx.algorithm.tee;
13 public import rx.algorithm.uniq;
14 
15 //####################
16 // Overview
17 //####################
18 ///
19 unittest
20 {
21     import rx;
22     import std.conv : to;
23     import std.range : iota, put;
24 
25     auto subject = new SubjectObject!int;
26 
27     string[] result;
28     auto disposable = subject.filter!(n => n % 2 == 0).map!(o => to!string(o))
29         .doSubscribe!(text => result ~= text);
30 
31     scope (exit)
32         disposable.dispose();
33 
34     put(subject, iota(10));
35 
36     assert(result == ["0", "2", "4", "6", "8"]);
37 }
38 
39 ///
40 unittest
41 {
42     import rx;
43 
44     auto sub = new SubjectObject!int;
45 
46     auto hasEven = sub.any!"a % 2 == 0"();
47     auto result = false;
48     auto disposable = hasEven.doSubscribe((bool b) { result = b; });
49     scope (exit)
50         disposable.dispose();
51 
52     sub.put(1);
53     sub.put(3);
54     sub.put(2);
55     assert(result);
56 }