@Test
public void testRescorer() throws Exception {

  DataModel dataModel = getDataModel(
          new long[] {1, 2, 3},
          new Double[][] {
                  {0.1, 0.2},
                  {0.2, 0.3, 0.3, 0.6},
                  {0.4, 0.4, 0.5, 0.9},
          });
  UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
  ClusterSimilarity clusterSimilarity = new FarthestNeighborClusterSimilarity(similarity);
  Recommender recommender = new TreeClusteringRecommender2(dataModel, clusterSimilarity, 2);
  List<RecommendedItem> originalRecommended = recommender.recommend(1, 2);
  List<RecommendedItem> rescoredRecommended =
      recommender.recommend(1, 2, new ReversingRescorer<Long>());
  assertNotNull(originalRecommended);
  assertNotNull(rescoredRecommended);
  assertEquals(2, originalRecommended.size());
  assertEquals(2, rescoredRecommended.size());
  assertEquals(originalRecommended.get(0).getItemID(), rescoredRecommended.get(1).getItemID());
  assertEquals(originalRecommended.get(1).getItemID(), rescoredRecommended.get(0).getItemID());
}