public void ExtracMembersValues_ExtractDataFromObject_ShouldBeEquivilent()
        {
            const int numberOfPrivatePropertiesAndFields = 8;

            var mock = new PersonMockData();
            var reflectionMetadataInfos = PropertiesMetadataPropertiesCache.ExtracMemberMetadata(mock, mock.GetType()).ToDictionary(x => x.Name);

            reflectionMetadataInfos[nameof(PersonMockData.FieldNonSensitive)].ValueExtractor(mock).ShouldBe(mock.FieldNonSensitive);
            reflectionMetadataInfos[nameof(PersonMockData.FieldSensitive)].ValueExtractor(mock).ShouldBe(mock.FieldSensitive);
            reflectionMetadataInfos[nameof(PersonMockData.FieldCryptic)].ValueExtractor(mock).ShouldBe(mock.FieldCryptic);

            reflectionMetadataInfos[nameof(PersonMockData.ID)].ValueExtractor(mock).ShouldBe(mock.ID);
            reflectionMetadataInfos[nameof(PersonMockData.Name)].ValueExtractor(mock).ShouldBe(mock.Name);
            reflectionMetadataInfos[nameof(PersonMockData.IsMale)].ValueExtractor(mock).ShouldBe(mock.IsMale);
            reflectionMetadataInfos[nameof(PersonMockData.Sensitive)].ValueExtractor(mock).ShouldBe(mock.Sensitive);
            reflectionMetadataInfos[nameof(PersonMockData.Cryptic)].ValueExtractor(mock).ShouldBe(mock.Cryptic);

            reflectionMetadataInfos.Count.ShouldBe(numberOfPrivatePropertiesAndFields);
        }
        public void ExtracPropertiesAndFieldsValues_ExtractDataFromObject_ShouldBeEquivilent()
        {
            const int numberOfPrivatePropertiesAndFields = 8;

            var mock = new PersonMockData();
            var reflectionMetadataInfos = PropertiesMetadataPropertiesCache.ExtracMemberMetadata(mock, mock.GetType()).ToDictionary(x => x.Name);
            var dissectParams           = DissectPropertyInfoMetadata.GetMembers(mock);
            var numberProperties        = dissectParams.Count();


            int count = 0;

            foreach (var member in dissectParams)
            {
                var result = reflectionMetadataInfos[member.Name].ValueExtractor(mock);

                member.Value.ShouldBe(result, $"Propery name {member.Name} doesn't exists.");
                count++;
            }

            count.ShouldBe(numberProperties);
            count.ShouldBe(numberOfPrivatePropertiesAndFields);
            reflectionMetadataInfos.Count.ShouldBe(numberProperties);
        }