package de.is24.util.monitoring;
import java.util.Arrays;
import junit.framework.TestCase;
public class MathTest extends TestCase {
private static final int[] measurements1 = { 1 };
private static final int[] measurements2 = { 1, 2, 3 };
private static final int[] measurements3 = { 5, 5, 5, 5, 5, 5 };
private static final int[] measurements4 = { 1, 3, 5 };
private static final int[] measurements5 = {};
public void testAll() {
runTest(measurements1, 1, 0);
runTest(measurements2, 2, 1);
runTest(measurements3, 5, 0);
runTest(measurements4, 3, 2);
runTest(measurements5, 0, 0); // test zero-safeness
}
private void runTest(int[] measurements, double expectedAverage, double expectedStdDeviance) {
long sum = 0, sumOfSquares = 0, n;
n = measurements.length;
for (int i : measurements) {
sum += i;
sumOfSquares += i * i;
}
System.out.println("Testing measurements : " + Arrays.toString(measurements));
System.out.println("Measurements number : " + n);
System.out.println("Sum : " + sum);
System.out.println("Sum of squares : " + sumOfSquares);
final double avg = Math.average(n, sum);
System.out.println("Calculated average : " + avg);
final double dev = Math.stdDeviation(n, sum, sumOfSquares);
System.out.println("Calculated standard deviance: " + dev);
assertEquals("Average", expectedAverage, avg);
assertEquals("Standard deviance", expectedStdDeviance, dev);
}
}