示例#1
0
        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");
        }
示例#2
0
        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);
        }