package com.blundell.quicksand;
import com.blundell.quicksand.viscosity.ViscosityInterpolator;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import static org.fest.assertions.api.Assertions.assertThat;
public class ViscosityInterpolatorMapTest {
@Test
public void givenAKnownViscosityWhenWeRetrieveItByTheCorrectKeyThenTheCorrectViscosityIsReturned() throws Exception {
Map<String, ViscosityInterpolator> viscosities = new HashMap<>();
String key = "TestKey";
StubViscosityInterpolator expectedViscosity = new StubViscosityInterpolator();
viscosities.put(key, expectedViscosity);
ViscosityInterpolatorMap collection = new ViscosityInterpolatorMap(viscosities, new StubViscosityInterpolator());
ViscosityInterpolator actualViscosity = collection.getFor(key);
assertThat(actualViscosity).isEqualTo(expectedViscosity);
}
@Test
public void givenAKnownViscosityWhenWeRetrieveItByAnIncorrectKeyThenTheCorrectViscosityIsNotReturned() throws Exception {
Map<String, ViscosityInterpolator> viscosities = new HashMap<>();
StubViscosityInterpolator expectedViscosity = new StubViscosityInterpolator();
viscosities.put("TestKey", expectedViscosity);
ViscosityInterpolatorMap collection = new ViscosityInterpolatorMap(viscosities, new StubViscosityInterpolator());
ViscosityInterpolator actualViscosity = collection.getFor("WrongTestKey");
assertThat(actualViscosity).isNotEqualTo(expectedViscosity);
}
@Test
public void givenAKnownViscosityWhenWeRetrieveItByAnIncorrectKeyThenTheDefaultViscosityIsReturned() throws Exception {
Map<String, ViscosityInterpolator> viscosities = new HashMap<>();
StubViscosityInterpolator expectedViscosity = new StubViscosityInterpolator();
viscosities.put("TestKey", expectedViscosity);
StubViscosityInterpolator defaultViscosity = new StubViscosityInterpolator();
ViscosityInterpolatorMap collection = new ViscosityInterpolatorMap(viscosities, defaultViscosity);
ViscosityInterpolator actualViscosity = collection.getFor("WrongTestKey");
assertThat(actualViscosity).isEqualTo(defaultViscosity);
}
@Test
public void givenAnEmptyCollectionWhenWeRetrieveByAnyKeyThenTheDefaultViscosityIsReturned() throws Exception {
Map<String, ViscosityInterpolator> viscosities = Collections.emptyMap();
StubViscosityInterpolator defaultViscosity = new StubViscosityInterpolator();
ViscosityInterpolatorMap collection = new ViscosityInterpolatorMap(viscosities, defaultViscosity);
ViscosityInterpolator actualViscosity = collection.getFor("AnyTestKey");
assertThat(actualViscosity).isEqualTo(defaultViscosity);
}
private static class StubViscosityInterpolator implements ViscosityInterpolator {
@Override
public long calculateDuration(long currentDuration, long viewCount) {
return 0;
}
}
}