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 }