@Test
  public void testShuffledStatistics() {
    // the purpose of this test is only to check the get/set methods
    // we are aware shuffling statistics like this is really not
    // something sensible to do in production ...
    DescriptiveStatistics reference = createDescriptiveStatistics();
    DescriptiveStatistics shuffled = createDescriptiveStatistics();

    UnivariateStatistic tmp = shuffled.getGeometricMeanImpl();
    shuffled.setGeometricMeanImpl(shuffled.getMeanImpl());
    shuffled.setMeanImpl(shuffled.getKurtosisImpl());
    shuffled.setKurtosisImpl(shuffled.getSkewnessImpl());
    shuffled.setSkewnessImpl(shuffled.getVarianceImpl());
    shuffled.setVarianceImpl(shuffled.getMaxImpl());
    shuffled.setMaxImpl(shuffled.getMinImpl());
    shuffled.setMinImpl(shuffled.getSumImpl());
    shuffled.setSumImpl(shuffled.getSumsqImpl());
    shuffled.setSumsqImpl(tmp);

    for (int i = 100; i > 0; --i) {
      reference.addValue(i);
      shuffled.addValue(i);
    }

    Assert.assertEquals(reference.getMean(), shuffled.getGeometricMean(), 1.0e-10);
    Assert.assertEquals(reference.getKurtosis(), shuffled.getMean(), 1.0e-10);
    Assert.assertEquals(reference.getSkewness(), shuffled.getKurtosis(), 1.0e-10);
    Assert.assertEquals(reference.getVariance(), shuffled.getSkewness(), 1.0e-10);
    Assert.assertEquals(reference.getMax(), shuffled.getVariance(), 1.0e-10);
    Assert.assertEquals(reference.getMin(), shuffled.getMax(), 1.0e-10);
    Assert.assertEquals(reference.getSum(), shuffled.getMin(), 1.0e-10);
    Assert.assertEquals(reference.getSumsq(), shuffled.getSum(), 1.0e-10);
    Assert.assertEquals(reference.getGeometricMean(), shuffled.getSumsq(), 1.0e-10);
  }