protected internal SimpleTestCaseResolver(IActivityLogger log,
												  TestRunImportSettings settings,
												  IEnumerable<TestRunImportResultInfo> resultInfos,
												  IEnumerable<TestCaseTestPlanDTO> testCaseTestPlans)
			: base(log, settings, resultInfos, testCaseTestPlans)
		{
		}
		protected AbstractTestCaseResolver(IActivityLogger log, TestRunImportSettings settings, IEnumerable<TestRunImportResultInfo> resultInfos,
										   IEnumerable<TestCaseTestPlanDTO> testCaseTestPlans)
		{
			if (log == null)
			{
				throw new ArgumentNullException("log");
			}
			_log = log;
			if (settings == null)
			{
				_log.Error("Ctor member TestRunImportSettings settings is null");
				throw new ArgumentNullException("settings");
			}
			if (testCaseTestPlans == null)
			{
				_log.Error("Ctor member IEnumerable<TestCaseTestPlanDTO> testCaseTestPlans is null");
				throw new ArgumentNullException("testCaseTestPlans");
			}
			TestCaseTestPlans = testCaseTestPlans;
			if (resultInfos == null)
			{
				_log.Error("Ctor member IEnumerable<TestRunImportResultInfo> resultInfos is null");
				throw new ArgumentNullException("resultInfos");
			}
			ResultInfos = resultInfos;
		}
		protected internal RegExpTestCaseResolver(IActivityLogger log,
												  TestRunImportSettings settings,
												  IEnumerable<TestRunImportResultInfo> resultInfos,
												  IEnumerable<TestCaseTestPlanDTO> testCaseTestPlans
			)
			: base(log, settings, resultInfos, testCaseTestPlans)
		{
			if (settings.RegExp != null)
			{
				_rx = new Regex(settings.RegExp, RegexOptions.Compiled | RegexOptions.IgnoreCase);
			}
		}
        public AbstractTestRunImportResultsReader GetResolver(TestRunImportSettings settings, TextReader reader)
        {
            if (settings == null)
            {
                _log.Error("GetResolver member settings is null");
                throw new ArgumentNullException("settings");
            }

            switch (settings.FrameworkType)
            {
                case FrameworkTypes.FrameworkTypes.NUnit:
                    return new NUnitResultsXmlReader(_log, reader);
                case FrameworkTypes.FrameworkTypes.JUnit:
                    return new JUnitResultsXmlReader(_log, reader);
                case FrameworkTypes.FrameworkTypes.Selenium:
                    return new SeleniumResultsHtmlReader(_log, reader);
                default:
                    throw new ApplicationException(string.Format("Failed to get resolver for FrameworkType: {0}", settings.FrameworkType));
            }
        }
		public AbstractTestCaseResolver GetResolver(TestRunImportSettings settings, IEnumerable<TestRunImportResultInfo> resultInfos, IEnumerable<TestCaseTestPlanDTO> testCaseTestPlans)
		{
			return string.IsNullOrEmpty(settings.RegExp)
					? new SimpleTestCaseResolver(_log, settings, resultInfos, testCaseTestPlans)
					: new RegExpTestCaseResolver(_log, settings, resultInfos, testCaseTestPlans);
		}