public void MemberExports() { var exporter = PartFactory.CreateAttributed(new ObjectWithMemberExports()); var container = ContainerFactory.Create(); CompositionBatch batch = new CompositionBatch(); batch.AddPart(exporter); container.Compose(batch); var filedExports = container.GetExports <int>("field"); ExportsAssert.AreEqual(filedExports, 1, 5); var readonlyExports = container.GetExports <int>("readonly"); ExportsAssert.AreEqual(readonlyExports, 2, 6); var propertyExports = container.GetExports <int>("property"); ExportsAssert.AreEqual(propertyExports, 3, 7); var methodExports = container.GetExportedValues <Func <int, int> >("func").Select(f => f(0)); EnumerableAssert.AreEqual(methodExports, 4, 8); }
public void ImportTest() { var exporter = new TestExportBinder(); var importer = new TestImportBinder(); CompositionContainer container = ContainerFactory.Create(); CompositionBatch batch = new CompositionBatch(); batch.AddPart(importer); batch.AddPart(exporter); container.Compose(batch); ExportsAssert.AreEqual(importer.SetImports["single"], 42); ExportsAssert.AreEqual(importer.SetImports["multi"], 1, 2, 3); }
public void VerifyImport(params int[] expectedValues) { object[] untypedExpectedValues = expectedValues.Cast <object>().ToArray(); ExportsAssert.AreEqual(CollectionPlain, untypedExpectedValues); ExportsAssert.AreEqual(CollectionPlainRawMetadata, untypedExpectedValues); EnumerableAssert.IsTrueForAll(CollectionPlainRawMetadata, i => true.Equals(i.Metadata["PropertyName"])); EnumerableAssert.IsEmpty(CollectionPlainEmpty); EnumerableAssert.IsEmpty(CollectionPlainEmptyRawMetadata); // Add a new Export to this collection to ensure that it doesn't // modifiy the other collections because they should each have there // own collection instance CollectionPlain.Add(ExportFactory.Create <object>("Value")); ExportsAssert.AreEqual(CollectionTyped, expectedValues); ExportsAssert.AreEqual(CollectionTypedRawMetadata, expectedValues); EnumerableAssert.IsTrueForAll(CollectionTypedRawMetadata, i => true.Equals(i.Metadata["PropertyName"])); EnumerableAssert.IsEmpty(CollectionTypedEmpty); ExportsAssert.AreEqual(CollectionTypedMetadata, expectedValues); #if !SILVERLIGHT // Silverlight doesn't support strongly typed metadata EnumerableAssert.IsTrueForAll(CollectionTypedMetadata, i => true == i.Metadata.PropertyName); #endif //!SILVERLIGHT EnumerableAssert.IsEmpty(CollectionTypedMetadataEmpty); EnumerableAssert.AreEqual(ReadWriteEnumerable, expectedValues); EnumerableAssert.IsEmpty(ReadWriteEnumerableEmpty); ExportsAssert.AreEqual(MetadataUntypedEnumerable, untypedExpectedValues); ExportsAssert.AreEqual(MetadataUntypedEnumerableRawMetadata, untypedExpectedValues); EnumerableAssert.IsTrueForAll(MetadataUntypedEnumerableRawMetadata, i => true.Equals(i.Metadata["PropertyName"])); EnumerableAssert.IsEmpty(MetadataUntypedEnumerableEmpty); EnumerableAssert.IsEmpty(MetadataUntypedEnumerableEmptyRawMetadata); ExportsAssert.AreEqual(MetadataTypedEnumerable, expectedValues); ExportsAssert.AreEqual(MetadataTypedEnumerableRawMetadata, expectedValues); EnumerableAssert.IsTrueForAll(MetadataTypedEnumerableRawMetadata, i => true.Equals(i.Metadata["PropertyName"])); EnumerableAssert.IsEmpty(MetadataTypedEnumerableEmpty); ExportsAssert.AreEqual(MetadataFullyTypedEnumerable, expectedValues); #if !SILVERLIGHT // Silverlight doesn't support strongly typed metadata EnumerableAssert.IsTrueForAll(MetadataFullyTypedEnumerable, i => true == i.Metadata.PropertyName); #endif //!SILVERLIGHT EnumerableAssert.IsEmpty(MetadataFullyTypedEnumerableEmpty); }