private ITestsSplitter GetTestsSplitter()

in GoogleTestAdapter/Core/Runners/ParallelTestRunner.cs [91:122]


        private ITestsSplitter GetTestsSplitter(TestCase[] testCasesToRun)
        {
            IDictionary<TestCase, int> durations = null;
            try
            {
                var serializer = new TestDurationSerializer();
                durations = serializer.ReadTestDurations(testCasesToRun);
                foreach (KeyValuePair<TestCase, int> duration in durations)
                {
                    if (!_schedulingAnalyzer.AddExpectedDuration(duration.Key, duration.Value))
                        _logger.DebugWarning(String.Format(Resources.TestCaseInAnalyzer, duration.Key.FullyQualifiedName));
                }
            }
            catch (InvalidTestDurationsException e)
            {
                _logger.LogWarning(string.Format(Resources.ReadTestDurationError, e.Message));
            }

            ITestsSplitter splitter;
            if (durations == null || durations.Count < testCasesToRun.Length)
            {
                splitter = new NumberBasedTestsSplitter(testCasesToRun, _settings);
                _logger.DebugInfo(Resources.UsingSplitterOnNumber);
            }
            else
            {
                splitter = new DurationBasedTestsSplitter(durations, _settings);
                _logger.DebugInfo(Resources.UsingSplitterOnDuration);
            }

            return splitter;
        }