public void GenerateToObject_WhenCalledWithVariableTableTypeAndPropertyMap_UsesPropertyMap() { IMapping mapping = new Mapping(); Func<IDataRecord, Type> variableTableType = dataRecord => typeof( StringScore ); mapping.VariableTableType<BaseScore>( variableTableType ); Func<IDataRecord, string> action = dataRecord => "The Score Is: " + dataRecord.GetString( 2 ); mapping.PropertyMap<StringScore, String>( x => x.ValueString, action ); mapping.Table<BaseScore>( 0 ); var classMapResult = new ClassMapResult { Mappings = (Mapping)mapping }; var mockDataReader = new MockDataReader(); var scores = mockDataReader.AddTable( "Id", "ResultId", "ValueString", "ResultType" ); mockDataReader.AddRow( scores, 1, 1, "10", 2 ); var func = MappingGenerator.Generate<List<BaseScore>>( new MockDataReader(), classMapResult ); var dictionary = new Dictionary<Tuple<int, Type>, Func<IDataRecord, Dictionary<MappingEnum, object>, object>>(); var result = func( mockDataReader, new Dictionary<MappingEnum, object> { { MappingEnum.VariableTableType, new Dictionary<Type, object> { { typeof( BaseScore ), variableTableType } } }, { MappingEnum.PropertyMap, new Dictionary<PropertyInfo, PropertyMap> { { typeof( StringScore ).GetProperty( "ValueString" ), new PropertyMap( action ) } } } }, dictionary ); Assert.AreEqual( 1, result[ 0 ].Id ); Assert.IsInstanceOf<StringScore>( result[ 0 ] ); Assert.AreEqual( "The Score Is: 10", ( result[ 0 ] as StringScore ).ValueString ); }
public void GenerateToObject_WhenCalledWithPropertyMapColumnName_ReturnsCorrectData() { IMapping mapping = new Mapping(); mapping.Table<TestClass>( 0 ); mapping.PropertyMap<TestClass,string>( x => x.Name1, "Name" ); var classMapResult = new ClassMapResult { Mappings = (Mapping)mapping }; var mockDataReader = new MockDataReader(); var scores = mockDataReader.AddTable( "Name" ); string expectedName = "The name"; mockDataReader.AddRow( scores, expectedName ); var func = MappingGenerator.Generate<List<TestClass>>( new MockDataReader(), classMapResult ); var dictionary = new Dictionary<Tuple<int, Type>, Func<IDataRecord, Dictionary<MappingEnum, object>, object>>(); var result = func( mockDataReader, new Dictionary<MappingEnum, object> { { MappingEnum.PropertyMap, new Dictionary<PropertyInfo, PropertyMap> { { typeof( TestClass ).GetProperty( "Name1" ), new PropertyMap( "Name" ) } } } }, dictionary ); Assert.AreEqual( expectedName, result[ 0 ].Name1 ); }