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(); }
private static FuncCompiler getCompiler(ConcreteType concreteType) { var compilerType = typeof (FuncCompiler<>).MakeGenericType(concreteType.Type); return (FuncCompiler) Activator.CreateInstance(compilerType); }
public static InstanceBuilder CreateBuilder(ConcreteType concreteType) { return getCompiler(concreteType).CreateBuilder(concreteType); }
public static Func<IArguments, object> CompileCreator(ConcreteType concreteType) { var compiler = getCompiler(concreteType); return compiler.Compile(concreteType); }
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(); }