public void CreatePartDefinition_Disposable() { Type expectedType = typeof(TestPart); Lazy<Type> expectedLazyType = expectedType.AsLazy(); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; IEnumerable<ImportDefinition> expectedImports = CreateImports(expectedType); IEnumerable<ExportDefinition> expectedExports = CreateExports(expectedType); ICompositionElement expectedOrigin = new MockOrigin(); ComposablePartDefinition partDefinition = ReflectionModelServices.CreatePartDefinition(expectedLazyType, true, new Lazy<IEnumerable<ImportDefinition>>(() => expectedImports), new Lazy<IEnumerable<ExportDefinition>>(() => expectedExports), expectedMetadata.AsLazy(), expectedOrigin); Assert.IsNotNull(partDefinition); ReflectionComposablePartDefinition definition = partDefinition as ReflectionComposablePartDefinition; Assert.IsNotNull(definition); Assert.AreSame(expectedType, definition.GetPartType()); Assert.IsTrue(definition.Metadata.Keys.SequenceEqual(expectedMetadata.Keys)); Assert.IsTrue(definition.Metadata.Values.SequenceEqual(expectedMetadata.Values)); Assert.IsTrue(definition.ExportDefinitions.SequenceEqual(expectedExports.Cast<ExportDefinition>())); Assert.IsTrue(definition.ImportDefinitions.SequenceEqual(expectedImports.Cast<ImportDefinition>())); Assert.AreSame(expectedOrigin, ((ICompositionElement)definition).Origin); Assert.IsNotNull(((ICompositionElement)definition).DisplayName); Assert.IsTrue(definition.IsDisposalRequired); }
public void GetExportingMember() { PropertyInfo property = typeof(TestPart).GetProperties().First(); LazyMemberInfo expectedLazyMember = new LazyMemberInfo(property); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; string expectedContractName = "Foo"; ICompositionElement expectedOrigin = new MockOrigin(); ExportDefinition exportDefinition = ReflectionModelServices.CreateExportDefinition(expectedLazyMember, expectedContractName, expectedMetadata.AsLazy(), expectedOrigin); Assert.IsNotNull(exportDefinition); LazyMemberInfo lazyMember = ReflectionModelServices.GetExportingMember(exportDefinition); Assert.AreEqual(expectedLazyMember, lazyMember); }
public void CreateExportDefinition_NullAsContractName_ThrowsNullArgument() { PropertyInfo property = typeof(TestPart).GetProperties().First(); LazyMemberInfo expectedLazyMember = new LazyMemberInfo(property); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; ICompositionElement expectedOrigin = new MockOrigin(); ExceptionAssert.ThrowsArgument<ArgumentNullException>("contractName", () => { ReflectionModelServices.CreateExportDefinition(expectedLazyMember, null, expectedMetadata.AsLazy(), expectedOrigin); }); }
public void CreateExportDefinition_InvalidLazymemberInfo_ShouldThrowArtument() { EventInfo _event = typeof(TestPart).GetEvents().First(); LazyMemberInfo expectedLazyMember = new LazyMemberInfo(_event); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; string expectedContractName = "Foo"; ICompositionElement expectedOrigin = new MockOrigin(); ExceptionAssert.ThrowsArgument<ArgumentException>("exportingMember", () => { ReflectionModelServices.CreateExportDefinition(expectedLazyMember, expectedContractName, expectedMetadata.AsLazy(), expectedOrigin); }); }
public void IsDisposalRequired_ForDisposable() { Type expectedType = typeof(TestPart); Lazy<Type> expectedLazyType = expectedType.AsLazy(); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; IEnumerable<ImportDefinition> expectedImports = CreateImports(expectedType); IEnumerable<ExportDefinition> expectedExports = CreateExports(expectedType); ICompositionElement expectedOrigin = new MockOrigin(); ComposablePartDefinition partDefinition = ReflectionModelServices.CreatePartDefinition(expectedLazyType, true, new Lazy<IEnumerable<ImportDefinition>>(() => expectedImports), new Lazy<IEnumerable<ExportDefinition>>(() => expectedExports), expectedMetadata.AsLazy(), expectedOrigin); Assert.IsNotNull(partDefinition); bool isDisposalRequired = ReflectionModelServices.IsDisposalRequired(partDefinition); Assert.IsTrue(isDisposalRequired); }
public void CreateExportDefinition() { PropertyInfo property = typeof(TestPart).GetProperties().First(); LazyMemberInfo expectedLazyMember = new LazyMemberInfo(property); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; string expectedContractName = "Foo"; ICompositionElement expectedOrigin = new MockOrigin(); ExportDefinition exportDefinition = ReflectionModelServices.CreateExportDefinition(expectedLazyMember, expectedContractName, expectedMetadata.AsLazy(), expectedOrigin); Assert.IsNotNull(exportDefinition); ReflectionMemberExportDefinition definition = exportDefinition as ReflectionMemberExportDefinition; Assert.IsNotNull(definition); Assert.AreEqual(expectedContractName, definition.ContractName); Assert.IsTrue(definition.Metadata.Keys.SequenceEqual(expectedMetadata.Keys)); Assert.IsTrue(definition.Metadata.Values.SequenceEqual(expectedMetadata.Values)); Assert.AreEqual(expectedOrigin, ((ICompositionElement)definition).Origin); Assert.AreEqual(expectedLazyMember, definition.ExportingLazyMember); }
public void GetPartType() { Type expectedType = typeof(TestPart); Lazy<Type> expectedLazyType = expectedType.AsLazy(); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; IEnumerable<ImportDefinition> expectedImports = CreateImports(expectedType); IEnumerable<ExportDefinition> expectedExports = CreateExports(expectedType); ICompositionElement expectedOrigin = new MockOrigin(); ComposablePartDefinition partDefinition = ReflectionModelServices.CreatePartDefinition(expectedLazyType, false, new Lazy<IEnumerable<ImportDefinition>>(() => expectedImports), new Lazy<IEnumerable<ExportDefinition>>(() => expectedExports), expectedMetadata.AsLazy(), expectedOrigin); Assert.IsNotNull(partDefinition); Lazy<Type> lazyPartType = ReflectionModelServices.GetPartType(partDefinition); Assert.AreEqual(expectedLazyType, lazyPartType); }
public void CreatePartDefinition_NullEvaluatedTypeNotAllowed() { Type expectedType = typeof(TestPart); Lazy<Type> expectedLazyType = expectedType.AsLazy(); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; IEnumerable<ImportDefinition> expectedImports = CreateImports(expectedType); IEnumerable<ExportDefinition> expectedExports = CreateExports(expectedType); ICompositionElement expectedOrigin = new MockOrigin(); ComposablePartDefinition partDefinition = ReflectionModelServices.CreatePartDefinition(new Lazy<Type>(() => null), false, new Lazy<IEnumerable<ImportDefinition>>(() => expectedImports), new Lazy<IEnumerable<ExportDefinition>>(() => expectedExports), expectedMetadata.AsLazy(), expectedOrigin); ReflectionComposablePartDefinition definition = partDefinition as ReflectionComposablePartDefinition; Assert.IsNotNull(definition); ExceptionAssert.Throws<InvalidOperationException>(() => { definition.GetPartType(); }); }
public void CreatePartDefinition_NullTypeNotAllowed() { Type expectedType = typeof(TestPart); Lazy<Type> expectedLazyType = expectedType.AsLazy(); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); expectedMetadata["Key1"] = 1; expectedMetadata["Key2"] = "Value2"; IEnumerable<ImportDefinition> expectedImports = CreateImports(expectedType); IEnumerable<ExportDefinition> expectedExports = CreateExports(expectedType); ICompositionElement expectedOrigin = new MockOrigin(); ExceptionAssert.ThrowsArgument<ArgumentNullException>("partType", () => { ComposablePartDefinition partDefinition = ReflectionModelServices.CreatePartDefinition(null, false, new Lazy<IEnumerable<ImportDefinition>>(() => expectedImports), new Lazy<IEnumerable<ExportDefinition>>(() => expectedExports), expectedMetadata.AsLazy(), expectedOrigin); }); }
public void CreatePartDefinition_ImportsMustBeOfRightType() { Type expectedType = typeof(TestPart); Lazy<Type> expectedLazyType = expectedType.AsLazy(); IEnumerable<ImportDefinition> expectedImports = CreateImports(expectedType); IEnumerable<ExportDefinition> expectedExports = CreateExports(expectedType); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); ICompositionElement expectedOrigin = new MockOrigin(); ComposablePartDefinition partDefinition = ReflectionModelServices.CreatePartDefinition(expectedLazyType, false, new Lazy<IEnumerable<ImportDefinition>>(() => CreateInvalidImports()), new Lazy<IEnumerable<ExportDefinition>>(() => expectedExports), expectedMetadata.AsLazy(), expectedOrigin); Assert.IsNotNull(partDefinition); ReflectionComposablePartDefinition definition = partDefinition as ReflectionComposablePartDefinition; Assert.IsNotNull(definition); ExceptionAssert.Throws<InvalidOperationException>(() => { definition.ImportDefinitions.Count(); }); }
public void CreatePartDefinition_EvaluatedNullImportsAllowed() { Type expectedType = typeof(TestPart); Lazy<Type> expectedLazyType = expectedType.AsLazy(); IEnumerable<ImportDefinition> expectedImports = CreateImports(expectedType); IEnumerable<ExportDefinition> expectedExports = CreateExports(expectedType); IDictionary<string, object> expectedMetadata = new Dictionary<string, object>(); ICompositionElement expectedOrigin = new MockOrigin(); ComposablePartDefinition partDefinition = ReflectionModelServices.CreatePartDefinition(expectedLazyType, false, new Lazy<IEnumerable<ImportDefinition>>(() => null), new Lazy<IEnumerable<ExportDefinition>>(() => expectedExports), expectedMetadata.AsLazy(), expectedOrigin); Assert.IsNotNull(partDefinition); ReflectionComposablePartDefinition definition = partDefinition as ReflectionComposablePartDefinition; Assert.IsNotNull(definition); Assert.IsNotNull(definition.ImportDefinitions); Assert.AreEqual(0, definition.ImportDefinitions.Count()); }