blob: c84c377d48b950cf812c155b7e1e9fb2381bcc26 [file] [log] [blame]
package org.codehaus.jackson.map.deser;
import java.io.*;
import org.codehaus.jackson.*;
import org.codehaus.jackson.map.*;
/**
* Unit test mostly written to cover issue [JACKSON-81]; unintended blocking
* after data binding.
*/
public class TestBlocking
extends BaseMapTest
{
/**
* This is an indirect test that should trigger problems if (and only if)
* underlying parser is advanced beyond the only element array.
* Basically, although content is invalid, this should be encountered
* quite yet.
*/
public void testEagerAdvance() throws IOException
{
ObjectMapper mapper = new ObjectMapper();
JsonParser jp = createParserUsingReader("[ 1 ");
assertToken(JsonToken.START_ARRAY, jp.nextToken());
assertToken(JsonToken.VALUE_NUMBER_INT, jp.nextToken());
// And then try to map just a single entry: shouldn't fail:
Integer I = mapper.readValue(jp, Integer.class);
assertEquals(Integer.valueOf(1), I);
// and should fail only now:
try {
jp.nextToken();
} catch (IOException ioe) {
verifyException(ioe, "Unexpected end-of-input: expected close marker for ARRAY");
}
}
}