@Test public void throwIfMapKeyNotString() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Unrecognized map key type class java.lang.Integer, expected string"); BserSerializer serializer = new BserSerializer(); serializer.serializeToBuffer(ImmutableMap.of(0, 1), buffer); }
@Test public void throwIfStringNotUTF8() throws IOException { thrown.expect(CharacterCodingException.class); BserSerializer serializer = new BserSerializer(); // UTF-8 cannot legally represent half of a surrogate pair, so this should throw. serializer.serializeToBuffer("\uDC00", buffer); }
@Test public void serializeTrueToStream() throws IOException { try (ByteArrayOutputStream os = new ByteArrayOutputStream()) { BserSerializer serializer = new BserSerializer(); serializer.serializeToStream(true, os); assertThat(os.toByteArray(), equalTo(BaseEncoding.base16().decode(EXPECTED_TRUE))); } }
private ByteBuffer assertEncodingMatches(Object object, String base16) throws IOException { BserSerializer serializer = new BserSerializer(); ByteBuffer result = serializer.serializeToBuffer(object, buffer); result.flip(); byte[] base16Array = BaseEncoding.base16().decode(base16); assertThat( String.format( "Encoded buffer mismatch (%s != %s)", base16, BaseEncoding.base16().encode(result.array(), result.position(), result.limit())), result, equalTo(ByteBuffer.wrap(base16Array))); return result; }
@Test public void largeObjectAllocatesNewBuffer() throws IOException { BserSerializer serializer = new BserSerializer(); ByteBuffer result = serializer.serializeToBuffer(Strings.repeat("X", 10000), buffer); assertThat(result, is(not(sameInstance(buffer)))); }
@Test public void smallObjectReusesInputBuffer() throws IOException { BserSerializer serializer = new BserSerializer(); ByteBuffer result = serializer.serializeToBuffer(true, buffer); assertThat(result, is(sameInstance(buffer))); }