@Override public ItemScorer get() { if (fallback == null) { return primary; } else { return new FallbackItemScorer(primary, fallback); } } }
@Test public void testNoRec() { FallbackResult r = scorer.score(15, 39); assertThat(r, nullValue()); }
@Test public void testMultipleDetails() { LongSet items = LongUtils.packedSet(10, 30, 39); ResultMap results = scorer.scoreWithDetails(42, items); assertThat(results.size(), equalTo(2)); assertThat(results.getScore(39), equalTo(3.5)); assertThat(results.getScore(30), equalTo(4.0)); assertThat(results.get(39L), instanceOf(FallbackResult.class)); FallbackResult r39 = (FallbackResult) results.get(39L); assertThat(r39.getScore(), equalTo(3.5)); assertThat(r39.isFromPrimary(), equalTo(true)); assertThat(r39.getInnerResult(), notNullValue()); assertThat(r39.getInnerResult().getScore(), equalTo(3.5)); assertThat(results.get(30L), instanceOf(FallbackResult.class)); FallbackResult r30 = (FallbackResult) results.get(30L); assertThat(r30.getScore(), equalTo(4.0)); assertThat(r30.isFromPrimary(), equalTo(false)); assertThat(r30.getInnerResult(), notNullValue()); assertThat(r30.getInnerResult().getScore(), equalTo(4.0)); assertThat(results.get(10L), nullValue()); } }
@Test public void testFallbackItem() { // score for item only known by secondary FallbackResult r = scorer.score(42, 30); assertThat(r, notNullValue()); assertThat(r.getScore(), equalTo(4.0)); assertThat(r.isFromPrimary(), equalTo(false)); }
@Override public ItemScorer get() { if (fallback == null) { return primary; } else { return new FallbackItemScorer(primary, fallback); } } }
@Test public void testFallbackUser() { // score for user only known by secondary FallbackResult r = scorer.score(15, 30); assertThat(r, notNullValue()); assertThat(r.getScore(), equalTo(5.0)); assertThat(r.isFromPrimary(), equalTo(false)); }
@Before public void setupScorer() { primary = PrecomputedItemScorer.newBuilder() .addScore(42, 39, 3.5) .build(); baseline = PrecomputedItemScorer.newBuilder() .addScore(42, 39, 2.0) .addScore(42, 30, 4.0) .addScore(15, 30, 5.0) .build(); scorer = new FallbackItemScorer(primary, baseline); }
@Test public void testScoreItemPrimary() { // score known by the primary FallbackResult r = scorer.score(42, 39); assertThat(r, notNullValue()); assertThat(r.getScore(), equalTo(3.5)); assertThat(r.isFromPrimary(), equalTo(true)); }