public void Create_When_dependancyInjectionService_returns_command_Then_returns_command_with_correct_type()
		{
			var commandMock = new Mock<ICommandWithArguments<StubArguments>>();
			_dependancyContainerMock.Setup(x => x.Resolve(typeof(ICommandWithArguments<StubArguments>)))
			                        .Returns(commandMock.Object);
			var arguments = new StubArguments();

			var result = _commandFactory.Create(arguments);

			Assert.IsAssignableFrom<CompiledCommand<ICommandWithArguments<StubArguments>, StubArguments>>(result);
		}
        public void compile_and_exercise_build_up()
        {
            var args = new StubArguments();
            args.Set("Color", "blue");

            var target = new ConstructorTarget(null, 5, DateTime.Today);

            Action<IArguments, object> action = BuilderCompiler.CompileBuildUp(new Plugin(typeof (ConstructorTarget)));
            action(args, target);

            target.Color.ShouldEqual("blue");
        }
        public void build_and_execute_a_mandatory_setter()
        {
            var builder = new SetterBuilder<SetterTarget>();
            Action<IArguments, SetterTarget> func = builder.BuildMandatorySetter("Name");

            var args = new StubArguments();
            args.Set("Name", "Max");

            var target = new SetterTarget();
            func(args, target);

            target.Name.ShouldEqual("Max");
        }
			Create_When_dependancyInjectionService_returns_command_Then_command_execute_calls_internal_command_execute_with_correct_arguments
			()
		{
			var commandMock = new Mock<ICommandWithArguments<StubArguments>>();
			_dependancyContainerMock.Setup(x => x.Resolve(typeof(ICommandWithArguments<StubArguments>)))
			                        .Returns(commandMock.Object);
			var arguments = new StubArguments();

			var result = _commandFactory.Create(arguments);
			result.Execute();

			commandMock.Verify(x => x.Execute(arguments));
		}
        public void build_an_object()
        {
            var args = new StubArguments();
            args.Set("name", "Jeremy");
            args.Set("age", 35);

            // That's actually correct, you know, just in case you want to buy me
            // a birthday present
            args.Set("birthDay", new DateTime(1974, 1, 1));

            ConstructorTarget target = func(args);

            target.Name.ShouldEqual("Jeremy");
            target.Age.ShouldEqual(35);
            target.BirthDay.ShouldEqual(new DateTime(1974, 1, 1));
        }
        public void build_and_execute_an_optional_setter()
        {
            var builder = new SetterBuilder<SetterTarget>();
            var func = builder.BuildOptionalSetter("Name");

            var args = new StubArguments();
            var target = new SetterTarget();
            func(args, target);

            target.Name.ShouldBeNull();

            args.Set("Name", "Max");
            func(args, target);

            target.Name.ShouldEqual("Max");
        }
        public void compile_and_exercise_a_builder()
        {
            Func<IArguments, object> func = BuilderCompiler.CompileCreator(new Plugin(typeof (ConstructorTarget)));
            var args = new StubArguments();
            args.Set("name", "Jeremy");
            args.Set("age", 35);
            args.Set("birthDay", new DateTime(2009, 1, 1));

            args.Set("Color", "blue");

            var target = func(args).ShouldBeOfType<ConstructorTarget>();

            target.Name.ShouldEqual("Jeremy");
            target.Age.ShouldEqual(35);
            target.Color.ShouldEqual("blue");

            // Optional wasn't filled in
            target.Direction.ShouldBeNull();
        }
        public void compile_and_exercise_a_builder()
        {
            var concreteType = new ConcreteType(typeof (ConstructorTarget));
            concreteType.Constructor = typeof (ConstructorTarget).GetConstructors().Single();

            var func = BuilderCompiler.CompileCreator(concreteType);
            var args = new StubArguments();
            args.Set("name", "Jeremy");
            args.Set("age", 35);
            args.Set("birthDay", new DateTime(2009, 1, 1));

            args.Set("Color", "blue");

            var target = func(args).ShouldBeOfType<ConstructorTarget>();

            target.Name.ShouldEqual("Jeremy");
            target.Age.ShouldEqual(35);
            target.Color.ShouldEqual("blue");

            // Optional wasn't filled in
            target.Direction.ShouldBeNull();
        }