public void OverridesDoNotApplyOnDifferentNamedTypeRegistered() { // Load the container details from the config file. IUnityContainer container = ConfigurationFixtureBase.GetContainer(@"ConfigFiles\PropertyOverride.config", "PropertyOverrideContainer"); // Resolve using the type mentioned in the config files. var defaultConfigResult = container.Resolve<TestTypeInConfig>("MyTestTypeToOverride"); // The default values in the config files should be present. Assert.AreEqual<int>(101, defaultConfigResult.Value); Assert.AreEqual<int>(-111, defaultConfigResult.X); Assert.AreEqual<string>("DefaultFromConfigFile", defaultConfigResult.Y); // Create the PropertyOverrides object. PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", 9999); overrides.Add("Y", "Overridden"); // Resolve using the wrong type(only construction injection info available, no property injection info) mentioned in the config files. // Override is ignored. var overriddenResult = container.Resolve<TestTypeInConfig>("DefaultConstructor", overrides); // The default values in the config files should be retained. Assert.AreEqual<int>(1001, overriddenResult.Value); Assert.AreEqual<int>(0, overriddenResult.X); Assert.AreEqual<string>(null, overriddenResult.Y); }
private string ComputePropertyValue(ITaskItem element, string metadataName, string propertyValue, bool isRequired = true) { if (PropertyOverrides != null && PropertyOverrides.Any(a => string.Equals(a.ItemSpec, metadataName, StringComparison.OrdinalIgnoreCase))) { return(propertyValue); } var value = element.GetMetadata(metadataName); if (string.IsNullOrEmpty(value)) { if (propertyValue == null && isRequired) { Log.LogError("No metadata '{0}' was present for item '{1}' and no default value was provided.", metadataName, element.ItemSpec); return(null); } else { return(propertyValue); } } else { return(value); } }
public void OverridesDoNotApplyOnDifferentNamedTypeRegistered() { // Load the container details from the config file. IUnityContainer container = ConfigurationFixtureBase.GetContainer(@"ConfigFiles\PropertyOverride.config", "PropertyOverrideContainer"); // Resolve using the type mentioned in the config files. var defaultConfigResult = container.Resolve <TestTypeInConfig>("MyTestTypeToOverride"); // The default values in the config files should be present. Assert.AreEqual <int>(101, defaultConfigResult.Value); Assert.AreEqual <int>(-111, defaultConfigResult.X); Assert.AreEqual <string>("DefaultFromConfigFile", defaultConfigResult.Y); // Create the PropertyOverrides object. PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", 9999); overrides.Add("Y", "Overridden"); // Resolve using the wrong type(only construction injection info available, no property injection info) mentioned in the config files. // Override is ignored. var overriddenResult = container.Resolve <TestTypeInConfig>("DefaultConstructor", overrides); // The default values in the config files should be retained. Assert.AreEqual <int>(1001, overriddenResult.Value); Assert.AreEqual <int>(0, overriddenResult.X); Assert.AreEqual <string>(null, overriddenResult.Y); }
public void CanOverrideMultipleInjectionPropertiesWithOverrideCollection() { TypeToInjectForPropertyOverride1 defaultObject = new TypeToInjectForPropertyOverride1(111); TypeToInjectForPropertyOverride2 overrideObject = new TypeToInjectForPropertyOverride2(222); int defaultValue = 111; int overrideValue = 222; PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", overrideValue); overrides.Add("InjectedObject", overrideObject); IUnityContainer container = new UnityContainer(); container.RegisterType <SubjectType1ToInjectForPropertyOverride>( new InjectionProperty("InjectedObject", defaultObject), new InjectionProperty("X", defaultValue)); var result1 = (SubjectType1ToInjectForPropertyOverride) container.Resolve(typeof(SubjectType1ToInjectForPropertyOverride), overrides); var result2 = container.Resolve <SubjectType1ToInjectForPropertyOverride>(); Assert.IsInstanceOfType(result1.InjectedObject, typeof(TypeToInjectForPropertyOverride2)); Assert.AreEqual <int>(result1.X, overrideValue); Assert.IsInstanceOfType(result2.InjectedObject, typeof(TypeToInjectForPropertyOverride1)); Assert.AreEqual <int>(result2.X, defaultValue); }
private ErrorCode GenerateSolution() { if (SkipGenerateCommand) { return(ErrorCode.Success); } Log.Debug("Config = " + SolutionConfigFile.FullName); Log.Debug("Define Symbols ="); if (defineSymbols.Count > 0) { Log.IndentedCollection(defineSymbols, Log.Debug); } Log.Debug("Variables ="); if (Variables.Count > 0) { Log.IndentedCollection(Variables, kvp => $"{kvp.Key} => {kvp.Value}", Log.Debug); } try { solution = GetGenerator(); solution.GenerateSolution( MasterConfiguration, defineSymbols.ToArray(), PropertyOverrides.ToArray(), string.IsNullOrEmpty(BuildConfiguration) ? null : new[] { BuildConfiguration }); // If MasterConfiguration was null or empty, the generator will select a default. MasterConfiguration = solution.MasterConfiguration; } catch (Exception ex) { Log.Error("{0}", ex.ToString()); return(ErrorCode.GeneratorException); } File.WriteAllText(Path.Combine(solution.Solution.OutputDir, solution.Solution.Name + ".sln.config"), "MasterConfiguration=" + MasterConfiguration); return(ErrorCode.Success); }
public void PropertyOverrideWithDefaultInConfig() { TestTypeInConfig overrideObject = new TestTypeInConfig(666); IUnityContainer container = ConfigurationFixtureBase.GetContainer(@"ConfigFiles\PropertyOverride.config", "PropertyOverrideContainer"); var defaultResult = container.Resolve<TestTypeInConfig>("MyTestTypeToOverride"); PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", 9999); overrides.Add("Y", "Overridden"); var overriddenResult = container.Resolve<TestTypeInConfig>("MyTestTypeToOverride", overrides); Assert.AreEqual<int>(101, defaultResult.Value); Assert.AreEqual<int>(-111, defaultResult.X); Assert.AreEqual<string>("DefaultFromConfigFile", defaultResult.Y); Assert.AreEqual<int>(101, overriddenResult.Value); Assert.AreEqual<int>(9999, overriddenResult.X); Assert.AreEqual<string>("Overridden", overriddenResult.Y); }
public void PropertyOverrideWithCode() { TestTypeInConfig overrideObject = new TestTypeInConfig(); IUnityContainer container = new UnityContainer(); container.RegisterType <TestTypeInConfig>(new InjectionProperty("X", -111), new InjectionProperty("Y", "default"), new InjectionConstructor()); var defaultResult = container.Resolve <TestTypeInConfig>(); PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", 9999); overrides.Add("Y", "Overridden"); var overriddenResult = container.Resolve <TestTypeInConfig>(overrides); Assert.AreEqual <int>(-111, defaultResult.X); Assert.AreEqual <string>("default", defaultResult.Y); Assert.AreEqual <int>(9999, overriddenResult.X); Assert.AreEqual <string>("Overridden", overriddenResult.Y); }
public void PropertyOverrideWithDefaultInConfig() { TestTypeInConfig overrideObject = new TestTypeInConfig(666); IUnityContainer container = ConfigurationFixtureBase.GetContainer(@"ConfigFiles\PropertyOverride.config", "PropertyOverrideContainer"); var defaultResult = container.Resolve <TestTypeInConfig>("MyTestTypeToOverride"); PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", 9999); overrides.Add("Y", "Overridden"); var overriddenResult = container.Resolve <TestTypeInConfig>("MyTestTypeToOverride", overrides); Assert.AreEqual <int>(101, defaultResult.Value); Assert.AreEqual <int>(-111, defaultResult.X); Assert.AreEqual <string>("DefaultFromConfigFile", defaultResult.Y); Assert.AreEqual <int>(101, overriddenResult.Value); Assert.AreEqual <int>(9999, overriddenResult.X); Assert.AreEqual <string>("Overridden", overriddenResult.Y); }
public void CanOverrideMultipleInjectionPropertiesWithOverrideCollection() { TypeToInjectForPropertyOverride1 defaultObject = new TypeToInjectForPropertyOverride1(111); TypeToInjectForPropertyOverride2 overrideObject = new TypeToInjectForPropertyOverride2(222); int defaultValue = 111; int overrideValue = 222; PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", overrideValue); overrides.Add("InjectedObject", overrideObject); IUnityContainer container = new UnityContainer(); container.RegisterType<SubjectType1ToInjectForPropertyOverride>( new InjectionProperty("InjectedObject", defaultObject), new InjectionProperty("X", defaultValue)); var result1 = (SubjectType1ToInjectForPropertyOverride) container.Resolve(typeof(SubjectType1ToInjectForPropertyOverride), overrides); var result2 = container.Resolve<SubjectType1ToInjectForPropertyOverride>(); Assert.IsInstanceOfType(result1.InjectedObject, typeof(TypeToInjectForPropertyOverride2)); Assert.AreEqual<int>(result1.X, overrideValue); Assert.IsInstanceOfType(result2.InjectedObject, typeof(TypeToInjectForPropertyOverride1)); Assert.AreEqual<int>(result2.X, defaultValue); }
public void PropertyOverrideWithCode() { TestTypeInConfig overrideObject = new TestTypeInConfig(); IUnityContainer container = new UnityContainer(); container.RegisterType<TestTypeInConfig>(new InjectionProperty("X", -111), new InjectionProperty("Y", "default"), new InjectionConstructor()); var defaultResult = container.Resolve<TestTypeInConfig>(); PropertyOverrides overrides = new PropertyOverrides(); overrides.Add("X", 9999); overrides.Add("Y", "Overridden"); var overriddenResult = container.Resolve<TestTypeInConfig>(overrides); Assert.AreEqual<int>(-111, defaultResult.X); Assert.AreEqual<string>("default", defaultResult.Y); Assert.AreEqual<int>(9999, overriddenResult.X); Assert.AreEqual<string>("Overridden", overriddenResult.Y); }