public void testCacheReadComment() {
    // this test needs Internet connectivity and assumes that there is a top level comment in
    // Elasticsearch already.
    CommentListModel listModel = new CommentListModel();
    Cache cache = Cache.getInstance();
    CommentSearch search = new CommentSearch(listModel, cache);
    CacheIO cacheIO = cache.getCacheIO();

    ArrayList<CommentModel> acm =
        new ArrayList<CommentModel>(); // this is empty and written to disk to clear the cache.

    cache.serializeAndWrite(acm, "history.sav");

    acm = cacheIO.load("history.sav");
    assertTrue(acm.isEmpty());

    Thread thread = search.pullTopLevel((BrowseActivity) unusedInAnotherTestActivity);
    try {
      thread.join();
    } catch (InterruptedException e) {
      Log.w("EsTestPullReplies", "Thread interrupt");
      Log.w("PULL", "Thread interrupt");
    }

    acm = cacheIO.load("history.sav");

    JestResult result = search.returnResult();
    assertTrue("Result is not null", result != null);
    assertTrue("Result is successful", result.isSucceeded());

    assertFalse(
        "cache is still empty",
        acm.isEmpty()); // if this fails on the first execution: re-run this test again.
  }
  public void testFileIO() {
    Cache cache = Cache.getInstance();
    String filename = "testFile";

    Bitmap pic = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888);

    ArrayList<CommentModel> acm = new ArrayList<CommentModel>();
    CommentModel comment1 =
        new CommentModel("1.2", "1.111", "body1", "Author1", "Title1", null, "testAuthorId");
    CommentModel comment2 =
        new CommentModel("2", "2", "body2", "Author2", "Title2", pic, "testAuthorId");

    acm.add(comment1);
    acm.add(comment2); // make a list of 2 comments

    GsonBuilder builder = new GsonBuilder();
    builder.registerTypeAdapter(Bitmap.class, new BitmapJsonConverter());
    Gson gson = builder.create();

    String jsonString = gson.toJson(acm);
    CacheIO cacheIO = cache.getCacheIO();

    cacheIO.replaceFileHistory(jsonString, filename); // store to file
    acm.clear();

    acm = cacheIO.load(filename);

    assertTrue(!acm.isEmpty());

    assertTrue(acm.get(0).getmBody().equals(comment1.getmBody()));
    assertTrue(acm.get(0).getmAuthor().equals(comment1.getmAuthor()));
    Log.w("CacheTests", acm.get(0).getmTitle() + " " + comment1.getmTitle());
    assertTrue(acm.get(0).getmTitle().equals(comment1.getmTitle()));
    assertTrue(acm.get(0).getmPicture() == null);
    assertTrue(acm.get(0).getLat().equals(comment1.getLat()));
    assertTrue(acm.get(0).getLon().equals(comment1.getLon()));

    assertTrue(acm.get(1).getmBody().equals(comment2.getmBody()));
    assertTrue(acm.get(1).getmAuthor().equals(comment2.getmAuthor()));
    assertTrue(acm.get(1).getmTitle().equals(comment2.getmTitle()));
    assertTrue(acm.get(1).getLat().equals(comment2.getLat()));
    assertTrue(acm.get(1).getLon().equals(comment2.getLon()));

    assertTrue(
        acm.get(1).getmPicture().describeContents() == comment2.getmPicture().describeContents());
  }