public void should_map_composite_objects() { IDataReader reader = GetDataReader(); Mock .Arrange(() => reader.FieldCount) .Returns(2); Mock .Arrange(() => reader.GetName(0)) .Returns("name"); Mock .Arrange(() => reader.GetName(1)) .Returns("location"); Mock .Arrange(() => reader.GetOrdinal("name")) .Returns(0); Mock .Arrange(() => reader.GetOrdinal("location")) .Returns(1); Mock .Arrange(() => reader.GetString(0)) .Returns("nohros"); Mock .Arrange(() => reader.GetString(1)) .Returns("127.0.0.1"); var simple = new DataReaderMapperBuilder <ISimpleType>( "should_map_composite_objects") .Map(x => x.Name, "name") .Build(); var ignore = new DataReaderMapperBuilder <IgnoreType>( "should_map_composite_objects") .Map(x => x.Name, "name") .Map(x => x.Location, "location") .Build(); var composite = new DataReaderMapperBuilder <ICompositeType>( "should_map_composite_objects") .Transform((r, c) => simple.MapCurrent(r, (ISimpleType)c)) .Transform((r, c) => c.IgnoreType = ignore.MapCurrent(r)) .Build(); ICompositeType type = composite.Map(reader); Assert.That(type.IgnoreType, Is.Not.Null); Assert.That(type.Name, Is.EqualTo("nohros")); //Dynamics.Dynamics_.AssemblyBuilder.Save("test.dll"); }
public bool ResolveComposite(Classifier left, Classifier right) { //left or right must be composite if (left is ICompositeType) { ICompositeType leftComposite = left as ICompositeType; if (right is ICompositeType) { return(leftComposite.ConformsToComposite(right)); } else { return(leftComposite.ConformsToSimple(right)); } } return(false); }