public void ImmediatePropertiesToString() { var immediateProperties1 = new ImmediateProperties(SmallObjectPropertyInfos); string expectedToString = $"[{string.Join(", ", SmallObjectPropertyInfos.Select(p => p.ToString()).ToArray())}]"; Assert.AreEqual(expectedToString, immediateProperties1.ToString()); var immediateProperties2 = new ImmediateProperties(EmptyPropertyInfo); Assert.AreEqual("[]", immediateProperties2.ToString()); }
public void ImmediatePropertiesHashCode() { var immediateProperties1 = new ImmediateProperties(SmallObjectPropertyInfos); var immediateProperties2 = new ImmediateProperties(SmallObjectPropertyInfos); Assert.AreEqual(immediateProperties1.GetHashCode(), immediateProperties2.GetHashCode()); var immediateProperties3 = new ImmediateProperties(SecondSmallObjectPropertyInfos); Assert.AreNotEqual(immediateProperties1.GetHashCode(), immediateProperties3.GetHashCode()); }
public void GetPropertyWithNew() { var immediateProperties = new ImmediateProperties(new[] { ChildTypeRedefinitionClassPublicGetPropertyPropertyInfo, BaseClassPublicGetPropertyPropertyInfo }); var expectedProperty = new ImmediateProperty(ChildTypeRedefinitionClassPublicGetPropertyPropertyInfo); Assert.AreEqual(expectedProperty, immediateProperties[nameof(ChildTypeRedefinitionTestClass.Property)]); Assert.AreEqual(expectedProperty, immediateProperties.GetProperty(nameof(ChildTypeRedefinitionTestClass.Property))); immediateProperties = new ImmediateProperties(new[] { BaseClassPublicGetPropertyPropertyInfo, ChildTypeRedefinitionClassPublicGetPropertyPropertyInfo }); Assert.AreEqual(expectedProperty, immediateProperties[nameof(ChildTypeRedefinitionTestClass.Property)]); Assert.AreEqual(expectedProperty, immediateProperties.GetProperty(nameof(ChildTypeRedefinitionTestClass.Property))); }
public void ImmediatePropertiesInfoWithNew() { var immediateProperties = new ImmediateProperties(new[] { ChildTypeRedefinitionClassPublicGetPropertyPropertyInfo, BaseClassPublicGetPropertyPropertyInfo }); CollectionAssert.AreEquivalent( new[] { new ImmediateProperty(ChildTypeRedefinitionClassPublicGetPropertyPropertyInfo) }, immediateProperties); immediateProperties = new ImmediateProperties(new[] { BaseClassPublicGetPropertyPropertyInfo, ChildTypeRedefinitionClassPublicGetPropertyPropertyInfo }); CollectionAssert.AreEquivalent( new[] { new ImmediateProperty(ChildTypeRedefinitionClassPublicGetPropertyPropertyInfo) }, immediateProperties); }
public void GetProperty() { var immediateProperties = new ImmediateProperties(SmallObjectPropertyInfos); var expectedProperty = new ImmediateProperty(SmallObjectTestProperty1PropertyInfo); Assert.AreEqual(expectedProperty, immediateProperties[nameof(SmallObject.TestProperty1)]); Assert.AreEqual(expectedProperty, immediateProperties.GetProperty(nameof(SmallObject.TestProperty1))); Assert.IsNull(immediateProperties["NotExists"]); Assert.IsNull(immediateProperties.GetProperty("NotExists")); // ReSharper disable InconsistentNaming // ReSharper disable AssignNullToNotNullAttribute Assert.Throws <ArgumentNullException>(() => { var _ = immediateProperties[null]; }); Assert.Throws <ArgumentNullException>(() => { var _ = immediateProperties.GetProperty(null); }); // ReSharper restore AssignNullToNotNullAttribute // ReSharper restore InconsistentNaming }
public void ImmediatePropertiesSerialization() { var properties = new ImmediateProperties(new[] { PublicValueTypePublicGetSetPropertyPropertyInfo, PublicReferenceTypePublicGetPropertyPropertyInfo, PublicObjectTypePublicSetPropertyPropertyInfo }); ImmediateProperties deserializedProperties = SerializeAndDeserialize(properties); CollectionAssert.AreEquivalent( new[] { new ImmediateProperty(PublicValueTypePublicGetSetPropertyPropertyInfo), new ImmediateProperty(PublicReferenceTypePublicGetPropertyPropertyInfo), new ImmediateProperty(PublicObjectTypePublicSetPropertyPropertyInfo) }, deserializedProperties); }
public void ImmediatePropertiesEquality() { var immediateProperties1 = new ImmediateProperties(SmallObjectPropertyInfos); var immediateProperties2 = new ImmediateProperties(SmallObjectPropertyInfos); Assert.IsTrue(immediateProperties1.Equals(immediateProperties1)); Assert.IsTrue(immediateProperties1.Equals(immediateProperties2)); Assert.IsTrue(immediateProperties1.Equals((object)immediateProperties2)); Assert.IsFalse(immediateProperties1.Equals(null)); var immediateProperties3 = new ImmediateProperties(SecondSmallObjectPropertyInfos); Assert.IsFalse(immediateProperties1.Equals(immediateProperties3)); Assert.IsFalse(immediateProperties1.Equals((object)immediateProperties3)); var immediateProperties4 = new ImmediateProperties(PublicNestedPropertyInfos); Assert.IsFalse(immediateProperties4.Equals(immediateProperties1)); Assert.IsFalse(immediateProperties4.Equals((object)immediateProperties1)); }
public void ImmediatePropertiesInfo() { var immediateProperties1 = new ImmediateProperties(SmallObjectPropertyInfos); CollectionAssert.AreEquivalent( new[] { new ImmediateProperty(SmallObjectTestProperty1PropertyInfo), new ImmediateProperty(SmallObjectTestProperty2PropertyInfo) }, immediateProperties1); var immediateProperties2 = new ImmediateProperties(SecondSmallObjectPropertyInfos); CollectionAssert.AreNotEquivalent(immediateProperties1, immediateProperties2); var immediateProperties3 = new ImmediateProperties(EmptyPropertyInfo); CollectionAssert.AreEqual( Enumerable.Empty <ImmediateProperty>(), immediateProperties3); }