public void ImportSingleFromInternal() { var container = ContainerFactory.Create(); var importer = new Int32Importer(); var exporter = new Int32ExporterInternal(42); CompositionBatch batch = new CompositionBatch(); batch.AddPart(importer); batch.AddPart(exporter); container.Compose(batch); Assert.AreEqual(42, importer.Value, "Expecting value to be imported"); }
public void ImportSingleFromInternal() { var container = ContainerFactory.Create(); var importer = new Int32Importer(); var exporter = new Int32ExporterInternal(42); CompositionBatch batch = new CompositionBatch(); batch.AddPart(importer); batch.AddPart(exporter); container.Compose(batch); Assert.Equal(42, importer.Value); }
public void ImportSingle() { var container = ContainerFactory.Create(); var importer = new Int32Importer(); var exporter = new Int32Exporter(42); CompositionBatch batch = new CompositionBatch(); batch.AddPart(importer); batch.AddPart(exporter); container.Compose(batch); Assert.AreEqual(42, importer.Value, "Expecting value to be imported"); }
public void ThreadSafeCompositionContainer() { TypeCatalog catalog = new TypeCatalog(typeof(SimpleExporter)); CompositionContainer container = new CompositionContainer(catalog, true); Int32Importer importer = new Int32Importer(); CompositionBatch batch = new CompositionBatch(); batch.AddParts(importer, new Int32Exporter(42)); container.Compose(batch); Assert.IsNotNull(container.GetExportedValue<SimpleExporter>()); Assert.AreEqual(42, importer.Value, "Expected value imported from export"); container.Dispose(); }
public void ComposeSimpleFail() { var container = CreateCompositionContainer(); Int32Importer importer = new Int32Importer(); CompositionBatch batch = new CompositionBatch(); batch.AddPart(importer); CompositionAssert.ThrowsChangeRejectedError(ErrorId.ImportEngine_PartCannotSetImport, // Cannot set Int32Importer.Value because ErrorId.ImportEngine_ImportCardinalityMismatch, // No exports are present that match contract RetryMode.DoNotRetry, () => { container.Compose(batch); }); }
public void ComposeSimple() { var container = CreateCompositionContainer(); Int32Importer importer = new Int32Importer(); CompositionBatch batch = new CompositionBatch(); batch.AddParts(importer, new Int32Exporter(42)); container.Compose(batch); Assert.AreEqual(42, importer.Value, "Expected value imported from export"); }
public void ComposeReentrantChildContainerDisposed() { var container = CreateCompositionContainer(); Int32Importer outerImporter = new Int32Importer(); Int32Importer innerImporter = new Int32Importer(); Int32Exporter exporter = new Int32Exporter(42); CompositionBatch batch = new CompositionBatch(); batch.AddPart(exporter); container.Compose(batch); CallbackExecuteCodeDuringCompose callback = new CallbackExecuteCodeDuringCompose(() => { using (CompositionContainer innerContainer = new CompositionContainer(container)) { CompositionBatch nestedBatch = new CompositionBatch(); nestedBatch.AddPart(innerImporter); innerContainer.Compose(nestedBatch); } Assert.AreEqual(42, innerImporter.Value, "Expected value imported from export"); }); batch = new CompositionBatch(); batch.AddParts(outerImporter, callback); container.Compose(batch); Assert.AreEqual(42, outerImporter.Value, "Expected value imported from export"); Assert.AreEqual(42, innerImporter.Value, "Expected value imported from export"); }
public void AddPart() { var container = CreateCompositionContainer(); Int32Importer importer = new Int32Importer(); CompositionBatch batch = new CompositionBatch(); batch.AddPart(AttributedModelServices.CreatePart(importer)); batch.AddPart(new Int32Exporter(42)); container.Compose(batch); Assert.AreEqual(42, importer.Value, "Expected value imported from export"); }
public void ComposeDisposableChildContainer() { var outerContainer = CreateCompositionContainer(); Int32Importer outerImporter = new Int32Importer(); CompositionBatch outerBatch = new CompositionBatch(); var key = outerBatch.AddExportedValue("Value", 42); outerBatch.AddPart(outerImporter); outerContainer.Compose(outerBatch); Assert.AreEqual(42, outerImporter.Value, "Expected value imported from export"); Int32Importer innerImporter = new Int32Importer(); var innerContainer = new CompositionContainer(outerContainer); CompositionBatch innerBatch = new CompositionBatch(); innerBatch.AddPart(innerImporter); innerContainer.Compose(innerBatch); Assert.AreEqual(42, innerImporter.Value, "Expected value imported from export"); Assert.AreEqual(42, outerImporter.Value, "Expected value imported from export"); outerBatch = new CompositionBatch(); outerBatch.RemovePart(key); key = outerBatch.AddExportedValue("Value", -5); outerContainer.Compose(outerBatch); Assert.AreEqual(-5, innerImporter.Value, "Expected update value imported from export"); Assert.AreEqual(-5, outerImporter.Value, "Expected updated value imported from export"); innerContainer.Dispose(); outerBatch = new CompositionBatch(); outerBatch.RemovePart(key); key = outerBatch.AddExportedValue("Value", 500); outerContainer.Compose(outerBatch); Assert.AreEqual(500, outerImporter.Value, "Expected updated value imported from export"); Assert.AreEqual(-5, innerImporter.Value, "Expected value not updated"); }
public void TryComposeSimpleFail() { var container = CreateCompositionContainer(); Int32Importer importer = new Int32Importer(); CompositionBatch batch = new CompositionBatch(); batch.AddParts(importer); CompositionAssert.ThrowsChangeRejectedError(ErrorId.ImportEngine_PartCannotSetImport, ErrorId.ImportEngine_ImportCardinalityMismatch, RetryMode.DoNotRetry, () => { container.Compose(batch); }); Assert.AreEqual(0, importer.Value, "Expected default value to remain"); }