public void Test_that_for_no_matched_property_null_serializer_is_returned()
        {
            // Arrange
            var provider = new ConventionBasedMetamodelProvider();
            IMetamodelProvider metamodelProvider = provider;

            provider
            .AddPropertySerializerRule(
                p => p.Name == "FictionalProperty",
                p => new ValueSerializerMock());
            // Act
            var serializer = metamodelProvider.TryGetPropertySerializer(typeof(TestType).GetProperty(nameof(TestType.Property)));

            // Assert
            Assert.IsNull(serializer);
        }
        public void Test_that_property_rules_applied_in_the_same_order_as_they_was_registered2()
        {
            // Arrange
            var provider = new ConventionBasedMetamodelProvider();
            IMetamodelProvider metamodelProvider = provider;

            provider
            .AddPropertySerializerRule(
                p => p.PropertyType == typeof(string),
                p => new AnotherValueSerializerMock())
            .AddPropertySerializerRule(
                p => p.Name == "Property",
                p => new ValueSerializerMock());
            // Act
            var testTypeSerializer        = metamodelProvider.TryGetPropertySerializer(typeof(TestType).GetProperty(nameof(TestType.Property)));
            var anotherTestTypeSerializer = metamodelProvider.TryGetPropertySerializer(typeof(AnotherTestType).GetProperty(nameof(AnotherTestType.Property)));

            // Assert
            Assert.IsNotNull(testTypeSerializer);
            Assert.IsNotNull(anotherTestTypeSerializer);
            Assert.IsInstanceOfType(testTypeSerializer, typeof(ValueSerializerMock));
            Assert.IsInstanceOfType(anotherTestTypeSerializer, typeof(AnotherValueSerializerMock));
        }