Exemplo n.º 1
0
        public void WeirdDtoTests()
        {
            DtoInfo <WeirdDto> info = DtoInfo.GetInfo <WeirdDto>();

            info.Properties.Count.Should().Be(2);
            Invoking(() => info.CreateNew()).Should().Throw <InvalidOperationException>();

            WeirdDto dto = new(1, 2);

            Invoking(() => info.ShallowClone(dto)).Should().Throw <InvalidOperationException>();

            var property = info.GetProperty <int>("IntegerProperty");

            info.GetProperty(x => x.IntegerProperty).Should().Be(property);
            property.Name.Should().Be("IntegerProperty");
            property.ValueType.Should().Be(typeof(int));
            property.IsReadOnly.Should().BeTrue();
            ((PropertyInfo)property.MemberInfo).GetMethod !.Name.Should().Be("get_IntegerProperty");
            property.GetValue(dto).Should().Be(dto.IntegerProperty);
            Invoking(() => property.SetValue(dto, 24)).Should().Throw <InvalidOperationException>();

            var field = info.GetProperty <int>("IntegerField");

            info.GetProperty(x => x.IntegerField).Should().Be(field);
            field.Name.Should().Be("IntegerField");
            field.ValueType.Should().Be(typeof(int));
            field.IsReadOnly.Should().BeTrue();
            ((FieldInfo)field.MemberInfo).Name.Should().Be("IntegerField");
            field.GetValue(dto).Should().Be(dto.IntegerField);
            Invoking(() => field.SetValue(dto, 24)).Should().Throw <InvalidOperationException>();
        }
Exemplo n.º 2
0
        public void EmptyDtoTests()
        {
            DtoInfo <EmptyDto> info = DtoInfo.GetInfo <EmptyDto>();

            info.Properties.Should().BeEmpty();
            info.CreateNew().GetType().Should().Be(typeof(EmptyDto));
            info.ShallowClone(new EmptyDto()).Should().NotBeNull();
            Invoking(() => info.GetProperty("Nope")).Should().Throw <ArgumentException>();
            info.TryGetProperty("Nope").Should().BeNull();
            Invoking(() => info.GetProperty <int>("Nope")).Should().Throw <ArgumentException>();
            info.TryGetProperty <int>("Nope").Should().BeNull();
        }
Exemplo n.º 3
0
        public void OnePropertyStrongPropertyTests()
        {
            DtoInfo <OneProperty>          info     = DtoInfo.GetInfo <OneProperty>();
            DtoProperty <OneProperty, int> property = info.GetProperty <int>("Integer");

            info.GetProperty(x => x.Integer).Should().Be(property);
            property.Name.Should().Be("Integer");
            property.ValueType.Should().Be(typeof(int));
            property.IsReadOnly.Should().BeFalse();
            ((PropertyInfo)property.MemberInfo).GetMethod !.Name.Should().Be("get_Integer");

            OneProperty dto = new() { Integer = 42 };

            property.GetValue(dto).Should().Be(dto.Integer);
            property.SetValue(dto, 24);
            dto.Integer.Should().Be(24);
        }
Exemplo n.º 4
0
        public void OneFieldStrongFieldTests()
        {
            DtoInfo <OneField>          info     = DtoInfo.GetInfo <OneField>();
            DtoProperty <OneField, int> property = info.GetProperty <int>("Integer");

            info.GetProperty(x => x.Integer).Should().Be(property);
            property.Name.Should().Be("Integer");
            property.ValueType.Should().Be(typeof(int));
            property.IsReadOnly.Should().BeFalse();
            ((FieldInfo)property.MemberInfo).Name.Should().Be("Integer");

            OneField dto = new() { Integer = 42 };

            property.GetValue(dto).Should().Be(dto.Integer);
            property.SetValue(dto, 24);
            dto.Integer.Should().Be(24);
        }