Пример #1
0
        private static SessionContext GetSessionContext(string currentAssemblyLocation)
        {
            var configReader = new FilesystemConfigReader(new Filesystem(), new ConfigParser());

            ConfigSettings settings = configReader.GetConfig(currentAssemblyLocation);
            if (!settings.AssemblyLocations.Any())
                settings = configReader.GetConfig(Directory.GetCurrentDirectory());

            if (!settings.AssemblyLocations.Any() && !_assemblies.Any())
            {
                var message = "No storevil assemblies were found.\r\nCurrent location:"
                    + currentAssemblyLocation + "\r\nCurrent directory:"
                    + Directory.GetCurrentDirectory();

                _nunitAssertWrapper.Ignore(message);
            }

            var assemblyRegistry = new AssemblyRegistry(_assemblies.Select(x=>x.Location).Union(settings.AssemblyLocations));

            ParameterConverter.AddCustomConverters(assemblyRegistry);

            _sessionContext = new SessionContext(assemblyRegistry);
            _extensionMethodHandler = new ExtensionMethodHandler(assemblyRegistry);

            return _sessionContext;
        }
        public ScenarioInterpreterForType(Type type, 
                                          ExtensionMethodHandler extensionMethodHandler,
                                          InterpreterForTypeFactory factory)
        {
            _type = type;
            _factory = factory;

            DebugTrace.Trace(GetType().Name, "Building interpreter for: " + type);

            const BindingFlags flags = BindingFlags.Instance | BindingFlags.Public;

            foreach (MemberInfo member in GetMembers(flags))
                AddMatchers(member);

            // extension methods
            AddMatchersForExtensionMethods(extensionMethodHandler);
        }
 public InterpreterForTypeFactory(ExtensionMethodHandler extensionMethodHandler)
 {
     _extensionMethodHandler = extensionMethodHandler;
 }
        private void AddMatchersForExtensionMethods(ExtensionMethodHandler extensionMethodHandler)
        {
            foreach (var methodInfo in extensionMethodHandler.GetExtensionMethodsFor(_type))
            {
                DebugTrace.Trace(GetType().Name, "Added extension method matcher: " + methodInfo.Name);

                _memberMatchers.Add(new MethodNameMatcher(methodInfo));
            }
        }