1 module dmocks.factory; 2 3 import dmocks.object_mock; 4 import dmocks.repository; 5 import dmocks.util; 6 import dmocks.repository; 7 import std.stdio; 8 import std.typecons; 9 10 package: 11 12 /** Get a mock object of the given type. */ 13 T mock (T, CONSTRUCTOR_ARGS...) (MockRepository rep, CONSTRUCTOR_ARGS cargs) 14 { 15 Mocked!(T) ret = new Mocked!(T)(cargs); 16 ret._owner = rep; 17 return cast(T)ret; 18 } 19 20 MockedFinal!(T) mockFinal (T, CONSTRUCTOR_ARGS...) (MockRepository rep, CONSTRUCTOR_ARGS t) 21 { 22 static if (__traits(isFinalClass, T)) 23 T obj = new T(t); 24 else 25 T obj = new WhiteHole!T(t); 26 MockedFinal!(T) ret = new MockedFinal!(T)(obj); 27 ret._owner = rep; 28 return ret; 29 } 30 31 MockedFinal!(T) mockFinalPassTo (T, CONSTRUCTOR_ARGS...) (MockRepository rep, T obj) 32 { 33 MockedFinal!(T) ret = new MockedFinal!(T)(obj); 34 ret._owner = rep; 35 return ret; 36 } 37 38 MockedStruct!(T) mockStruct (T, CONSTRUCTOR_ARGS...) (MockRepository rep, CONSTRUCTOR_ARGS t) 39 { 40 MockedStruct!(T) ret = MockedStruct!(T)(T(t)); 41 ret._owner = rep; 42 return ret; 43 } 44 45 MockedStruct!(T) mockStructPassTo (T, CONSTRUCTOR_ARGS...) (MockRepository rep, T obj) 46 { 47 MockedStruct!(T) ret = MockedStruct!(T)(obj); 48 ret._owner = rep; 49 return ret; 50 }