### Question:
Json extends com.mozilla.telemetry.ingestion.core.util.Json { public static TableRow readTableRow(byte[] data) throws IOException { if (data == null) { throw new IOException("cannot decode null byte array to TableRow"); } TableRow output = Json.MAPPER.readValue(data, TableRow.class); if (output == null) { throw new IOException("not a valid TableRow: null"); } return output; }  static TableRow readTableRow(byte[] data); static PubsubMessage readPubsubMessage(String data); static String asString(Object data); static TableRow asTableRow(ObjectNode objectNode);  }### Answer:
@Test public void testReadTableRowSuceedsOnEmptyJsonObject() throws Exception { Json.readTableRow("{}".getBytes(StandardCharsets.UTF_8)); }
@Test(expected = IOException.class) public void testReadTableRowThrowsOnNull() throws Exception { Json.readTableRow(null); }
@Test(expected = IOException.class) public void testReadTableRowThrowsOnEmptyArray() throws Exception { Json.readTableRow(new byte[] {}); }
@Test(expected = IOException.class) public void testReadTableRowThrowsOnNullJson() throws Exception { Json.readTableRow("null".getBytes(StandardCharsets.UTF_8)); }