// 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)); }
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); } }