public void MockConfigureConstructorFunction <TConfiguration>(Func <TConfiguration> constructorFunction, ConfigurationScope scope = ConfigurationScope.Transient) { var configurationType = typeof(TConfiguration); var injection = new InjectionSpecification { ConfigurationType = configurationType, ConstructorFunction = constructorFunction, ConfigurationScope = scope, ConfigurationStyle = ConfigurationStyle.ConstructorFunction }; A.CallTo(() => _mockConfiguration.IsConfigured(configurationType)).Returns(true); A.CallTo(() => _mockConfiguration.GetInjectionSpecification(configurationType)).Returns(injection); }
public void GivenCreate_WhenConfigurationStyleIsNone_ThenCreatesClass() { var configurationType = typeof(IBasicClass); var injection = new InjectionSpecification { ConfigurationType = configurationType, ConfigurationStyle = ConfigurationStyle.None }; A.CallTo(() => _mockConfiguration.IsConfigured(configurationType)).Returns(true); A.CallTo(() => _mockConfiguration.GetInjectionSpecification(configurationType)).Returns(injection); var dependencyInjector = new DependencyInjector(_mockConfiguration); Assert.Throws <ArgumentException>(() => dependencyInjector.Create <IBasicClass>()); }
public void MockConfigureSpecify <TConfiguration, TSpecification>(ConfigurationScope scope = ConfigurationScope.Transient) { var configurationType = typeof(TConfiguration); var specificationType = typeof(TSpecification); var injection = new InjectionSpecification { ConfigurationType = configurationType, SpecificationType = specificationType, Constructor = specificationType.GetConstructors()[0], ConfigurationScope = scope, ConfigurationStyle = ConfigurationStyle.SpecificationType }; A.CallTo(() => _mockConfiguration.IsConfigured(configurationType)).Returns(true); A.CallTo(() => _mockConfiguration.GetInjectionSpecification(configurationType)).Returns(injection); }
private static int Go(string[] args) { if (args.Length < 2) { Console.WriteLine("No files specified"); return(-1); } if (args.Length > 2) { string token = args[2]; _inputTokens = token.Trim('\"').Trim('\'').Split(';'); } else { _inputTokens = new string[0]; } if (_inputTokens.Contains("RENDERASINTERNAL")) { _renderAccessModifier = "internal"; } if (_inputTokens.Contains("NOBENCHMARK")) { _benchmarking = false; } _applicationFolder = new DirectoryInfo(args[0]); string injectionSpec = args[1]; if (!File.Exists(injectionSpec)) { Console.WriteLine("injectionSpec doesnt exist"); return(-1); } if (!injectionSpec.EndsWith(".xml")) { Console.WriteLine("injectionSpec isnt an xml file"); return(-1); } if (args.Length > 3) { _outputFile = args[3]; } else { _outputFile = injectionSpec.Substring(0, injectionSpec.Length - 4) + ".cs"; } _fileList = _applicationFolder.GetFiles("*.c*", SearchOption.AllDirectories) .Select(x => x.FullName) .Where(x => !x.EndsWith(".xaml.cs")) .Where(x => !x.Contains("AcceptanceTestEngine")) .Where(x => !x.Contains("Test")) .Where(x => !x.Contains("\\obj\\")) .Where(x => !x.Contains("\\Bin\\")) .ToArray(); using (var sr = new StreamReader(injectionSpec)) { var xml = new XmlSerializer(typeof(InjectionSpecification)); _injectionSpecification = (InjectionSpecification)xml.Deserialize(sr); } var stringBuilder = new StringBuilder(); using (var rw = new StringWriter(stringBuilder)) { rw.WriteLine("namespace {0} {{", _injectionSpecification.Namespace.Trim()); _injectionList = _injectionSpecification.Injections; var viewModels = new List <InjectionSpecificationInjection>(); foreach (InjectionSpecificationInjection injection in _injectionList) { string condition = injection.Condition; if (!String.IsNullOrEmpty(condition)) { bool invertCondition = false; if (condition.StartsWith("!")) { invertCondition = true; condition = condition.Substring(1, condition.Length - 1); } bool contains = _inputTokens.Contains(condition); if (contains == invertCondition) { Console.WriteLine( "Ignoring injection '{0}' because of condition '{1}' (Inverted:{2})", injection.ConcreteClassName, condition, invertCondition); continue; } } DateTime start = DateTime.Now; Render(rw, injection); Console.WriteLine("Rendering {0} took {1}", injection.ConcreteClassName, (DateTime.Now - start).TotalSeconds); if (injection.IsViewModel) { viewModels.Add(injection); } } // It's actually a performace hit due to forcing more assembly loading earlier on // Don't use it... if (!_inputTokens.Contains("NOVIEWMODELLOCATOR")) { RenderViewModelLocator(rw, viewModels); } RenderKernelCleardown(rw); rw.WriteLine("}"); } using (var rw = new StreamWriter(_outputFile)) { RenderAutogeneratedHeader(rw); RenderNamespaces(rw); rw.Write(stringBuilder.ToString()); } return(0); }
private static int Go(string[] args) { if (args.Length < 2) { Console.WriteLine("No files specified"); return -1; } if (args.Length > 2) { string token = args[2]; _inputTokens = token.Trim('\"').Trim('\'').Split(';'); } else { _inputTokens = new string[0]; } if (_inputTokens.Contains("RENDERASINTERNAL")) { _renderAccessModifier = "internal"; } _applicationFolder = new DirectoryInfo(args[0]); string injectionSpec = args[1]; if (!File.Exists(injectionSpec)) { Console.WriteLine("injectionSpec doesnt exist"); return -1; } if (!injectionSpec.EndsWith(".xml")) { Console.WriteLine("injectionSpec isnt an xml file"); return -1; } if (args.Length > 3) { _outputFile = args[3]; } else { _outputFile = injectionSpec.Substring(0, injectionSpec.Length - 4) + ".cs"; } _fileList = _applicationFolder.GetFiles("*.c*", SearchOption.AllDirectories) .Select(x => x.FullName) .Where(x => !x.EndsWith(".xaml.cs")) .Where(x => !x.Contains("AcceptanceTestEngine")) .Where(x => !x.Contains("Test")) .Where(x => !x.Contains("\\obj\\")) .Where(x => !x.Contains("\\Bin\\")) .ToArray(); using (var sr = new StreamReader(injectionSpec)) { var xml = new XmlSerializer(typeof(InjectionSpecification)); _injectionSpecification = (InjectionSpecification) xml.Deserialize(sr); } var stringBuilder = new StringBuilder(); using (var rw = new StringWriter(stringBuilder)) { rw.WriteLine("namespace {0} {{", _injectionSpecification.Namespace.Trim()); _injectionList = _injectionSpecification.Injections; var viewModels = new List<InjectionSpecificationInjection>(); foreach (InjectionSpecificationInjection injection in _injectionList) { string condition = injection.Condition; if (!String.IsNullOrEmpty(condition)) { bool invertCondition = false; if (condition.StartsWith("!")) { invertCondition = true; condition = condition.Substring(1, condition.Length - 1); } bool contains = _inputTokens.Contains(condition); if (contains == invertCondition) { Console.WriteLine( "Ignoring injection '{0}' because of condition '{1}' (Inverted:{2})", injection.ConcreteClassName, condition, invertCondition); continue; } } DateTime start = DateTime.Now; Render(rw, injection); Console.WriteLine("Rendering {0} took {1}", injection.ConcreteClassName, (DateTime.Now - start).TotalSeconds); if (injection.IsViewModel) { viewModels.Add(injection); } } // It's actually a performace hit due to forcing more assembly loading earlier on // Don't use it... if (!_inputTokens.Contains("NOVIEWMODELLOCATOR")) { RenderViewModelLocator(rw, viewModels); } RenderKernelCleardown(rw); rw.WriteLine("}"); } using (var rw = new StreamWriter(_outputFile)) { RenderAutogeneratedHeader(rw); RenderNamespaces(rw); rw.Write(stringBuilder.ToString()); } return 0; }