### Question:
PlacesClient extends AbstractClient { public Request searchAsync(@NonNull PlacesQuery params, @NonNull CompletionHandler completionHandler) { final PlacesQuery paramsCopy = new PlacesQuery(params); return new AsyncTaskRequest(completionHandler) { @Override protected @NonNull JSONObject run() throws AlgoliaException { return search(paramsCopy); } }.start(); } PlacesClient(@NonNull String applicationID, @NonNull String apiKey);  PlacesClient(); Request searchAsync(@NonNull PlacesQuery params, @NonNull CompletionHandler completionHandler); JSONObject getByObjectID(@NonNull String objectID);  }### Answer:
@Test public void searchAsync() throws Exception { PlacesQuery query = new PlacesQuery(); query.setQuery("Paris"); query.setType(PlacesQuery.Type.CITY); query.setHitsPerPage(10); query.setAroundLatLngViaIP(false); query.setAroundLatLng(new PlacesQuery.LatLng(32.7767, -96.7970)); query.setLanguage("en"); query.setCountries("fr", "us"); places.searchAsync(query, new AssertCompletionHandler() { @Override public void doRequestCompleted(JSONObject content, AlgoliaException error) { if (error != null) { fail(error.getMessage()); } assertNotNull(content); assertNotNull(content.optJSONArray("hits")); assertTrue(content.optJSONArray("hits").length() > 0); } }); }