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);
        }
Exemplo n.º 2
0
        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));
            }
        }