package com.fasterxml.jackson.databind.util; import java.util.*; import com.fasterxml.jackson.databind.BaseMapTest; public class TestObjectBuffer extends BaseMapTest { /** * First a test that treats results as plain old Object[] */ public void testUntyped() { _testObjectBuffer(null); } public void testTyped() { _testObjectBuffer(Integer.class); } /* /********************************************************** /* Helper methods /********************************************************** */ private void _testObjectBuffer(Class<?> clz) { int[] SIZES = new int[] { 3, 19, 99, 1007, 79000, 256001 }; // Let's loop separately for reused instance, new instance for (int reuse = 0; reuse < 2; ++reuse) { ObjectBuffer buf = (reuse == 0) ? null : new ObjectBuffer(); // then distinct sizes for (int sizeIndex = 0; sizeIndex < SIZES.length; ++sizeIndex) { int size = SIZES[sizeIndex]; Random r = new Random(size); ObjectBuffer thisBuf = (buf == null) ? new ObjectBuffer() : buf; Object[] chunk = thisBuf.resetAndStart(); int ix = 0; for (int i = 0; i < size; ++i) { if (ix >= chunk.length) { chunk = thisBuf.appendCompletedChunk(chunk); ix = 0; } chunk[ix++] = Integer.valueOf(r.nextInt()); } Object[] result; if (clz == null) { result = thisBuf.completeAndClearBuffer(chunk, ix); } else { result = thisBuf.completeAndClearBuffer(chunk, ix, clz); } assertEquals(size, result.length); r = new Random(size); for (int i = 0; i < size; ++i) { assertEquals(r.nextInt(), ((Integer) result[i]).intValue()); } } } } }