blob: 601c0db0cdf571e956d3af89f08eff16a8936cd0 [file] [log] [blame]
package org.codehaus.jackson.io;
import org.codehaus.jackson.util.BufferRecycler;
public class TestIOContext
extends main.BaseTest
{
public void testAllocations() throws Exception
{
IOContext ctxt = new IOContext(new BufferRecycler(), "N/A", true);
/* I/O Read buffer */
// First succeeds:
assertNotNull(ctxt.allocReadIOBuffer());
// second fails
try {
ctxt.allocReadIOBuffer();
} catch (IllegalStateException e) {
verifyException(e, "second time");
}
// Also: can't succeed with different buffer
try {
ctxt.releaseReadIOBuffer(new byte[1]);
} catch (IllegalArgumentException e) {
verifyException(e, "not owned");
}
// but call with null is a NOP for convenience
ctxt.releaseReadIOBuffer(null);
/* I/O Write buffer */
assertNotNull(ctxt.allocWriteEncodingBuffer());
try {
ctxt.allocWriteEncodingBuffer();
} catch (IllegalStateException e) {
verifyException(e, "second time");
}
try {
ctxt.releaseWriteEncodingBuffer(new byte[1]);
} catch (IllegalArgumentException e) {
verifyException(e, "not owned");
}
ctxt.releaseWriteEncodingBuffer(null);
/* Token (read) buffer */
assertNotNull(ctxt.allocTokenBuffer());
try {
ctxt.allocTokenBuffer();
} catch (IllegalStateException e) {
verifyException(e, "second time");
}
try {
ctxt.releaseTokenBuffer(new char[1]);
} catch (IllegalArgumentException e) {
verifyException(e, "not owned");
}
ctxt.releaseTokenBuffer(null);
/* Concat (write?) buffer */
assertNotNull(ctxt.allocConcatBuffer());
try {
ctxt.allocConcatBuffer();
} catch (IllegalStateException e) {
verifyException(e, "second time");
}
try {
ctxt.releaseConcatBuffer(new char[1]);
} catch (IllegalArgumentException e) {
verifyException(e, "not owned");
}
ctxt.releaseConcatBuffer(null);
/* NameCopy (write?) buffer */
assertNotNull(ctxt.allocNameCopyBuffer(100));
try {
ctxt.allocNameCopyBuffer(100);
} catch (IllegalStateException e) {
verifyException(e, "second time");
}
try {
ctxt.releaseNameCopyBuffer(new char[1]);
} catch (IllegalArgumentException e) {
verifyException(e, "not owned");
}
ctxt.releaseNameCopyBuffer(null);
}
}