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.algorithm : equal; 23 import std.array : appender; 24 import std.conv : to; 25 import std.range : iota, put; 26 27 auto subject = new SubjectObject!int; 28 auto pub = subject.filter!(n => n % 2 == 0).map!(o => to!string(o)); 29 30 auto buf = appender!(string[]); 31 auto disposable = pub.doSubscribe(buf); 32 scope (exit) 33 disposable.dispose(); 34 35 put(subject, iota(10)); 36 37 auto result = buf.data; 38 assert(equal(result, ["0", "2", "4", "6", "8"])); 39 } 40 41 /// 42 unittest 43 { 44 import rx; 45 46 auto sub = new SubjectObject!int; 47 48 auto hasEven = sub.any!"a % 2 == 0"(); 49 auto result = false; 50 auto disposable = hasEven.doSubscribe((bool b) { result = b; }); 51 scope (exit) 52 disposable.dispose(); 53 54 sub.put(1); 55 sub.put(3); 56 sub.put(2); 57 assert(result); 58 }