Example #1
0
        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);
        }
Example #2
0
        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>());
        }
Example #3
0
        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);
        }
Example #4
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";
            }

            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);
        }
Example #5
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;
        }