public void When_implementation_is_built_then_instance_property_should_return_instance() { var obj = new object(); var definition = BuildAccessorDefinition <IExampleAccessorFixture>(); var dispatcher = Substitute.For <IDispatcher>(); var builder = new ImplementationBuilder(); // Act var implementation = builder.Implement <IExampleAccessorFixture>(obj, dispatcher, definition); // Assert implementation.Instance.Should().Be(obj); }
public void When_implementation_is_built_then_bound_field_get_should_invoke_dispatcher() { var obj = new object(); var definition = BuildAccessorDefinition <IExampleAccessorFixture>(); var dispatcher = Substitute.For <IDispatcher>(); var builder = new ImplementationBuilder(); var implementation = builder.Implement <IExampleAccessorFixture>(obj, dispatcher, definition); // Act _ = implementation.Field; // Assert dispatcher.Received().FieldGet(obj, Arg.Any <int>()); }
public void When_implementation_is_built_then_bound_method_with_return_should_invoke_dispatcher() { var obj = new object(); var definition = BuildAccessorDefinition <IExampleAccessorFixture>(); var dispatcher = Substitute.For <IDispatcher>(); var builder = new ImplementationBuilder(); var implementation = builder.Implement <IExampleAccessorFixture>(obj, dispatcher, definition); // Act implementation.MethodWithReturn(); // Assert dispatcher.Received().MethodCall(obj, Arg.Any <int>(), Arg.Is <object[]>(x => x.Length == 0)); }
public void When_implementation_is_built_then_bound_setter_should_invoke_dispatcher() { var input = AutoFixture.Create <string>(); var obj = new object(); var definition = BuildAccessorDefinition <IExampleAccessorFixture>(); var dispatcher = Substitute.For <IDispatcher>(); var builder = new ImplementationBuilder(); var implementation = builder.Implement <IExampleAccessorFixture>(obj, dispatcher, definition); // Act implementation.Property = input; // Assert dispatcher.Received().PropertySet(obj, Arg.Any <int>(), Arg.Is(input)); }
public void When_implementation_is_built_then_bound_method_with_return_should_return_dispatcher_return() { var ret = AutoFixture.Create <object>(); var obj = new object(); var definition = BuildAccessorDefinition <IExampleAccessorFixture>(); var dispatcher = Substitute.For <IDispatcher>(); dispatcher.MethodCall(obj, Arg.Any <int>(), Arg.Any <object[]>()).Returns(ret); var builder = new ImplementationBuilder(); var implementation = builder.Implement <IExampleAccessorFixture>(obj, dispatcher, definition); // Act var result = implementation.MethodWithReturn(); // Assert result.Should().Be(ret); }
public void CreateImplementationIsThreadSafe() { // Test passes if it does not throw "Duplicate type name within an assembly" var requester = new Mock <IRequester>(); // We can't really test this well... Just try lots, and see if we have any exceptions for (int i = 0; i < 100; i++) { var implementationBuilder = new ImplementationBuilder(); var tasks = new Task[10]; for (int j = 0; j < tasks.Length; j++) { tasks[j] = Task.Run(() => implementationBuilder.CreateImplementation <ISomeApi>(requester.Object)); } Task.WaitAll(tasks); } }
public void CreateImplementationIsThreadSafe() { // Test passes if it does not throw "Duplicate type name within an assembly" var requester = new Mock<IRequester>(); // We can't really test this well... Just try lots, and see if we have any exceptions for (int i = 0; i < 100; i++) { var implementationBuilder = new ImplementationBuilder(); var tasks = new Task[10]; for (int j = 0; j < tasks.Length; j++) { tasks[j] = Task.Run(() => implementationBuilder.CreateImplementation<ISomeApi>(requester.Object)); } Task.WaitAll(tasks); } }
public void When_implementation_is_built_then_bound_method_with_args_should_invoke_dispatcher() { var arg1 = AutoFixture.Create <object>(); var arg2 = AutoFixture.Create <object>(); var obj = new object(); var definition = BuildAccessorDefinition <IExampleAccessorFixture>(); var dispatcher = Substitute.For <IDispatcher>(); var builder = new ImplementationBuilder(); var implementation = builder.Implement <IExampleAccessorFixture>(obj, dispatcher, definition); // Act implementation.MethodWithArguments(arg1, arg2); // Assert dispatcher.Received().MethodCall(obj, Arg.Any <int>(), Arg.Is <object[]>(x => x.Length == 2)); dispatcher.Received().MethodCall(obj, Arg.Any <int>(), Arg.Is <object[]>(x => x[0] == arg1)); dispatcher.Received().MethodCall(obj, Arg.Any <int>(), Arg.Is <object[]>(x => x[1] == arg2)); }
public DynamicObjectConverterCache(ImplementationBuilder implementationBuilder) { _implementationBuilder = implementationBuilder; _cache = new ConcurrentCache <Type, ObjectConverter>(CreateMissingConverter); }
public DynamicObjectConverterCache(ImplementationBuilder implementationBuilder) { _implementationBuilder = implementationBuilder; _cache = new ConcurrentCache<Type, ObjectConverter>(CreateMissingConverter); }
public DynamicObjectMapperCache() { _implementationBuilder = new DynamicImplementationBuilder(); _dtoCache = new DynamicObjectConverterCache(_implementationBuilder); _otdCache = new DictionaryConverterCache(); }
public DynamicObjectMapperCache() { _implementationBuilder = new DynamicImplementationBuilder(); _dtoCache = new DynamicObjectConverterCache(_implementationBuilder); _otdCache = new DictionaryConverterCache(); }