public void Should_handle_nested_type()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MySecondEvent.MyNestedClass)), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MySecondEvent.MyNestedClass));
        }
        public void Should_handle_nested_generics()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MyParentGeneric <Int32, bool> .MyNestedGeneric <string>)), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyParentGeneric <Int32, bool> .MyNestedGeneric <string>));
        }
        public void Should_resolve_nestedType_as_generic_param_type_id_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MyGenericType <MySecondEvent.MyNestedClass>));

            //Assert
            messageTypeId.Should().Be("MyGenericType<MySecondEvent+MyNestedClass>");
        }
        public void Should_resolve_type_id_by_attribute()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MyEvent));

            //Assert
            messageTypeId.Should().Be("TestMessageType");
        }
        public void Should_resolve_generic_type_id_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MyGenericType <string>));

            //Assert
            messageTypeId.Should().Be("MyGenericType<String>");
        }
        public void Should_resolve_type_id_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MySecondEvent));

            //Assert
            messageTypeId.Should().Be("MySecondEvent");
        }
        public void Should_handle_multi_dimensional_array()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MySecondEvent[][, ])), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MySecondEvent[][, ]));
        }
        public void Should_handle_compound_generic_array()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MyGenericType <MySecondEvent> [, ])), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyGenericType <MySecondEvent> [, ]));
        }
        public void Should_handle_generic_type()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MyGenericType <string>)), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyGenericType <string>));
        }