package com.blundell.quicksand.viscosity; import java.util.Random; import org.junit.Test; import static org.fest.assertions.api.Assertions.assertThat; public class LinearChangeViscosityTest { private static final long ANY_LONG = new Random().nextLong(); @Test public void testWhenMaxViewsReachedDurationIsZero() throws Exception { int maxViews = 2; ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(maxViews); long duration = viscosity.calculateDuration(ANY_LONG, maxViews); assertThat(duration).isEqualTo(0); } @Test public void testWhenViewCountIsOverMaxViewsDurationIsZero() throws Exception { int maxViews = 2; ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(maxViews); long duration = viscosity.calculateDuration(ANY_LONG, ++maxViews); assertThat(duration).isEqualTo(0); } @Test public void testWhenViewCountIs1DurationEqualsCurrentDuration() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(10); int viewCount = 1; long currentDuration = ANY_LONG; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(currentDuration); } @Test public void testWhenViewCountIs2of10AndCurrentDuration100DurationEquals80() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(10); int viewCount = 2; long currentDuration = 100; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(80); } @Test public void testWhenViewCountIs3of10AndCurrentDuration100DurationEquals70() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(10); int viewCount = 3; long currentDuration = 100; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(70); } @Test public void testWhenViewCountIs5of10AndCurrentDuration100DurationEquals50() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(10); int viewCount = 5; long currentDuration = 100; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(50); } @Test public void testWhenViewCountIs9of10AndCurrentDuration100DurationEquals10() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(10); int viewCount = 9; long currentDuration = 100; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(10); } @Test public void testWhenViewCountIs10of10AndCurrentDuration100DurationEquals0() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(10); int viewCount = 10; long currentDuration = 100; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(0); } @Test public void testWhenViewCountIs11of10AndCurrentDuration100DurationEquals0() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(10); int viewCount = 11; long currentDuration = 100; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(0); } @Test public void testWhenViewCountIs10of20AndCurrentDuration500DurationEquals250() throws Exception { ViscosityInterpolator viscosity = new LinearChangeViscosityInterpolator(20); int viewCount = 10; long currentDuration = 500; long duration = viscosity.calculateDuration(currentDuration, viewCount); assertThat(duration).isEqualTo(250); } }