public void Should_Invoke_Generator() { var context = CreateContext(typeof(string), _overrides); var generatorOverride = AutoGeneratorFactory.GetGenerator(context); generatorOverride.Generate(context).Should().BeOfType <string>().And.Should().NotBeNull(); }
public void GetGenerator_Should_Return_ArrayGenerator(Type type) { var itemType = type.GetElementType(); var generatorType = GetGeneratorType(typeof(ArrayGenerator <>), itemType); AutoGeneratorFactory.GetGenerator(type, _context).Should().BeOfType(generatorType); }
public void GetGenerator_Should_Return_EnumGenerator() { var type = typeof(TestEnum); var context = CreateContext(type); AutoGeneratorFactory.GetGenerator(context).Should().BeOfType <EnumGenerator <TestEnum> >(); }
public void GetGenerator_Should_Return_Generator(Type type) { var context = CreateContext(type); var generator = AutoGeneratorFactory.Generators[type]; AutoGeneratorFactory.GetGenerator(context).Should().Be(generator); }
public void GetGenerator_Should_Return_TypeGenerator(Type type) { var context = CreateContext(type); var generatorType = GetGeneratorType(typeof(TypeGenerator <>), type); AutoGeneratorFactory.GetGenerator(context).Should().BeOfType(generatorType); }
public void GetGenerator_Should_Return_NullableGenerator() { var type = typeof(ExpandoObject); var context = CreateContext(type); AutoGeneratorFactory.GetGenerator(context).Should().BeOfType <Generators.ExpandoObjectGenerator>(); }
public void GetGenerator_Should_Return_EnumerableGenerator(Type type) { var genericTypes = ReflectionHelper.GetGenericArguments(type); var itemType = genericTypes.ElementAt(0); var generatorType = GetGeneratorType(typeof(EnumerableGenerator <>), itemType); AutoGeneratorFactory.GetGenerator(type, _context).Should().BeOfType(generatorType); }
public void GetGenerator_Should_Return_DictionaryGenerator(Type type) { var genericTypes = ReflectionHelper.GetGenericArguments(type); var keyType = genericTypes.ElementAt(0); var valueType = genericTypes.ElementAt(1); var generatorType = GetGeneratorType(typeof(DictionaryGenerator <,>), keyType, valueType); AutoGeneratorFactory.GetGenerator(type, _context).Should().BeOfType(generatorType); }
public void Should_Return_Generator_If_No_Matching_Override() { _overrides = new List <AutoGeneratorOverride> { new TestGeneratorOverride() }; var context = CreateContext(typeof(int), _overrides); AutoGeneratorFactory.GetGenerator(context).Should().BeOfType <IntGenerator>(); }
public void Should_Return_All_Matching_Overrides() { var generatorOverride = new TestGeneratorOverride(true); _overrides.Insert(1, generatorOverride); var context = CreateContext(typeof(string), _overrides); var invoker = AutoGeneratorFactory.GetGenerator(context) as AutoGeneratorOverrideInvoker; invoker.Overrides.Should().BeEquivalentTo(new[] { generatorOverride, _generatorOverride }); }
public void GetGenerator_Should_Return_Generator_For_DataSets_And_DataTables(Type dataType, Type generatorType) { // Arrange var context = CreateContext(dataType); // Act var generator = AutoGeneratorFactory.GetGenerator(context); // Assert generator.Should().BeAssignableTo(generatorType); }
public void Should_Not_Throw_For_Reference_Types() { var type = typeof(TestClass); var constructor = type.GetConstructors().Single(); var parameter = constructor.GetParameters().Single(); var context = CreateContext(parameter.ParameterType); Action action = () => AutoGeneratorFactory.GetGenerator(context); action.Should().NotThrow(); }
object IAutoGenerator.Generate(AutoGenerateContext context) { var instance = context.Instance; #if !NETSTANDARD1_3 // Need to copy the target dictionary to avoid mutations during population var target = instance as IDictionary <string, object>; var source = new Dictionary <string, object>(target); var properties = source.Where(pair => pair.Value != null); foreach (var property in properties) { // Configure the context var type = property.Value.GetType(); context.ParentType = context.GenerateType; context.GenerateType = type; context.GenerateName = property.Key; if (ReflectionHelper.IsExpandoObject(type)) { context.Instance = property.Value; } else { context.Instance = null; } // Generate the property values var generator = AutoGeneratorFactory.GetGenerator(context); target[property.Key] = generator.Generate(context); } // Reset the instance context context.Instance = instance; #endif return(instance); }
public void GetGenerator_Should_Return_NullableGenerator() { AutoGeneratorFactory.GetGenerator <TestEnum?>(_context).Should().BeOfType <NullableGenerator <TestEnum> >(); }