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);
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
 }
Ejemplo n.º 11
0
 public DynamicObjectMapperCache()
 {
     _implementationBuilder = new DynamicImplementationBuilder();
     _dtoCache = new DynamicObjectConverterCache(_implementationBuilder);
     _otdCache = new DictionaryConverterCache();
 }
Ejemplo n.º 12
0
 public DynamicObjectMapperCache()
 {
     _implementationBuilder = new DynamicImplementationBuilder();
     _dtoCache = new DynamicObjectConverterCache(_implementationBuilder);
     _otdCache = new DictionaryConverterCache();
 }