public void Configuration_Ctor_MissingOptionalRequirement_Succeeds() { const int requirementCount = 50; IEnumerable <IConfigurationRequirement> requirements = TestUtil.CreateIConfigurationRequirementCollection(requirementCount, true, areOptional: true); MockRequirementSource configurable = new MockRequirementSource(requirements); Dictionary <IConfigurationRequirement, object> validObjects = requirements .Select(x => new KeyValuePair <IConfigurationRequirement, object>( x, TestUtil.GetDefaultValidObjectForRequirement(x))) .ToDictionary( x => x.Key, x => x.Value); // Remove one of the requirements that we're supplying to the constructor. Because they're all optional, // this shouldn't cause any problems. validObjects.Remove(validObjects.First().Key); Configuration boundConfiguration = new Configuration(configurable, validObjects); Assert.IsNotNull(boundConfiguration); }
public void Configuration_Ctor_DependsOn_PropagatesDependencies() { IConfigurationRequirement parent1 = TestUtil.CreateConfigurationRequirement(baseName: "ParentOne"); IConfigurationRequirement parent2 = TestUtil.CreateConfigurationRequirement(baseName: "ParentTwo"); IConfigurationRequirement child1 = TestUtil.CreateConfigurationRequirement( baseName: "ChildOne", dependsOn: new IConfigurationRequirement[] { parent1 }, validator: (x, y, z) => { CollectionAssert.Contains(z.Keys.ToArray(), parent1); return(null); }); IConfigurationRequirement child2 = TestUtil.CreateConfigurationRequirement( baseName: "ChildTwo", dependsOn: new IConfigurationRequirement[] { child1 }, validator: (x, y, z) => { CollectionAssert.Contains(z.Keys.ToArray(), child1); return(null); }); IConfigurationRequirement child3 = TestUtil.CreateConfigurationRequirement( baseName: "ChildThree", dependsOn: new IConfigurationRequirement[] { parent2, child2 }, validator: (x, y, z) => { CollectionAssert.Contains(z.Keys.ToArray(), parent2); CollectionAssert.Contains(z.Keys.ToArray(), child2); return(null); }); Dictionary <IConfigurationRequirement, object> supplied = new Dictionary <IConfigurationRequirement, object>() { [parent1] = TestUtil.GetDefaultValidObjectForRequirement(parent1), [parent2] = TestUtil.GetDefaultValidObjectForRequirement(parent2), [child1] = TestUtil.GetDefaultValidObjectForRequirement(child1), [child2] = TestUtil.GetDefaultValidObjectForRequirement(child2), [child3] = TestUtil.GetDefaultValidObjectForRequirement(child3) }; MockRequirementSource configurable = new MockRequirementSource( new IConfigurationRequirement[] { parent1, parent2, child1, child2, child3 }); Configuration configuration = new Configuration(configurable, supplied); Assert.IsNotNull(configuration); CollectionAssert.AreEquivalent( supplied.Select(x => new Mapping(x.Key, x.Value)).ToArray(), configuration.ToArray()); }
public void Configuration_Ctor_Configurator_Propagates() { MockRequirementSource source = new MockRequirementSource(Enumerable.Empty <IConfigurationRequirement>()); MockConfigurator configurator = new MockConfigurator(source, (x, y) => null); Configuration configuration = new Configuration( source, new Dictionary <IConfigurationRequirement, object>(), configurator); Assert.AreSame(configurator, configuration.Configurator); }
public void Configuration_Ctor_DependsOnChains_Succeeds() { IConfigurationRequirement parent = TestUtil.CreateConfigurationRequirement(baseName: "Parent"); IConfigurationRequirement child = TestUtil.CreateConfigurationRequirement( baseName: "Child", dependsOn: new IConfigurationRequirement[] { parent }); Dictionary <IConfigurationRequirement, object> supplied = new Dictionary <IConfigurationRequirement, object>() { [parent] = TestUtil.GetDefaultValidObjectForRequirement(parent), [child] = TestUtil.GetDefaultValidObjectForRequirement(child) }; MockRequirementSource configurable = new MockRequirementSource(new IConfigurationRequirement[] { parent, child }); Configuration configuration = new Configuration(configurable, supplied); Assert.IsNotNull(configuration); CollectionAssert.AreEquivalent( supplied.Select(x => new Mapping(x.Key, x.Value)).ToArray(), configuration.ToArray()); }
public void Configuration_Ctor_Succeeds() { const int requirementCount = 50; IEnumerable <IConfigurationRequirement> requirements = TestUtil.CreateIConfigurationRequirementCollection(requirementCount, true); MockRequirementSource configurable = new MockRequirementSource(requirements); Dictionary <IConfigurationRequirement, object> validObjects = requirements .Select(x => new KeyValuePair <IConfigurationRequirement, object>( x, TestUtil.GetDefaultValidObjectForRequirement(x))) .ToDictionary( x => x.Key, x => x.Value); Configuration boundConfiguration = new Configuration(configurable, validObjects); Assert.IsNotNull(boundConfiguration); }