_buffer = new Buffer(longFilterSize); _proceed = requireNonNull(proceed);
@Test public void stream() { final long seed = 0xdeadbeef; final int capacity = 10; final Random random = new Random(seed); final Buffer buffer = new Buffer(capacity); for (int i = 0; i < buffer.capacity(); ++i) { final double value = random.nextDouble(); buffer.accept(value); } random.setSeed(seed); buffer.stream().forEach(d -> Assert.assertEquals(d, random.nextDouble())); random.setSeed(seed); for (int i = 0; i < 5; ++i) random.nextDouble(); buffer.stream(5).forEach(d -> Assert.assertEquals(d, random.nextDouble())); }
@Test public void bufferLength() { final long seed = 0xdeadbeef; final int capacity = 10; final Random random = new Random(seed); final Buffer buffer = new Buffer(capacity); for (int i = 0; i < buffer.capacity(); ++i) { buffer.accept(random.nextDouble()); Assert.assertEquals(buffer.length(), i + 1); } for (int i = 0; i < buffer.capacity(); ++i) { buffer.accept(random.nextDouble()); Assert.assertEquals(buffer.length(), buffer.capacity()); } }
@Test public void bufferDoubleMoments() { final long seed = 0xdeadbeef; final int capacity = 10; final Random random = new Random(seed); final Buffer buffer = new Buffer(capacity); DoubleMomentStatistics statistics = new DoubleMomentStatistics(); for (int i = 0; i < buffer.capacity(); ++i) { final double value = random.nextDouble()*1000; buffer.accept(value); statistics.accept(value); final DoubleMoments moments = DoubleMoments.of(statistics); Assert.assertEquals(moments, buffer.doubleMoments(1000)); } final Random sr = new Random(seed); for (int i = 0; i < buffer.capacity(); ++i) { statistics = statistics(new Random(seed), i + 1, buffer.capacity() - 1); final double value = random.nextDouble()*1000; buffer.accept(value); statistics.accept(value); final DoubleMoments moments = DoubleMoments.of(statistics); Assert.assertEquals(moments, buffer.doubleMoments(1000)); } }