Exemple #1
0
        public void InjectTo_Success()
        {
            var     cls1  = DeclareClass();
            var     type1 = cls1.GetBuiltType();
            dynamic dto   = Activator.CreateInstance(type1);
            var     tmp   = new Source
            {
                Id          = 10,
                Name        = "test",
                EntityToDto = "2020",
                X           = 95,
                Sample      = new NestedSouce {
                    Id = 50, X = 86, Description = "Hello"
                },
                Alternation = new Source2 {
                    Id = 46, Content = "Xin chao", PublishedDate = new DateTime(2030, 12, 22)
                },
                Array = new Element[] { new Element {
                                            Token = 1, Des = "1"
                                        }, new Element {
                                            Token = 2, Des = "2"
                                        } },
                List = new List <Element> {
                    new Element {
                        Token = 3, Des = "3"
                    }, new Element {
                        Token = 4, Des = "4"
                    }
                }
            };

            tmp.Middle        = new Middle();
            tmp.Middle.Nested = new NestedSource
            {
                Id     = 11,
                Name   = "test2",
                X      = 99,
                Sample = new NestedSouce {
                    Id = 50, X = 86, Description = "Hello"
                },
                Alternation = new Source2 {
                    Id = 46, Content = "Xin chao", PublishedDate = new DateTime(2030, 12, 22)
                },
                Array = new Element[] { new Element {
                                            Token = 1, Des = "1"
                                        }, new Element {
                                            Token = 2, Des = "2"
                                        } },
                List = new List <Element> {
                    new Element {
                        Token = 3, Des = "3"
                    }, new Element {
                        Token = 4, Des = "4"
                    }
                }
            };
            var date    = new DateTime(2020, 12, 22);
            var entity2 = new Source
            {
                Id          = 10,
                Name        = "test",
                X           = 95,
                Sample      = null,
                Alternation = new Source2
                {
                    PublishedDate = date
                },
                Array = null,
                List  = null
            };

            Mapper.MapFromEntityToDto(dto, tmp);
            dto.EntityToDto = "2020";
            // End preparing data;

            var entity = new Source();

            Mapper.MapFromDtoToEntity(dto, entity);
            // Test Mode OneWayToDto
            Assert.Null(entity.EntityToDto);

            Assert.True(entity.Id == dto.Id);
            Assert.True(entity.Name == dto.Name);
            Assert.True(entity.X == dto.Fields.X);
            Assert.True(entity.Sample.Id == dto.Sample.R.Id);
            Assert.True(entity.Sample.X == dto.Fields.Y);
            Assert.True(entity.Alternation.Content == dto.Alternation.Content);
            Assert.True(entity.Alternation.Id == dto.Alternation.Id);
            Assert.True(entity.Array[0].Token == dto.Array[0].Token);
            Assert.True(entity.Array[0].Des == dto.Array[0].Des);
            Assert.True(entity.Array[1].Token == dto.Array[1].Token);
            Assert.True(entity.Array[1].Des == dto.Array[1].Des);
            var index = 0;

            foreach (var item in dto.List)
            {
                Assert.True(entity.List[index].Token == item.Token);
                Assert.True(entity.List[index].Des == item.Des);
                ++index;
            }

            // nested prop
            Assert.True(entity.Middle.Nested.Id == dto.Middle.Nested.Id);
            Assert.True(entity.Middle.Nested.Name == dto.Middle.Nested.Name);
            Assert.True(entity.Middle.Nested.X == dto.Middle.Nested.Fields.X);
            Assert.True(entity.Middle.Nested.Sample.Id == dto.Middle.Nested.Sample.R.Id);
            Assert.True(entity.Middle.Nested.Sample.X == dto.Middle.Nested.Fields.Y);
            Assert.True(entity.Middle.Nested.Alternation.Content == dto.Middle.Nested.Alternation.Content);
            Assert.True(entity.Middle.Nested.Alternation.Id == dto.Middle.Nested.Alternation.Id);
            Assert.True(entity.Middle.Nested.Alternation.PublishedDate == dto.Middle.Nested.PublishedDate);
            Assert.True(entity.Middle.Nested.Array[0].Token == dto.Middle.Nested.Array[0].Token);
            Assert.True(entity.Middle.Nested.Array[0].Des == dto.Middle.Nested.Array[0].Des);
            Assert.True(entity.Middle.Nested.Array[1].Token == dto.Middle.Nested.Array[1].Token);
            Assert.True(entity.Middle.Nested.Array[1].Des == dto.Middle.Nested.Array[1].Des);
            index = 0;
            foreach (var item in dto.Middle.Nested.List)
            {
                Assert.True(entity.Middle.Nested.List[index].Token == item.Token);
                Assert.True(entity.Middle.Nested.List[index].Des == item.Des);
                ++index;
            }

            Assert.True(entity.Middle.Nested.Array[0].Token == dto.Middle2.Array[0].Token);
            Assert.True(entity.Middle.Nested.Array[0].Des == dto.Middle2.Array[0].Des);
            Assert.True(entity.Middle.Nested.Array[1].Token == dto.Middle2.Array[1].Token);
            Assert.True(entity.Middle.Nested.Array[1].Des == dto.Middle2.Array[1].Des);
            index = 0;
            foreach (var item in dto.Middle3.List)
            {
                Assert.True(entity.Middle.Nested.List[index].Token == item.Token);
                Assert.True(entity.Middle.Nested.List[index].Des == item.Des);
                ++index;
            }
            var keys = DtoObject.GetIds(dto);

            Assert.True(entity.Name == keys[0]);
            Assert.True(entity.Id == keys[1]);
            Mapper.MapFromDtoToEntity(dto, entity2);
            Assert.NotNull(entity2.Sample);
            Assert.NotNull(entity2.Sample);
            Assert.NotNull(entity2.Alternation);
            Assert.True(entity2.Alternation.PublishedDate == date);
            Assert.NotNull(entity2.List);
            Assert.NotNull(entity2.Array);
            var dtoObj = dto as IDtoObject;

            Assert.NotNull(dtoObj);
            var exp = cls1.BuildSelectorExpression();

            Assert.NotNull(exp);
        }