### Question:
MBTileSet implements TileDataset, FileData { @Override public Tile read(long z, long x, long y) throws IOException { String sql = String.format(Locale.ROOT,"SELECT tile_data FROM %s WHERE zoom_level = %d " + "AND tile_column = %d AND tile_row = %d", TILES, z, x, y); try { Backend.Results results = backend.queryPrepared(sql); try { if (results.next()) { return new Tile((int)z, (int)x, (int)y, results.getBytes(0), tileFormat); } } finally { results.close(); } } catch(IOException e) { LOG.error(String.format(Locale.ROOT,"Error reading tile %s/%s/%s!", z, x, y), e); } return null; } MBTileSet(Backend backend, MBTilesOpts opts);  MBTileSet(File file); String getTileFormat(); @Override File file(); @Override Driver<?> driver(); @Override Map<Key<?>, Object> driverOptions(); @Override String name(); String title(); String description(); @Override CoordinateReferenceSystem crs(); @Override Bounds bounds(); @Override TilePyramid pyramid(); @Override Tile read(long z, long x, long y); @Override Cursor<Tile> read(long z1, long z2, long x1, long x2, long y1, long y2); @Override void close();  }### Answer:
@Test public void readTile() throws IOException { Tile tile = tileset.read(1, 1, 0); assertTrue(tile.data().length > 0); assertEquals(new Integer(1), tile.z()); assertEquals(new Integer(1), tile.x()); assertEquals(new Integer(0), tile.y()); assertEquals("image/png", tile.mimeType()); }