示例#1
0
        public void ImmediateFieldsToString()
        {
            var    immediateFields1 = new ImmediateFields(SmallObjectFieldInfos);
            string expectedToString = $"[{string.Join(", ", SmallObjectFieldInfos.Select(p => p.ToString()).ToArray())}]";

            Assert.AreEqual(expectedToString, immediateFields1.ToString());

            var immediateFields2 = new ImmediateFields(EmptyFieldInfo);

            Assert.AreEqual("[]", immediateFields2.ToString());
        }
示例#2
0
        public void ImmediateFieldsHashCode()
        {
            var immediateFields1 = new ImmediateFields(SmallObjectFieldInfos);
            var immediateFields2 = new ImmediateFields(SmallObjectFieldInfos);

            Assert.AreEqual(immediateFields1.GetHashCode(), immediateFields2.GetHashCode());

            var immediateFields3 = new ImmediateFields(SecondSmallObjectFieldInfos);

            Assert.AreNotEqual(immediateFields1.GetHashCode(), immediateFields3.GetHashCode());
        }
示例#3
0
        public void GetField()
        {
            var immediateFields = new ImmediateFields(SmallObjectFieldInfos);
            var expectedField   = new ImmediateField(SmallObjectTestField1FieldInfo);

            Assert.AreEqual(expectedField, immediateFields[nameof(SmallObject._testField1)]);
            Assert.AreEqual(expectedField, immediateFields.GetField(nameof(SmallObject._testField1)));

            Assert.IsNull(immediateFields["NotExists"]);
            Assert.IsNull(immediateFields.GetField("NotExists"));

            // ReSharper disable InconsistentNaming
            // ReSharper disable AssignNullToNotNullAttribute
            Assert.Throws <ArgumentNullException>(() => { var _ = immediateFields[null]; });
            Assert.Throws <ArgumentNullException>(() => { var _ = immediateFields.GetField(null); });
            // ReSharper restore AssignNullToNotNullAttribute
            // ReSharper restore InconsistentNaming
        }
示例#4
0
        public void ImmediateFieldsEquality()
        {
            var immediateFields1 = new ImmediateFields(SmallObjectFieldInfos);
            var immediateFields2 = new ImmediateFields(SmallObjectFieldInfos);

            Assert.IsTrue(immediateFields1.Equals(immediateFields1));
            Assert.IsTrue(immediateFields1.Equals(immediateFields2));
            Assert.IsTrue(immediateFields1.Equals((object)immediateFields2));
            Assert.IsFalse(immediateFields1.Equals(null));

            var immediateFields3 = new ImmediateFields(SecondSmallObjectFieldInfos);

            Assert.IsFalse(immediateFields1.Equals(immediateFields3));
            Assert.IsFalse(immediateFields1.Equals((object)immediateFields3));

            var immediateFields4 = new ImmediateFields(PublicNestedFieldInfos);

            Assert.IsFalse(immediateFields4.Equals(immediateFields1));
            Assert.IsFalse(immediateFields4.Equals((object)immediateFields1));
        }
示例#5
0
        public void ImmediateFieldsInfo()
        {
            var immediateFields1 = new ImmediateFields(SmallObjectFieldInfos);

            CollectionAssert.AreEquivalent(
                new[]
            {
                new ImmediateField(SmallObjectTestField1FieldInfo),
                new ImmediateField(SmallObjectTestField2FieldInfo)
            },
                immediateFields1);

            var immediateFields2 = new ImmediateFields(SecondSmallObjectFieldInfos);

            CollectionAssert.AreNotEquivalent(immediateFields1, immediateFields2);

            var immediateFields3 = new ImmediateFields(EmptyFieldInfo);

            CollectionAssert.AreEqual(
                Enumerable.Empty <ImmediateProperty>(),
                immediateFields3);
        }
示例#6
0
        public void ImmediateFieldsSerialization()
        {
            var fields = new ImmediateFields(new[]
            {
                PublicValueTypePublicFieldFieldsInfo,
                PublicReferenceTypePublicField2FieldsInfo,
                PublicObjectTypeInternalFieldFieldsInfo,
                TestEnumField1FieldInfo,
                TestEnumULongFieldValueFieldInfo
            });
            ImmediateFields deserializedFields = SerializeAndDeserialize(fields);

            CollectionAssert.AreEquivalent(
                new[]
            {
                new ImmediateField(PublicValueTypePublicFieldFieldsInfo),
                new ImmediateField(PublicReferenceTypePublicField2FieldsInfo),
                new ImmediateField(PublicObjectTypeInternalFieldFieldsInfo),
                new ImmediateField(TestEnumField1FieldInfo),
                new ImmediateField(TestEnumULongFieldValueFieldInfo)
            },
                deserializedFields);
        }