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

            provider
            .AddTypeSerializerRule(
                t => t.Name == "FictionalTipe",
                t => new ValueSerializerMock());
            // Act
            var serializer = metamodelProvider.TryGetTypeSerializer(typeof(TestType));

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

            provider
            .AddTypeSerializerRule(
                t => t.Name.EndsWith("TestType"),
                t => new ValueSerializerMock())
            .AddTypeSerializerRule(
                t => t.Name == "AnotherTestType",
                t => new AnotherValueSerializerMock());
            // Act
            var testTypeSerializer        = metamodelProvider.TryGetTypeSerializer(typeof(TestType));
            var anotherTestTypeSerializer = metamodelProvider.TryGetTypeSerializer(typeof(AnotherTestType));

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