public void GenerateToObject_WhenCalledWithMultipeTablesWithResultingDictionary_FillsDictionaryCorrectly() { IMapping mapping = new Mapping(); Func<TestClass, dynamic, bool> condition = ( @class, o ) => true; Action<TestClass, Dictionary<int, string>> destination = ( @class, values ) => @class.TestContentDictionary = values; mapping.AddJoin( x => x.DictionaryTableJoin<TestClass>() .Condition( condition ) .KeyColumn( "Id" ) .ValueColumn( "Name" ) .SetDestinationProperty( destination ) .ChildTable( 1 ) ); mapping.Table<TestClass>( 0 ); var classMapResult = new ClassMapResult { Mappings = (Mapping)mapping }; var mockDataReader = new MockDataReader(); var table = mockDataReader.AddTable( "Length2", "TestContentId" ); var contentTable = mockDataReader.AddTable( "Id", "Name" ); mockDataReader.AddRow( table, 1, 1 ); mockDataReader.AddRow( contentTable, 1, "Name1" ); mockDataReader.AddRow( contentTable, 2, "Name2" ); var func = MappingGenerator.Generate<TestClass>( new MockDataReader(), classMapResult ); var result = func( mockDataReader, new Dictionary<MappingEnum, object> { { MappingEnum.DictionaryJoin, new List<KeyValuePair<object, object>> { new KeyValuePair<object, object>( condition, destination ) } } }, new Dictionary<Tuple<int, Type>, Func<IDataRecord, Dictionary<MappingEnum, object>, object>>() ); Assert.AreEqual( 2, result.TestContentDictionary.Count ); Assert.AreEqual( "Name1", result.TestContentDictionary[ 1 ] ); Assert.AreEqual( "Name2", result.TestContentDictionary[ 2 ] ); }