package io.kaif.rank; import static org.junit.Assert.*; import org.junit.Test; import io.kaif.test.TimeFixture; public class HotRankingTest implements TimeFixture { private final double precision = 0.001d; @Test public void score_by_total() throws Exception { assertEquals(0.000d, HotRanking.score(0, 0, dayAt(1, 1)), precision); assertEquals(1.000d, HotRanking.score(10, 0, dayAt(1, 1)), precision); assertEquals(1.176d, HotRanking.score(15, 0, dayAt(1, 1)), precision); assertEquals(2.000d, HotRanking.score(100, 0, dayAt(1, 1)), precision); assertEquals(3.000d, HotRanking.score(1000, 0, dayAt(1, 1)), precision); assertEquals(3.000d, HotRanking.score(2000, 1000, dayAt(1, 1)), precision); assertEquals(-3.000d, HotRanking.score(1000, 2000, dayAt(1, 1)), precision); } @Test public void score_by_time() throws Exception { assertEquals(0.000d, HotRanking.score(0, 0, dayAt(1, 1)), precision); assertEquals(1.920d, HotRanking.score(0, 0, dayAt(1, 2)), precision); assertEquals(3.840d, HotRanking.score(0, 0, dayAt(1, 3)), precision); assertEquals(59.520d, HotRanking.score(0, 0, dayAt(2, 1)), precision); } @Test public void score_by_mixed() throws Exception { assertEquals(2.920d, HotRanking.score(10, 0, dayAt(1, 2)), precision); assertEquals(4.539d, HotRanking.score(30, 25, dayAt(1, 3)), precision); assertEquals(4.840d, HotRanking.score(10, 0, dayAt(1, 3)), precision); assertEquals(5.840d, HotRanking.score(100, 0, dayAt(1, 3)), precision); assertEquals(6.840d, HotRanking.score(1000, 0, dayAt(1, 3)), precision); assertEquals(5.760d, HotRanking.score(0, 0, dayAt(1, 4)), precision); assertEquals(6.760d, HotRanking.score(10, 0, dayAt(1, 4)), precision); } }