public void SetUp()
 {
     var builder = new ConstructorFunctionBuilder<ConstructorTarget>();
     var concreteType = new ConcreteType(typeof (ConstructorTarget));
     concreteType.Constructor = typeof (ConstructorTarget).GetConstructors().Single();
     func = builder.CreateBuilder(concreteType);
 }
 public void find_type_for_parameter_name_for_a_setter_argument()
 {
     var concreteType = new ConcreteType(typeof (ConstructorTarget));
     concreteType.TypeForParameterName("Color").ShouldEqual(typeof (string));
     concreteType.TypeForParameterName("Direction").ShouldEqual(typeof (string));
     concreteType.TypeForParameterName("Number").ShouldEqual(typeof (int));
 }
 public void find_type_for_parameter_name_for_a_constructor_argument()
 {
     var concreteType = new ConcreteType(typeof (ConstructorTarget));
     concreteType.TypeForParameterName("name").ShouldEqual(typeof (string));
     concreteType.TypeForParameterName("age").ShouldEqual(typeof (int));
     concreteType.TypeForParameterName("birthDay").ShouldEqual(typeof (DateTime));
 }
        public void adding_a_property_as_mandatory_will_remove_it_from_the_optional_and_add_to_mandatories()
        {
            var concreteType = new ConcreteType(typeof (ConstructorTarget));
            concreteType.AddMandatory("Color");
            concreteType.AddMandatory("Direction");

            concreteType.OptionalProperties.Select(x => x.Name)
                .ShouldHaveTheSameElementsAs("Number");

            concreteType.MandatoryProperties.Select(x => x.Name)
                .ShouldHaveTheSameElementsAs("Color", "Direction");
        }
        public void compile_and_exercise_build_up()
        {
            var args = new StubArguments();
            args.Set("Color", "blue");

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

            var concreteType = new ConcreteType(typeof (ConstructorTarget));

            var action = BuilderCompiler.CompileBuildUp(concreteType);
            action(args, target);

            target.Color.ShouldEqual("blue");
        }
        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();
        }
Esempio n. 7
0
 private static FuncCompiler getCompiler(ConcreteType concreteType)
 {
     var compilerType = typeof (FuncCompiler<>).MakeGenericType(concreteType.Type);
     return (FuncCompiler) Activator.CreateInstance(compilerType);
 }
Esempio n. 8
0
 public static InstanceBuilder CreateBuilder(ConcreteType concreteType)
 {
     return getCompiler(concreteType).CreateBuilder(concreteType);
 }
Esempio n. 9
0
        public static Func<IArguments, object> CompileCreator(ConcreteType concreteType)
        {
            var compiler = getCompiler(concreteType);

            return compiler.Compile(concreteType);
        }
Esempio n. 10
0
        public static Action<IArguments, object> CompileBuildUp(ConcreteType concreteType)
        {
            var compiler = getCompiler(concreteType);

            return compiler.BuildUp(concreteType);
        }
 public void should_have_all_public_properties_with_a_setter_as_optional_at_construction_time()
 {
     var concreteType = new ConcreteType(typeof (ConstructorTarget));
     concreteType.OptionalProperties.Select(x => x.Name)
         .ShouldHaveTheSameElementsAs("Color", "Direction", "Number");
 }
 public void find_type_for_parameter_should_return_null_if_the_property_is_unknown()
 {
     var concreteType = new ConcreteType(typeof (ConstructorTarget));
     concreteType.TypeForParameterName("something that does not exist").ShouldBeNull();
 }