public void CreateParts_should_properly_extract_closed_generic_constructor_argument_when_importing_collection_and_when_contract_type_is_not_specified() { var exportConvention = new ExportConvention { Members = t => new[] { t }, ContractType = x => typeof(ConventionPart4), }; var importConvention = new ImportConvention { Members = t => new[] { typeof(ConventionPart4).GetConstructors().Single() } }; var convention = new PartConvention(); convention.Imports.Add(importConvention); convention.Exports.Add(exportConvention); convention.Condition = t => t == typeof(ConventionPart4); var registry = new FakePartRegistry2(convention); ConventionPartCreator creator = new ConventionPartCreator(registry); var partDefinition = creator.CreateParts().First(); var importDefinitin = partDefinition.ImportDefinitions.Single(); importDefinitin.ContractName.ShouldEqual("MefContrib.Hosting.Conventions.Tests.IRepository(System.String)"); }
public void GetExportContractName_should_return_default_contract_name_of_last_default_convention_when_match_is_available() { const string expectedContractName = "Bar"; var service = GetServiceWithDefaultConventions(); service.DefaultConventions.Add( new TypeDefaultConvention { ContractName = expectedContractName, ContractType = typeof(decimal), TargetType = typeof(string) }); var member = ReflectionServices.GetProperty <FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = service.GetExportContractName(convention, member); result.ShouldEqual(expectedContractName); }
public void Metadata_should_not_null_on_new_instance() { var export = new ExportConvention(); export.Metadata.ShouldNotBeNull(); }
public void GetExportTypeIdentity_should_return_tyoe_identity_of_default_contract_type_of_last_default_convention_when_match_is_available() { var service = GetServiceWithDefaultConventions(); service.DefaultConventions.Add( new TypeDefaultConvention { ContractName = string.Empty, ContractType = typeof(decimal), TargetType = typeof(string) }); var member = ReflectionServices.GetProperty <FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = service.GetExportTypeIdentity(convention, member); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(decimal)); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportContractName_should_return_default_contract_name_of_last_default_convention_when_match_is_available() { const string expectedContractName = "Bar"; var service = GetServiceWithDefaultConventions(); service.DefaultConventions.Add( new TypeDefaultConvention { ContractName = expectedContractName, ContractType = typeof(decimal), TargetType = typeof(string) }); var member = ReflectionServices.GetProperty<FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = service.GetExportContractName(convention, member); result.ShouldEqual(expectedContractName); }
public void CreateParts_should_properly_extract_closed_generic_type_parameter() { var exportConvention = new ExportConvention { Members = t => new[] { t }, ContractType = x => typeof(ConventionPart2), }; var importConvention = new ImportConvention { Members = t => new[] { ReflectionServices.GetProperty <ConventionPart2>(p => p.Repository) }, ContractType = x => typeof(IRepository <string>) }; var convention = new PartConvention(); convention.Imports.Add(importConvention); convention.Exports.Add(exportConvention); convention.Condition = t => t == typeof(ConventionPart2); var registry = new FakePartRegistry2(convention); ConventionPartCreator creator = new ConventionPartCreator(registry); var partDefinition = creator.CreateParts().First(); partDefinition.ImportDefinitions.Single().ContractName.ShouldEqual("MefContrib.Hosting.Conventions.Tests.IRepository(System.String)"); }
public void Equals_should_return_false_if_called_with_null() { var export = new ExportConvention(); var results = export.Equals((ExportConvention)null); results.ShouldBeFalse(); }
public void Equals_should_return_false_when_contract_is_not_same_on_the_instance_that_is_being_compared_againts() { var export = new ExportConvention { ContractName = x => "Foo" }; var results = export.Equals(new ExportConvention { ContractName = x => "Bar" }); results.ShouldBeFalse(); }
public void Equals_should_return_true_if_same_as_instance_being_compared_against() { var instance = new ExportConvention(); var results = instance.Equals(new ExportConvention()); results.ShouldBeTrue(); }
public void Equals_should_return_false_when_type_identity_is_not_same_on_the_instance_that_is_being_compared_against() { var instance = new ExportConvention { ContractType = x => typeof(string) }; var results = instance.Equals(new ExportConvention { ContractType = x => typeof(int) }); results.ShouldBeFalse(); }
public void ConventionCatalog_should_import_closed_generic() { var exportConvention = new ExportConvention { Members = t => new[] { t }, ContractType = x => typeof(ConventionPart2), }; var importConvention = new ImportConvention { Members = t => new[] { ReflectionServices.GetProperty <ConventionPart2>(p => p.Repository) }, ContractType = x => typeof(IRepository <string>) }; var convention = new PartConvention(); convention.Imports.Add(importConvention); convention.Exports.Add(exportConvention); convention.Condition = t => t == typeof(ConventionPart2); var model = new FakePartRegistry2(convention); // Setup container ConventionCatalog conventionCatalog = new ConventionCatalog(model); var typeCatalog = new TypeCatalog(typeof(AttributedClosedRepository), typeof(AttributedPart2)); var aggregated = new AggregateCatalog(typeCatalog, conventionCatalog); var container = new CompositionContainer(aggregated); var part = new AttributedPart2(); var batch = new CompositionBatch(); batch.AddPart(part); container.Compose(batch); // Assert part.Part.ShouldNotBeNull(); part.Part.Repository.ShouldNotBeNull(); }
public void GetExportContractName_should_return_convention_contract_name_when_not_null() { const string contract = "Contract"; var convention = new ExportConvention { ContractName = x => contract, ContractType = x => typeof(string) }; var results = this.Service.GetExportContractName( convention, ReflectionServices.GetField<FakePart>(x => x.Count)); results.ShouldEqual(contract); }
public void GetExportContractName_should_return_convention_contract_name_when_not_null() { const string contract = "Contract"; var convention = new ExportConvention { ContractName = x => contract, ContractType = x => typeof(string) }; var results = this.Service.GetExportContractName( convention, ReflectionServices.GetField <FakePart>(x => x.Count)); results.ShouldEqual(contract); }
public void GetExportContractName_should_return_convention_contract_type_when_not_null_and_contract_name_is_null() { var convention = new ExportConvention { ContractName = null, ContractType = x => typeof(string) }; var results = this.Service.GetExportContractName( convention, ReflectionServices.GetField <FakePart>(x => x.Count)); var expectedContractName = AttributedModelServices.GetContractName(convention.ContractType.Invoke(null)); results.ShouldEqual(expectedContractName); }
public void GetExportContractName_should_return_convention_contract_type_when_not_null_and_contract_name_is_null() { var convention = new ExportConvention { ContractName = null, ContractType = x => typeof(string) }; var results = this.Service.GetExportContractName( convention, ReflectionServices.GetField<FakePart>(x => x.Count)); var expectedContractName = AttributedModelServices.GetContractName(convention.ContractType.Invoke(null)); results.ShouldEqual(expectedContractName); }
public void GetExportContractName_should_return_default_contract_name_when_match_is_available() { var member = ReflectionServices.GetProperty<FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = GetServiceWithDefaultConventions().GetExportContractName(convention, member); result.ShouldEqual("Foo"); }
public void GetExportContractName_should_return_default_contract_name_when_match_is_available() { var member = ReflectionServices.GetProperty <FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = GetServiceWithDefaultConventions().GetExportContractName(convention, member); result.ShouldEqual("Foo"); }
public void GetExportTypeIdentity_should_return_type_identity_from_convention_when_not_null() { var convention = new ExportConvention { ContractName = x => string.Empty, ContractType = x => typeof(string) }; var service = GetServiceWithoutDefaultConventions(); var result = service.GetExportTypeIdentity(convention, ReflectionServices.GetField <FakePart>(x => x.Count)); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(string)); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportContractName_should_return_contract_name_of_field_type_when_called_with_field_and_contract_name_and_type_are_null() { var member = ReflectionServices.GetField <FakePart>(x => x.Count); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var results = this.Service.GetExportContractName(convention, member); var expectedContractName = AttributedModelServices.GetContractName(member.FieldType); results.ShouldEqual(expectedContractName); }
public void GetExportTypeIdentity_should_return_type_identity_of_default_contract_type_when_match_is_available() { var member = ReflectionServices.GetProperty <FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = GetServiceWithDefaultConventions().GetExportTypeIdentity(convention, member); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(int)); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportContractName_should_return_type_identity_of_method_type_when_called_with_method_and_contract_name_and_type_are_null() { var member = ReflectionServices.GetMethod <FakePart>(x => x.DoWork()); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var results = this.Service.GetExportContractName(convention, member); var expectedContractName = AttributedModelServices.GetTypeIdentity(member); results.ShouldEqual(expectedContractName); }
public void GetExportContractName_should_return_contract_name_of_property_type_when_called_with_property_and_contract_name_and_type_are_null() { var member = ReflectionServices.GetProperty<FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var results = this.Service.GetExportContractName(convention, member); var expectedContractName = AttributedModelServices.GetContractName(member.PropertyType); results.ShouldEqual(expectedContractName); }
public void Equals_should_return_false_when_required_metadata_is_not_same_on_the_instance_that_is_being_compared_against() { var instance = new ExportConvention { Metadata = new List<MetadataItem> { new MetadataItem("Name", "Foo") } }; var results = instance.Equals(new ExportConvention { Metadata = new List<MetadataItem> { new MetadataItem("Name", "Bar") } }); results.ShouldBeFalse(); }
public void Equals_should_return_false_when_required_metadata_is_not_same_on_the_instance_that_is_being_compared_against() { var instance = new ExportConvention { Metadata = new List <MetadataItem> { new MetadataItem("Name", "Foo") } }; var results = instance.Equals(new ExportConvention { Metadata = new List <MetadataItem> { new MetadataItem("Name", "Bar") } }); results.ShouldBeFalse(); }
public void GetExportTypeIdentity_should_return_type_identify_of_method_when_called_with_method_member_and_convention_contract_type_is_null() { var convention = new ExportConvention { ContractName = null, ContractType = null }; var member = ReflectionServices.GetMethod <FakePart>(x => x.DoWork()); var service = GetServiceWithoutDefaultConventions(); var result = service.GetExportTypeIdentity(convention, member); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(member); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportContractName_should_return_contract_name_of_property_type_when_called_with_property_and_contract_name_and_type_are_null() { var member = ReflectionServices.GetProperty <FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var service = GetServiceWithoutDefaultConventions(); var results = service.GetExportContractName(convention, member); var expectedContractName = AttributedModelServices.GetContractName(member.PropertyType); results.ShouldEqual(expectedContractName); }
public void GetExportContractName_should_return_type_identity_of_method_type_when_called_with_method_and_contract_name_and_type_are_null() { var member = ReflectionServices.GetMethod<FakePart>(x => x.DoWork()); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var service = GetServiceWithoutDefaultConventions(); var results = service.GetExportContractName(convention, member); var expectedContractName = AttributedModelServices.GetTypeIdentity(member); results.ShouldEqual(expectedContractName); }
public void ConventionCatalog_should_export_conventionpart() { // Setup conventions using the semantic model // This is NOT the API that the user will be exposed to, // there will be a DSL at the front var exportConvention = new ExportConvention { Members = t => new[] { t }, ContractType = x => typeof(IConventionPart), }; var importConvention = new ImportConvention { Members = t => new[] { ReflectionServices.GetProperty <IConventionPart>(p => p.Logger) }, ContractType = x => typeof(ILogger) }; var convention = new PartConvention(); convention.Imports.Add(importConvention); convention.Exports.Add(exportConvention); convention.Condition = t => t.GetInterfaces().Contains(typeof(IConventionPart)); var exportConvention2 = new ExportConvention { Members = t => new[] { typeof(NullLogger) }, ContractType = x => typeof(ILogger), }; var convention2 = new PartConvention(); convention2.Exports.Add(exportConvention2); convention2.Condition = t => t.GetInterfaces().Contains(typeof(ILogger)); var model = new FakePartRegistry2(convention, convention2); // Setup container ConventionCatalog conventionCatalog = new ConventionCatalog(model); var typeCatalog = new TypeCatalog(typeof(AttributedPart)); var aggregated = new AggregateCatalog(typeCatalog, conventionCatalog); var container = new CompositionContainer(aggregated); var part = new AttributedPart(); var batch = new CompositionBatch(); batch.AddPart(part); container.Compose(batch); // Assert part.Part.Count().ShouldEqual(2); part.Part[0].Logger.ShouldNotBeNull(); part.Part[1].Logger.ShouldNotBeNull(); }
public void GetExportTypeIdentity_should_return_type_identify_of_property_type_when_called_with_property_member_and_convention_contract_type_is_null() { var convention = new ExportConvention { ContractName = null, ContractType = null }; var member = ReflectionServices.GetProperty<FakePart>(x => x.Name); var result = this.Service.GetExportTypeIdentity(convention, member); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(member.PropertyType); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportTypeIdentity_should_return_tyoe_identity_of_default_contract_type_of_last_default_convention_when_match_is_available() { var service = GetServiceWithDefaultConventions(); service.DefaultConventions.Add( new TypeDefaultConvention { ContractName = string.Empty, ContractType = typeof(decimal), TargetType = typeof(string) }); var member = ReflectionServices.GetProperty<FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = service.GetExportTypeIdentity(convention, member); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(decimal)); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportTypeIdentity_should_return_type_identity_from_convention_when_not_null() { var convention = new ExportConvention { ContractName = x => string.Empty, ContractType = x => typeof(string) }; var service = GetServiceWithoutDefaultConventions(); var result = service.GetExportTypeIdentity(convention, ReflectionServices.GetField<FakePart>(x => x.Count)); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(string)); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportTypeIdentity_should_return_type_identify_of_method_when_called_with_method_member_and_convention_contract_type_is_null() { var convention = new ExportConvention { ContractName = null, ContractType = null }; var member = ReflectionServices.GetMethod<FakePart>(x => x.DoWork()); var service = GetServiceWithoutDefaultConventions(); var result = service.GetExportTypeIdentity(convention, member); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(member); result.ShouldEqual(expectedTypeIdentity); }
public void GetExportTypeIdentity_should_return_type_identity_of_default_contract_type_when_match_is_available() { var member = ReflectionServices.GetProperty<FakePart>(x => x.Name); var convention = new ExportConvention { ContractName = null, ContractType = null, Members = x => new[] { member } }; var result = GetServiceWithDefaultConventions().GetExportTypeIdentity(convention, member); var expectedTypeIdentity = AttributedModelServices.GetTypeIdentity(typeof(int)); result.ShouldEqual(expectedTypeIdentity); }
public void CreateParts_should_properly_extract_closed_generic_type_parameter() { var exportConvention = new ExportConvention { Members = t => new[] { t }, ContractType = x => typeof(ConventionPart2), }; var importConvention = new ImportConvention { Members = t => new[] { ReflectionServices.GetProperty<ConventionPart2>(p => p.Repository) }, ContractType = x => typeof(IRepository<string>) }; var convention = new PartConvention(); convention.Imports.Add(importConvention); convention.Exports.Add(exportConvention); convention.Condition = t => t == typeof(ConventionPart2); var registry = new FakePartRegistry2(convention); ConventionPartCreator creator = new ConventionPartCreator(registry); var partDefinition = creator.CreateParts().First(); partDefinition.ImportDefinitions.Single().ContractName.ShouldEqual("MefContrib.Hosting.Conventions.Tests.IRepository(System.String)"); }