public void When_querying_for_a_generic_part_exported_by_the_export_attribute_with_default_contract_name_and_given_contract_type_the_closed_generic_part_is_returned()
        {
            var typeCatalog = new GenericTypeCatalog(typeof(ServiceImpl1 <Customer>), typeof(IService <>));
            var parts       = typeCatalog.Parts.ToList();

            Assert.That(parts.Count, Is.EqualTo(1));
            Assert.That(parts[0].ExportDefinitions.First().ContractName,
                        Is.EqualTo(AttributedModelServices.GetContractName(typeof(IService <Customer>))));
            Assert.That(parts[0].ExportDefinitions.First().Metadata[CompositionConstants.ExportTypeIdentityMetadataName],
                        Is.EqualTo(AttributedModelServices.GetTypeIdentity(typeof(IService <Customer>))));

            // Assert other export definitions
            Assert.That(parts[0].ExportDefinitions.Skip(1).First().ContractName,
                        Is.EqualTo("Foo-Bool"));
            Assert.That(parts[0].ExportDefinitions.Skip(1).First().Metadata[CompositionConstants.ExportTypeIdentityMetadataName],
                        Is.EqualTo(AttributedModelServices.GetTypeIdentity(typeof(bool))));

            Assert.That(parts[0].ExportDefinitions.Skip(2).First().ContractName,
                        Is.EqualTo("Foo-String"));
            Assert.That(parts[0].ExportDefinitions.Skip(2).First().Metadata[CompositionConstants.ExportTypeIdentityMetadataName],
                        Is.EqualTo(AttributedModelServices.GetTypeIdentity(typeof(string))));

            Assert.That(parts[0].ExportDefinitions.Skip(3).First().ContractName,
                        Is.EqualTo("Foo-Method"));
            Assert.That(parts[0].ExportDefinitions.Skip(3).First().Metadata[CompositionConstants.ExportTypeIdentityMetadataName],
                        Is.EqualTo(AttributedModelServices.GetTypeIdentity(typeof(Action))));
        }
        public void When_querying_for_a_generic_part_exported_by_the_export_attribute_with_a_given_contract_name_and_default_contract_type_the_closed_generic_part_is_returned()
        {
            var typeCatalog = new GenericTypeCatalog(typeof(Service2 <Customer>));
            var parts       = typeCatalog.Parts.ToList();

            Assert.That(parts.Count, Is.EqualTo(1));
            Assert.That(parts[0].ExportDefinitions.First().ContractName,
                        Is.EqualTo("contract-name"));
            Assert.That(parts[0].ExportDefinitions.First().Metadata[CompositionConstants.ExportTypeIdentityMetadataName],
                        Is.EqualTo(AttributedModelServices.GetTypeIdentity(typeof(Service2 <Customer>))));
        }