public void testEqualsAndHashCode() { new EqualsTester() .addEqualityGroup( Stats.of(1.0, 1.0, 5.0, 5.0), Stats.of(1.0, 1.0, 5.0, 5.0), Stats.of(ImmutableList.of(1.0, 1.0, 5.0, 5.0)), Stats.of(ImmutableList.of(1.0, 1.0, 5.0, 5.0).iterator()), SerializableTester.reserialize(Stats.of(1.0, 1.0, 5.0, 5.0))) .addEqualityGroup(Stats.of(1.0, 5.0)) .addEqualityGroup(Stats.of(1.0, 5.0, 1.0, 6.0)) .addEqualityGroup(Stats.of(2.0, 6.0, 2.0, 6.0)) .addEqualityGroup( new Stats(5, -5.5, 55.5, -5.55, 5.55), new Stats(5, -5.5, 55.5, -5.55, 5.55)) .addEqualityGroup(new Stats(6, -5.5, 55.5, -5.55, 5.55)) .addEqualityGroup(new Stats(5, -5.6, 55.5, -5.55, 5.55)) .addEqualityGroup(new Stats(5, -5.5, 55.6, -5.55, 5.55)) .addEqualityGroup(new Stats(5, -5.5, 55.5, -5.56, 5.55)) .addEqualityGroup(new Stats(5, -5.5, 55.5, -5.55, 5.56)) .testEquals(); }
emptyAccumulatorByAddAllEmptyStats.addAll(Stats.of()); oneValueAccumulatorByAddAllEmptyStats.addAll(Stats.of()); twoValuesAccumulatorByAddAllStats.addAll(Stats.of(ONE_VALUE)); twoValuesAccumulatorByAddAllStats.addAll(Stats.of(OTHER_ONE_VALUE)); Stats.of(MANY_VALUES.subList(0, MANY_VALUES.size() / 2))); manyValuesAccumulatorByAddAllStats.addAll( Stats.of(MANY_VALUES.subList(MANY_VALUES.size() / 2, MANY_VALUES.size())));
public void testEquivalentStreams() { // For datasets of many double values created from an array, we test many combinations of finite // and non-finite values: for (ManyValues values : ALL_MANY_VALUES) { double[] array = values.asArray(); Stats stats = Stats.of(array); // instance methods on Stats vs on instance methods on DoubleStream assertThat(stats.count()).isEqualTo(stream(array).count()); assertEquivalent(stats.mean(), stream(array).average().getAsDouble()); assertEquivalent(stats.sum(), stream(array).sum()); assertEquivalent(stats.max(), stream(array).max().getAsDouble()); assertEquivalent(stats.min(), stream(array).min().getAsDouble()); // static method on Stats vs on instance method on DoubleStream assertEquivalent(Stats.meanOf(array), stream(array).average().getAsDouble()); // instance methods on Stats vs instance methods on DoubleSummaryStatistics DoubleSummaryStatistics streamStats = stream(array).summaryStatistics(); assertThat(stats.count()).isEqualTo(streamStats.getCount()); assertEquivalent(stats.mean(), streamStats.getAverage()); assertEquivalent(stats.sum(), streamStats.getSum()); assertEquivalent(stats.max(), streamStats.getMax()); assertEquivalent(stats.min(), streamStats.getMin()); } }
assertThat(Stats.of(POSITIVE_INFINITY).max()).isPositiveInfinity(); assertThat(Stats.of(NEGATIVE_INFINITY).max()).isNegativeInfinity(); assertThat(Stats.of(NaN).max()).isNaN(); assertThat(TWO_VALUES_STATS.max()).isWithin(ALLOWED_ERROR).of(TWO_VALUES_MAX); assertThat(MANY_VALUES_STATS_VARARGS.max()).isWithin(ALLOWED_ERROR).of(MANY_VALUES_MAX); double max = Stats.of(values.asIterable().iterator()).max(); if (values.hasAnyNaN()) { assertThat(max).named("max of " + values).isNaN();
assertThat(Stats.of(POSITIVE_INFINITY).populationVariance()).isNaN(); assertThat(Stats.of(NEGATIVE_INFINITY).populationVariance()).isNaN(); assertThat(Stats.of(NaN).populationVariance()).isNaN(); assertThat(TWO_VALUES_STATS.populationVariance()) .isWithin(ALLOWED_ERROR) double populationVariance = Stats.of(values.asIterable()).populationVariance(); if (values.hasAnyNonFinite()) { assertThat(populationVariance).named("population variance of " + values).isNaN();
assertThat(Stats.of(POSITIVE_INFINITY).min()).isPositiveInfinity(); assertThat(Stats.of(NEGATIVE_INFINITY).min()).isNegativeInfinity(); assertThat(Stats.of(NaN).min()).isNaN(); assertThat(TWO_VALUES_STATS.min()).isWithin(ALLOWED_ERROR).of(TWO_VALUES_MIN); assertThat(MANY_VALUES_STATS_VARARGS.min()).isWithin(ALLOWED_ERROR).of(MANY_VALUES_MIN);
assertThat(Stats.of(POSITIVE_INFINITY).mean()).isPositiveInfinity(); assertThat(Stats.of(NEGATIVE_INFINITY).mean()).isNegativeInfinity(); assertThat(Stats.of(NaN).mean()).isNaN(); assertThat(TWO_VALUES_STATS.mean()).isWithin(ALLOWED_ERROR).of(TWO_VALUES_MEAN); double mean = Stats.of(values.asArray()).mean(); if (values.hasAnyNaN()) { assertThat(mean).named("mean of " + values).isNaN();
for (double value : values.asIterable()) { accumulator.add(value); accumulatorByAddAllStats.addAll(Stats.of(value));
accumulator.addAll(values.asArray()); for (double value : values.asIterable()) { accumulatorByAddAllStats.addAll(Stats.of(value));
accumulator.addAll(values.asIterable()); for (double value : values.asIterable()) { accumulatorByAddAllStats.addAll(Stats.of(value));
accumulator.addAll(values.asIterable().iterator()); for (double value : values.asIterable()) { accumulatorByAddAllStats.addAll(Stats.of(value));
public void testEqualsAndHashCode() { new EqualsTester() .addEqualityGroup(Stats.of(1.0, 1.0, 5.0, 5.0), Stats.of(1.0, 1.0, 5.0, 5.0), Stats.of(ImmutableList.of(1.0, 1.0, 5.0, 5.0)), Stats.of(ImmutableList.of(1.0, 1.0, 5.0, 5.0).iterator()), SerializableTester.reserialize(Stats.of(1.0, 1.0, 5.0, 5.0))) .addEqualityGroup(Stats.of(1.0, 5.0)) .addEqualityGroup(Stats.of(1.0, 5.0, 1.0, 6.0)) .addEqualityGroup(Stats.of(2.0, 6.0, 2.0, 6.0)) .addEqualityGroup(new Stats(5, -5.5, 55.5, -5.55, 5.55), new Stats(5, -5.5, 55.5, -5.55, 5.55)) .addEqualityGroup(new Stats(6, -5.5, 55.5, -5.55, 5.55)) .addEqualityGroup(new Stats(5, -5.6, 55.5, -5.55, 5.55)) .addEqualityGroup(new Stats(5, -5.5, 55.6, -5.55, 5.55)) .addEqualityGroup(new Stats(5, -5.5, 55.5, -5.56, 5.55)) .addEqualityGroup(new Stats(5, -5.5, 55.5, -5.55, 5.56)) .testEquals(); }
emptyAccumulatorByAddAllEmptyStats.addAll(Stats.of()); oneValueAccumulatorByAddAllEmptyStats.addAll(Stats.of()); twoValuesAccumulatorByAddAllStats.addAll(Stats.of(ONE_VALUE)); twoValuesAccumulatorByAddAllStats.addAll(Stats.of(OTHER_ONE_VALUE)); Stats.of(MANY_VALUES.subList(0, MANY_VALUES.size() / 2))); manyValuesAccumulatorByAddAllStats.addAll( Stats.of(MANY_VALUES.subList(MANY_VALUES.size() / 2, MANY_VALUES.size())));
public void testEquivalentStreams() { // For datasets of many double values created from an array, we test many combinations of finite // and non-finite values: for (ManyValues values : ALL_MANY_VALUES) { double[] array = values.asArray(); Stats stats = Stats.of(array); // instance methods on Stats vs on instance methods on DoubleStream assertThat(stats.count()).isEqualTo(stream(array).count()); assertEquivalent(stats.mean(), stream(array).average().getAsDouble()); assertEquivalent(stats.sum(), stream(array).sum()); assertEquivalent(stats.max(), stream(array).max().getAsDouble()); assertEquivalent(stats.min(), stream(array).min().getAsDouble()); // static method on Stats vs on instance method on DoubleStream assertEquivalent(Stats.meanOf(array), stream(array).average().getAsDouble()); // instance methods on Stats vs instance methods on DoubleSummaryStatistics DoubleSummaryStatistics streamStats = stream(array).summaryStatistics(); assertThat(stats.count()).isEqualTo(streamStats.getCount()); assertEquivalent(stats.mean(), streamStats.getAverage()); assertEquivalent(stats.sum(), streamStats.getSum()); assertEquivalent(stats.max(), streamStats.getMax()); assertEquivalent(stats.min(), streamStats.getMin()); } }
assertThat(Stats.of(POSITIVE_INFINITY).populationVariance()).isNaN(); assertThat(Stats.of(NEGATIVE_INFINITY).populationVariance()).isNaN(); assertThat(Stats.of(NaN).populationVariance()).isNaN(); assertThat(TWO_VALUES_STATS.populationVariance()) .isWithin(ALLOWED_ERROR) double populationVariance = Stats.of(values.asIterable()).populationVariance(); if (values.hasAnyNonFinite()) { assertThat(populationVariance).named("population variance of " + values).isNaN();
assertThat(Stats.of(POSITIVE_INFINITY).max()).isPositiveInfinity(); assertThat(Stats.of(NEGATIVE_INFINITY).max()).isNegativeInfinity(); assertThat(Stats.of(NaN).max()).isNaN(); assertThat(TWO_VALUES_STATS.max()).isWithin(ALLOWED_ERROR).of(TWO_VALUES_MAX); assertThat(MANY_VALUES_STATS_VARARGS.max()).isWithin(ALLOWED_ERROR).of(MANY_VALUES_MAX); double max = Stats.of(values.asIterable().iterator()).max(); if (values.hasAnyNaN()) { assertThat(max).named("max of " + values).isNaN();
assertThat(Stats.of(POSITIVE_INFINITY).min()).isPositiveInfinity(); assertThat(Stats.of(NEGATIVE_INFINITY).min()).isNegativeInfinity(); assertThat(Stats.of(NaN).min()).isNaN(); assertThat(TWO_VALUES_STATS.min()).isWithin(ALLOWED_ERROR).of(TWO_VALUES_MIN); assertThat(MANY_VALUES_STATS_VARARGS.min()).isWithin(ALLOWED_ERROR).of(MANY_VALUES_MIN);
assertThat(Stats.of(POSITIVE_INFINITY).mean()).isPositiveInfinity(); assertThat(Stats.of(NEGATIVE_INFINITY).mean()).isNegativeInfinity(); assertThat(Stats.of(NaN).mean()).isNaN(); assertThat(TWO_VALUES_STATS.mean()).isWithin(ALLOWED_ERROR).of(TWO_VALUES_MEAN); double mean = Stats.of(values.asArray()).mean(); if (values.hasAnyNaN()) { assertThat(mean).named("mean of " + values).isNaN();
for (double value : values.asIterable()) { accumulator.add(value); accumulatorByAddAllStats.addAll(Stats.of(value));
accumulator.addAll(values.asArray()); for (double value : values.asIterable()) { accumulatorByAddAllStats.addAll(Stats.of(value));