module dmocks.factory; import dmocks.object_mock; import dmocks.repository; import std.typecons; package: /** Get a mock object of the given type. */ T mock(T, CONSTRUCTOR_ARGS...)(MockRepository rep, CONSTRUCTOR_ARGS cargs) { Mocked!(T) ret = new Mocked!(T)(cargs); ret._owner = rep; return cast(T) ret; } MockedFinal!(T) mockFinal(T, CONSTRUCTOR_ARGS...)(MockRepository rep, CONSTRUCTOR_ARGS t) { static if (__traits(isFinalClass, T)) T obj = new T(t); else T obj = new WhiteHole!T(t); MockedFinal!(T) ret = new MockedFinal!(T)(obj); ret._owner = rep; return ret; } MockedFinal!(T) mockFinalPassTo(T, CONSTRUCTOR_ARGS...)(MockRepository rep, T obj) { MockedFinal!(T) ret = new MockedFinal!(T)(obj); ret._owner = rep; return ret; } MockedStruct!(T) mockStruct(T, CONSTRUCTOR_ARGS...)(MockRepository rep, CONSTRUCTOR_ARGS t) { MockedStruct!(T) ret = MockedStruct!(T)(T(t)); ret._owner = rep; return ret; } MockedStruct!(T) mockStructPassTo(T, CONSTRUCTOR_ARGS...)(MockRepository rep, T obj) { MockedStruct!(T) ret = MockedStruct!(T)(obj); ret._owner = rep; return ret; }