package de.invesdwin.util.math.decimal.internal; import java.util.ArrayList; import java.util.List; import javax.annotation.concurrent.NotThreadSafe; import org.junit.Test; import de.invesdwin.util.assertions.Assertions; import de.invesdwin.util.collections.Lists; import de.invesdwin.util.math.decimal.Decimal; import de.invesdwin.util.math.decimal.IDecimalAggregate; import de.invesdwin.util.math.random.RandomGenerators; @NotThreadSafe public class DecimalAggregateRandomizersTest { private static final int REPEAT_COUNT = 100; @Test public void testRandomizeShuffle() { final List<Decimal> values = new ArrayList<Decimal>(); for (int i = 0; i < 100000; i++) { values.add(new Decimal(i)); } final IDecimalAggregate<Decimal> agg = Decimal.valueOf(values); for (int i = 0; i < REPEAT_COUNT; i++) { final List<? extends Decimal> resampled = Lists .toList(agg.randomizeShuffle(RandomGenerators.newDefaultRandom())); Assertions.assertThat(values).hasSameSizeAs(resampled); } } @Test public void testRandomizeBootstrap() { final List<Decimal> values = new ArrayList<Decimal>(); for (int i = 0; i < 100000; i++) { values.add(new Decimal(i)); } final IDecimalAggregate<Decimal> agg = Decimal.valueOf(values); for (int i = 0; i < REPEAT_COUNT; i++) { final List<? extends Decimal> resampled = Lists .toList(agg.randomizeBootstrap(RandomGenerators.newDefaultRandom())); Assertions.assertThat(values).hasSameSizeAs(resampled); } } @Test public void testRandomizeCircularBlockBootstrap() { final List<Decimal> values = new ArrayList<Decimal>(); for (int i = 0; i < 100000; i++) { values.add(new Decimal(i)); } final IDecimalAggregate<Decimal> agg = Decimal.valueOf(values); for (int i = 0; i < REPEAT_COUNT; i++) { final List<? extends Decimal> resampled = Lists .toList(agg.randomizeCircularBlockBootstrap(RandomGenerators.newDefaultRandom())); Assertions.assertThat(values).hasSameSizeAs(resampled); } } @Test public void testRandomizeStationaryBootstrap() { final List<Decimal> values = new ArrayList<Decimal>(); for (int i = 0; i < 100000; i++) { values.add(new Decimal(i)); } final IDecimalAggregate<Decimal> agg = Decimal.valueOf(values); for (int i = 0; i < REPEAT_COUNT; i++) { final List<? extends Decimal> resampled = Lists .toList(agg.randomizeStationaryBootstrap(RandomGenerators.newDefaultRandom())); Assertions.assertThat(values).hasSameSizeAs(resampled); } } }