internal static MedianTestData CreateMedianTestDate() { var testData = new MedianTestData(); using (StringReader reader = new StringReader(Resources.WeekFiveTestInput)) { testData.Count = Int32.Parse(reader.ReadLine()); testData.InputSequences = new int[testData.Count]; for (int i = 0; i < testData.Count; i++) { testData.InputSequences[i] = Int32.Parse(reader.ReadLine()); } } using (StringReader reader = new StringReader(Resources.WeekFiveTestOutput)) { testData.ExpectedSequence = new ExpectedIterationState[testData.Count]; for (int i = 0; i < testData.Count; i++) { testData.ExpectedSequence[i] = new ExpectedIterationState(); string medianValue = reader.ReadLine(); string heapLowValue = reader.ReadLine(); string heapHighValue = reader.ReadLine(); reader.ReadLine(); testData.ExpectedSequence[i].Median = medianValue .Replace("Medians: ", "") .Split(' ') .Select(v => Int32.Parse(v)) .ToArray(); testData.ExpectedSequence[i].HeapLow = heapLowValue .Replace("H_low: [", "") .Replace("]", "") .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(v => Int32.Parse(v.Trim())) .ToArray(); testData.ExpectedSequence[i].HeapHigh = heapHighValue .Replace("H_high: [", "") .Replace("]", "") .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(v => Int32.Parse(v.Trim())) .ToArray(); } } return(testData); }
public void CalculateMedia_FromTestData_ReturnsRightValue() { MedianTestData testDate = SequenceMediaTestDataBuilder.CreateMedianTestDate(); SequenceMedian sequenceMedian = new SequenceMedian(testDate.Count); for (int i = 0; i < testDate.Count; i++) { sequenceMedian.Insert(testDate.InputSequences[i]); Assert.That( sequenceMedian.GetMedian(), Is.EqualTo(testDate.ExpectedSequence[i].Median)); Assert.That( sequenceMedian.HeapHigh, Is.EqualTo(testDate.ExpectedSequence[i].HeapHigh)); Assert.That( sequenceMedian.HeapLow, Is.EqualTo(testDate.ExpectedSequence[i].HeapLow)); } }