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>(); }
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); }
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(); }