public void ConstructorSelectorNull_ShouldThrowArgumentNull() { var builder = new ConventionBuilder(); ExceptionAssert.ThrowsArgumentNull("constructorSelector", () => builder.ForTypesMatching <IFoo>((t) => true).SelectConstructor(null)); ExceptionAssert.ThrowsArgumentNull("importConfiguration", () => builder.ForTypesMatching <IFoo>((t) => true).SelectConstructor(null, null)); }
public void ExportInterfaceSelectorNull_ShouldThrowArgumentNull() { var builder = new ConventionBuilder(); ExceptionAssert.ThrowsArgumentNull("interfaceFilter", () => builder.ForTypesMatching((t) => true).ExportInterfaces(null)); ExceptionAssert.ThrowsArgumentNull("interfaceFilter", () => builder.ForTypesMatching((t) => true).ExportInterfaces(null, null)); }
public void ExportSelectorNull_ShouldThrowArgumentNull() { var builder = new ConventionBuilder(); ExceptionAssert.ThrowsArgumentNull("propertySelector", () => builder.ForTypesMatching <IFoo>((t) => true).ExportProperty(null)); ExceptionAssert.ThrowsArgumentNull("propertySelector", () => builder.ForTypesMatching <IFoo>((t) => true).ExportProperty(null, null)); ExceptionAssert.ThrowsArgumentNull("propertySelector", () => builder.ForTypesMatching <IFoo>((t) => true).ExportProperty <IFirst>(null)); ExceptionAssert.ThrowsArgumentNull("propertySelector", () => builder.ForTypesMatching <IFoo>((t) => true).ExportProperty <IFirst>(null, null)); }
public void ImportSelectorNull_ShouldThrowArgumentNull() { var builder = new ConventionBuilder(); ExceptionAssert.ThrowsArgumentNull("propertyFilter", () => builder.ForTypesMatching((t) => true).ImportProperties(null)); ExceptionAssert.ThrowsArgumentNull("propertyFilter", () => builder.ForTypesMatching((t) => true).ImportProperties(null, null)); ExceptionAssert.ThrowsArgumentNull("propertyFilter", () => builder.ForTypesMatching((t) => true).ImportProperties <IFirst>(null)); ExceptionAssert.ThrowsArgumentNull("propertyFilter", () => builder.ForTypesMatching((t) => true).ImportProperties <IFirst>(null, null)); }
public void ExportBuilderApiTestsNull_ShouldThrowArgumentNull() { var builder = new ConventionBuilder(); ExceptionAssert.ThrowsArgumentNull("contractName", () => builder.ForTypesMatching((t) => true).Export(c => c.AsContractName(null as string))); ExceptionAssert.ThrowsArgument("contractName", () => builder.ForTypesMatching((t) => true).Export(c => c.AsContractName(""))); ExceptionAssert.ThrowsArgumentNull("getContractNameFromPartType", () => builder.ForTypesMatching((t) => true).Export(c => c.AsContractName(null as Func <Type, string>))); ExceptionAssert.ThrowsArgumentNull("type", () => builder.ForTypesMatching((t) => true).Export(c => c.AsContractType(null as Type))); ExceptionAssert.ThrowsArgumentNull("name", () => builder.ForTypesMatching((t) => true).Export(c => c.AddMetadata(null as string, null as object))); ExceptionAssert.ThrowsArgumentNull("name", () => builder.ForTypesMatching((t) => true).Export(c => c.AddMetadata(null as string, null as Func <Type, object>))); ExceptionAssert.ThrowsArgumentNull("getValueFromPartType", () => builder.ForTypesMatching((t) => true).Export(c => c.AddMetadata("name", null as Func <Type, object>))); }
public void StandardExportInterfacesShouldWork() { // Export all interfaces except IDisposable, Export contracts on types without interfaces. except for disposable types var builder = new ConventionBuilder(); builder.ForTypesMatching((t) => true).ExportInterfaces(); builder.ForTypesMatching((t) => t.GetTypeInfo().ImplementedInterfaces.Where((iface) => iface != typeof(System.IDisposable)).Count() == 0).Export(); var container = new ContainerConfiguration() .WithPart <Standard>(builder) .WithPart <Dippy>(builder) .WithPart <Derived>(builder) .WithPart <BareClass>(builder) .CreateContainer(); var importer = new Importer(); container.SatisfyImports(importer); Assert.NotNull(importer.First); Assert.True(importer.First.Count() == 3); Assert.NotNull(importer.Second); Assert.True(importer.Second.Count() == 3); Assert.NotNull(importer.Third); Assert.True(importer.Third.Count() == 3); Assert.NotNull(importer.Fourth); Assert.True(importer.Fourth.Count() == 3); Assert.NotNull(importer.Fifth); Assert.True(importer.Fifth.Count() == 3); Assert.Null(importer.Base); Assert.Null(importer.Derived); Assert.Null(importer.Dippy); Assert.Null(importer.Standard); Assert.Null(importer.Disposable); Assert.NotNull(importer.BareClass); }
public void StandardExportInterfacesInterfaceFilterConfiguredContractShouldWork() { //Same test as above only using default export builder var builder = new ConventionBuilder(); builder.ForTypesMatching((t) => true).ExportInterfaces((iface) => iface != typeof(System.IDisposable), (iface, bldr) => bldr.AsContractType((Type)iface)); builder.ForTypesMatching((t) => t.GetTypeInfo().ImplementedInterfaces.Where((iface) => iface != typeof(System.IDisposable)).Count() == 0).Export(); var container = new ContainerConfiguration() .WithPart <Standard>(builder) .WithPart <Dippy>(builder) .WithPart <Derived>(builder) .WithPart <BareClass>(builder) .CreateContainer(); var importer = new Importer(); container.SatisfyImports(importer); Assert.NotNull(importer.First); Assert.True(importer.First.Count() == 3); Assert.NotNull(importer.Second); Assert.True(importer.Second.Count() == 3); Assert.NotNull(importer.Third); Assert.True(importer.Third.Count() == 3); Assert.NotNull(importer.Fourth); Assert.True(importer.Fourth.Count() == 3); Assert.NotNull(importer.Fifth); Assert.True(importer.Fifth.Count() == 3); Assert.Null(importer.Base); Assert.Null(importer.Derived); Assert.Null(importer.Dippy); Assert.Null(importer.Standard); Assert.Null(importer.Disposable); Assert.NotNull(importer.BareClass); }
public void NotifyImportsSatisfiedPropertiesAndFields_ShouldSucceed() { var builder = new ConventionBuilder(); builder.ForTypesMatching(t => true).NotifyImportsSatisfied(mi => mi.Name == "OnImportsSatisfied5" || mi.Name == "OnImportsSatisfied6"); var container = new ContainerConfiguration() .WithPart <OnImportsSatisfiedTestClassPropertiesAndFields>(builder) .WithPart <ExportValues>(builder) .CreateContainer(); var test = container.GetExport <OnImportsSatisfiedTestClassPropertiesAndFields>(); Assert.NotNull(test.P1); Assert.NotNull(test.P2); Assert.Equal(0, test.OnImportsSatisfiedInvoked); }
public void NotifyImportsSatisfiedTwice_ShouldSucceed() { var builder = new ConventionBuilder(); builder.ForTypesMatching(t => true).NotifyImportsSatisfied(mi => mi.Name == "OnImportsSatisfied1" || mi.Name == "OnImportsSatisfied2"); var container = new ContainerConfiguration() .WithPart <OnImportsSatisfiedMultipleClass>(builder) .WithPart <ExportValues>(builder) .CreateContainer(); var test = container.GetExport <OnImportsSatisfiedMultipleClass>(); Assert.NotNull(test.P1); Assert.NotNull(test.P2); Assert.Equal(6, test.OnImportsSatisfiedInvoked); }
public void NotifyImportsSatisfiedAttributeAppliedToBaseClass_ShouldSucceed() { var builder = new ConventionBuilder(); builder.ForTypesMatching(t => true).NotifyImportsSatisfied(mi => mi.Name == "OnImportsSatisfied"); var container = new ContainerConfiguration() .WithPart <OnImportsSatisfiedDerivedClass>(builder) .WithPart <ExportValues>(builder) .CreateContainer(); var test = container.GetExport <OnImportsSatisfiedDerivedClass>(); Assert.NotNull(test.P1); Assert.NotNull(test.P2); Assert.Equal(1, test.OnImportsSatisfiedInvoked); }
public void InsideTheLambdaCallGetCustomAttributesShouldSucceed() { var builder = new ConventionBuilder(); builder.ForTypesMatching((t) => !t.GetTypeInfo().IsDefined(typeof(MyDoNotIncludeAttribute), false)).Export(); var container = new ContainerConfiguration() .WithPart <MyNotToBeIncludedClass>(builder) .WithPart <MyToBeIncludedClass>(builder) .CreateContainer(); var importer = new ImporterOfMyNotTobeIncludedClass(); container.SatisfyImports(importer); Assert.Null(importer.MyNotToBeIncludedClass); Assert.NotNull(importer.MyToBeIncludedClass); }