1 module unit_threaded.randomized; 2 3 public import unit_threaded.randomized.gen; 4 public import unit_threaded.randomized.random; 5 public import unit_threaded.randomized.benchmark; 6 7 unittest 8 { 9 import core.thread : Thread; 10 import core.time : seconds; 11 12 struct Foo 13 { 14 void superSlowMethod(int a, Gen!(int, -10, 10) b) 15 { 16 Thread.sleep(1.seconds / 250000); 17 doNotOptimizeAway(a); 18 } 19 } 20 21 Foo a; 22 23 auto del = delegate(int ai, Gen!(int, -10, 10) b) { 24 a.superSlowMethod(ai, b); 25 }; 26 27 benchmark!(del)(); 28 } 29 30 unittest // test that the function parameter names are correct 31 { 32 import std.string : indexOf; 33 import std.experimental.logger; 34 35 class SingleLineLogger : Logger 36 { 37 this() 38 { 39 super(LogLevel.info); 40 } 41 42 override void writeLogMsg(ref LogEntry payload) @safe 43 { 44 this.line = payload.msg; 45 } 46 47 string line; 48 } 49 50 auto oldLogger = stdThreadLocalLog; 51 auto newLogger = new SingleLineLogger(); 52 stdThreadLocalLog = newLogger; 53 scope (exit) 54 stdThreadLocalLog = oldLogger; 55 56 static int failingFun(int a, string b) 57 { 58 throw new Exception("Hello"); 59 } 60 61 log(); 62 benchmark!failingFun(); 63 64 assert(newLogger.line.indexOf("'a'") != -1); 65 assert(newLogger.line.indexOf("'b'") != -1); 66 }