Пример #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>();
        }
Пример #2
0
        public void OnePropertyInfoTests()
        {
            DtoInfo <OneProperty> info = DtoInfo.GetInfo <OneProperty>();

            info.Properties.Count.Should().Be(1);
            info.CreateNew().GetType().Should().Be(typeof(OneProperty));

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

            info.ShallowClone(dto).Integer.Should().Be(dto.Integer);
        }
Пример #3
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();
        }