// The new function is only monotonic for 35.2 < summerLength < 84.8
        private void verifyIsMonotonic(TemperatureEquation temperatureEquation, int summerLength)
        {
            double     lastTemp = -1000;
            double     temp;
            List <int> failures = new List <int>();

            for (int day = 1; day <= 60; day++)
            {
                temp = temperatureEquation.getTodaysTemp(day);
                if (temp < lastTemp)
                {
                    failures.Add(day);
                }
                lastTemp = temp;
            }
            for (int day = 61; day <= 120; day++)
            {
                temp = temperatureEquation.getTodaysTemp(day);
                if (temp > lastTemp)
                {
                    failures.Add(day);
                }
                lastTemp = temp;
            }
            Assert.AreEqual(0, failures.Count, "For summer of length " + summerLength + " there were " + failures.Count + " entries that were not monotonic: " + printList(failures));
        }
Ejemplo n.º 2
0
 public Temperatures(int lowTemp, int highTemp, int summerLength, double variance)
 {
     this.low            = lowTemp;
     this.high           = highTemp;
     this.summerLength   = summerLength;
     this.variance       = variance;
     temperatureEquation = new TemperatureEquation(low, high, summerLength, variance);
 }
 private void printYearOfTemps(TemperatureEquation temperatureEquation)
 {
     for (int day = 1; day <= 120; day++)
     {
         int temp = temperatureEquation.getTodaysTemp(day);
         Console.Write(temp + ", ");
     }
     Console.Write("\n");
 }
        public void TemperatureInGeneralRangeTestCase()
        {
            TemperatureEquation temperatureEquation = new TemperatureEquation(20, 80, 60, 6.0);

            for (int day = 1; day <= 120; day++)
            {
                int temp = temperatureEquation.getTodaysTemp(day);
                assertBetween(day, temp, 20 - 6 / 2, 80 + 6 / 2);
            }
        }
        public void HighVarianceTemperaturesCorrectTestCase()
        {
            TemperatureEquation temperatureEquation = new TemperatureEquation(20, 80, 60, 12.0);

            Console.WriteLine("High Variance");
            printYearOfTemps(temperatureEquation);
            assertBetween(1, temperatureEquation.getTodaysTemp(1), 20 - 12 / 2, 20 + 12 / 2 + 1);
            assertBetween(120, temperatureEquation.getTodaysTemp(120), 20 - 12 / 2, 20 + 12 / 2);
            assertBetween(61, temperatureEquation.getTodaysTemp(60), 80 - 12 / 2, 80 + 12 / 2 + 1);
            assertBetween(91, temperatureEquation.getTodaysTemp(90), 50 - 12 / 2, 50 + 12 / 2 + 1);
            assertBetween(31, temperatureEquation.getTodaysTemp(30), 50 - 12 / 2, 50 + 12 / 2 + 1);
        }
        public void LongSummerTemperaturesCorrectTestCase()
        {
            TemperatureEquation temperatureEquation = new TemperatureEquation(20, 80, 90, 6.0);

            Console.WriteLine("Long Summer");
            printYearOfTemps(temperatureEquation);
            assertBetween(1, temperatureEquation.getTodaysTemp(1), 20 - 6 / 2, 20 + 6 / 2 + 1);
            assertBetween(120, temperatureEquation.getTodaysTemp(120), 20 - 6 / 2, 20 + 6 / 2);
            assertBetween(61, temperatureEquation.getTodaysTemp(61), 80 - 6 / 2, 80 + 6 / 2 + 1);
            assertBetween(91, temperatureEquation.getTodaysTemp(106), 50 - 6 / 2, 50 + 6 / 2 + 1);
            assertBetween(31, temperatureEquation.getTodaysTemp(16), 50 - 6 / 2, 50 + 6 / 2 + 1);
        }
        public void NormalBoundariesTemperaturesCorrectTestCase()
        {
            TemperatureEquation temperatureEquation = new TemperatureEquation(20, 80, 60, 6.0);

            Console.WriteLine("Normal Boundaries");
            printYearOfTemps(temperatureEquation);
            assertBetween(1, temperatureEquation.getTodaysTemp(1), 20 - 6 / 2, 20 + 6 / 2 + 1);
            assertBetween(120, temperatureEquation.getTodaysTemp(120), 20 - 6 / 2, 20 + 6 / 2);
            assertBetween(61, temperatureEquation.getTodaysTemp(61), 80 - 6 / 2, 80 + 6 / 2 + 1);
            assertBetween(91, temperatureEquation.getTodaysTemp(91), 50 - 6 / 2, 50 + 6 / 2 + 1);
            assertBetween(31, temperatureEquation.getTodaysTemp(31), 50 - 6 / 2, 50 + 6 / 2 + 1);
        }
 public void MonotonicTestCase()
 {
     TemperatureEquation[] temperatureEquations = new TemperatureEquation[3];
     temperatureEquations[0] = new TemperatureEquation(20, 80, 40, 0.0);
     temperatureEquations[1] = new TemperatureEquation(20, 80, 60, 0.0);
     temperatureEquations[2] = new TemperatureEquation(20, 80, 80, 0.0);
     Console.WriteLine("Monotonic at various points check:");
     for (int i = 0; i < 3; i++)
     {
         printYearOfTemps(temperatureEquations[i]);
         verifyIsMonotonic(temperatureEquations[i], (i + 1) * 20 + 20);
     }
 }