### Question:
ByteArrayGsonSerializer implements JsonSerializer<byte[]>, JsonDeserializer<byte[]> { @Override public byte[] deserialize(JsonElement je, Type type, JsonDeserializationContext jdc) throws JsonParseException { if (je.isJsonPrimitive() && ((JsonPrimitive) je).isString()) { return Base64.decodeBase64(je.getAsString()); } else if (je.isJsonNull()) { return null; } else { throw new JsonParseException("Not a base64 string."); } }  @Override JsonElement serialize(byte[] data, Type type, JsonSerializationContext jsc); @Override byte[] deserialize(JsonElement je, Type type, JsonDeserializationContext jdc);  }### Answer:
@Test public void deserializeReturnsNullIfJsonElementContainsNull() { JsonElement je = mock(JsonElement.class); when(je.isJsonNull()).thenReturn(true); assertNull(serializer.deserialize(je, byte[].class, null)); }
@Test(expected = JsonParseException.class) public void deserializeThrowsParseExceptionIfJsonElementIsNotJsonPrimitive() { JsonElement je = mock(JsonElement.class); when(je.isJsonPrimitive()).thenReturn(false); serializer.deserialize(je, byte[].class, null); }
@Test(expected = JsonParseException.class) public void deserializeThrowsParseExceptionIfJsonElementDoesNotContainString() { JsonPrimitive jp = new JsonPrimitive(42); serializer.deserialize(jp, byte[].class, null); }
@Test public void deSerializeReturnsDataIfInputIsOk() { JsonPrimitive jp = new JsonPrimitive("derp"); assertNotNull(serializer.deserialize(jp, byte[].class, null)); }