public void Satisfied_NullContract_ThrowsArgumentNullException() { var descriptor = ExportDescriptor.Create(Activator, new Dictionary <string, object>()); var target = new ExportDescriptorPromise(new CompositionContract(typeof(int)), "Origin", true, () => Enumerable.Empty <CompositionDependency>(), dependencies => { return(ExportDescriptor.Create(Activator, new Dictionary <string, object>())); }); AssertExtensions.Throws <ArgumentNullException>("contract", () => CompositionDependency.Satisfied(null, target, false, new object())); }
public void Missing_Invoke_ReturnsExpected() { var contract = new CompositionContract(typeof(int)); CompositionDependency dependency = CompositionDependency.Missing(contract, "Site"); Assert.Same(contract, dependency.Contract); Assert.Equal("Site", dependency.Site); Assert.Null(dependency.Target); Assert.False(dependency.IsPrerequisite); Assert.Equal("Site", dependency.ToString()); }
public void Oversupplied_Invoke_ReturnsExpected(IEnumerable <ExportDescriptorPromise> targets) { var contract = new CompositionContract(typeof(int)); CompositionDependency dependency = CompositionDependency.Oversupplied(contract, targets, "Site"); Assert.Same(contract, dependency.Contract); Assert.Equal("Site", dependency.Site); Assert.Null(dependency.Target); Assert.False(dependency.IsPrerequisite); Assert.Equal("Site", dependency.ToString()); }
public override IEnumerable <ExportDescriptorPromise> GetExportDescriptors(CompositionContract contract, DependencyAccessor descriptorAccessor) { var target = new ExportDescriptorPromise(new CompositionContract(typeof(int)), "Origin", true, () => { return(new CompositionDependency[] { CompositionDependency.Missing(contract, "site") }); }, dependencies => { return(ExportDescriptor.Create(Activator, new Dictionary <string, object>())); }); return(new ExportDescriptorPromise[] { target }); }
public void ResolveRequiredDependency_PromisesReturnsEmpty_ReturnsMissing() { var accessor = new SubAccessor { Result = new ExportDescriptorPromise[0] }; var contract = new CompositionContract(typeof(int)); CompositionDependency dependency = accessor.ResolveRequiredDependency("Site", contract, true); Assert.Same(contract, accessor.Contract); Assert.Same(contract, dependency.Contract); Assert.Equal("Site", dependency.Site); Assert.False(dependency.IsPrerequisite); Assert.Null(dependency.Target); }
private IEnumerable <CompositionDependency> GetDependencies(ServiceDescriptor service, CompositionContract contract, DependencyAccessor descriptorAccessor) { var constructorWithArgs = service.ImplementationType.GetConstructors().FirstOrDefault(d => d.GetParameters().Length > 0); if (constructorWithArgs == null) { yield break; } Log.Warn($"A constructor with parameters is used. This area is not implemented properly yet."); foreach (var parameter in constructorWithArgs.GetParameters()) { // this code is untested. not sure how to implement it. yield return(CompositionDependency.Missing(contract, parameter.ParameterType)); } }
public void Satisfied_Invoke_ReturnsExpected() { var contract = new CompositionContract(typeof(int)); var descriptor = ExportDescriptor.Create(Activator, new Dictionary <string, object>()); var target = new ExportDescriptorPromise(new CompositionContract(typeof(int)), "Origin", false, () => Enumerable.Empty <CompositionDependency>(), dependencies => { return(ExportDescriptor.Create(Activator, new Dictionary <string, object>())); }); CompositionDependency dependency = CompositionDependency.Satisfied(contract, target, true, "Site"); Assert.Same(contract, dependency.Contract); Assert.Equal("Site", dependency.Site); Assert.Same(target, dependency.Target); Assert.True(dependency.IsPrerequisite); Assert.Equal("'Site' on contract 'Int32' supplied by Origin", dependency.ToString()); }
public void ResolveRequiredDependency_PromisesReturnsOneTarget_ReturnsStatisfied() { var descriptor = ExportDescriptor.Create(Activator, new Dictionary <string, object>()); var target = new ExportDescriptorPromise(new CompositionContract(typeof(int)), "Origin", false, () => Enumerable.Empty <CompositionDependency>(), dependencies => { return(ExportDescriptor.Create(Activator, new Dictionary <string, object>())); }); var accessor = new SubAccessor { Result = new ExportDescriptorPromise[] { target } }; var contract = new CompositionContract(typeof(int)); CompositionDependency dependency = accessor.ResolveRequiredDependency("Site", contract, true); Assert.Same(contract, accessor.Contract); Assert.Same(contract, dependency.Contract); Assert.Equal("Site", dependency.Site); Assert.True(dependency.IsPrerequisite); Assert.Same(target, dependency.Target); }
public void Satisfied_NullTarget_ThrowsArgumentNullException() { var contract = new CompositionContract(typeof(int)); AssertExtensions.Throws <ArgumentNullException>("target", () => CompositionDependency.Satisfied(contract, null, false, new object())); }
public void Missing_NullSite_ThrowsArgumentNullException() { var contract = new CompositionContract(typeof(int)); AssertExtensions.Throws <ArgumentNullException>("site", () => CompositionDependency.Missing(contract, null)); }
public void Missing_NullContract_ThrowsArgumentNullException() { AssertExtensions.Throws <ArgumentNullException>("contract", () => CompositionDependency.Missing(null, new object())); }
public void Oversupplied_NullSite_ThrowsArgumentNullException() { var contract = new CompositionContract(typeof(int)); AssertExtensions.Throws <ArgumentNullException>("site", () => CompositionDependency.Oversupplied(contract, Enumerable.Empty <ExportDescriptorPromise>(), null)); }
public void Oversupplied_NullTargets_ThrowsArgumentNullException() { var contract = new CompositionContract(typeof(int)); AssertExtensions.Throws <ArgumentNullException>("targets", () => CompositionDependency.Oversupplied(contract, null, new object())); }
public void Oversupplied_NullContract_ThrowsArgumentNullException() { AssertExtensions.Throws <ArgumentNullException>("contract", () => CompositionDependency.Oversupplied(null, Enumerable.Empty <ExportDescriptorPromise>(), new object())); }
public bool TryResolveOptionalDependency(object site, CompositionContract contract, bool isPrerequisite, out CompositionDependency dependency);