public virtual void TestSingleWriterReader() { Counter bytesUsed = Util.Counter.NewCounter(); IntBlockPool pool = new IntBlockPool(new ByteTrackingAllocator(bytesUsed)); for (int j = 0; j < 2; j++) { IntBlockPool.SliceWriter writer = new IntBlockPool.SliceWriter(pool); int start = writer.StartNewSlice(); int num = AtLeast(100); for (int i = 0; i < num; i++) { writer.WriteInt(i); } int upto = writer.CurrentOffset; IntBlockPool.SliceReader reader = new IntBlockPool.SliceReader(pool); reader.Reset(start, upto); for (int i = 0; i < num; i++) { Assert.AreEqual(i, reader.ReadInt()); } Assert.IsTrue(reader.EndOfSlice()); if (Random().NextBoolean()) { pool.Reset(true, false); Assert.AreEqual(0, bytesUsed.Get()); } else { pool.Reset(true, true); Assert.AreEqual(IntBlockPool.INT_BLOCK_SIZE * RamUsageEstimator.NUM_BYTES_INT, bytesUsed.Get()); } } }