package com.mopub.nativeads;
import com.mopub.common.test.support.SdkTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.fest.assertions.api.Assertions.assertThat;
@RunWith(SdkTestRunner.class)
public class BaseForwardingNativeAdTest {
private BaseForwardingNativeAd subject;
@Before
public void setUp() throws Exception {
subject = new BaseForwardingNativeAd() {};
}
@Test
public void constructor_shouldInitializeMembers() throws Exception {
assertThat(subject.getImpressionMinPercentageViewed()).isEqualTo(50);
assertThat(subject.getImpressionMinTimeViewed()).isEqualTo(1000);
assertThat(subject.getImpressionTrackers()).isEmpty();
assertThat(subject.getExtras()).isEmpty();
}
@Test
public void setImpressionMinTimeViewed_whenTimeIsGreaterThan0_shouldSetTime() throws Exception {
subject.setImpressionMinTimeViewed(250);
assertThat(subject.getImpressionMinTimeViewed()).isEqualTo(250);
}
@Test
public void setImpressionMinTimeViewed_whenTimeIsLessThan0_shouldNotSetTime() throws Exception {
subject.setImpressionMinTimeViewed(250);
assertThat(subject.getImpressionMinTimeViewed()).isEqualTo(250);
subject.setImpressionMinTimeViewed(-1);
assertThat(subject.getImpressionMinTimeViewed()).isEqualTo(250);
}
@Test
public void setStarRating_withinValidRange_shouldSetStarRating() throws Exception {
subject.setStarRating(0.0);
assertThat(subject.getStarRating()).isEqualTo(0.0);
subject.setStarRating(5.0);
assertThat(subject.getStarRating()).isEqualTo(5.0);
subject.setStarRating(2.5);
assertThat(subject.getStarRating()).isEqualTo(2.5);
}
@Test
public void setStarRating_withNull_shouldSetStarRatingToNull() throws Exception {
// Setting star rating to 0 before each case, so we can detect when it gets set to null
final double initialStarRating = 0.0;
subject.setStarRating(initialStarRating);
subject.setStarRating(null);
assertThat(subject.getStarRating()).isEqualTo(null);
}
@Test
public void setStarRating_withNanOrInf_shouldNotSetStarRating() throws Exception {
// First, set star rating to a valid value
final double initialStarRating = 3.75;
subject.setStarRating(initialStarRating);
subject.setStarRating(Double.NaN);
assertThat(subject.getStarRating()).isEqualTo(initialStarRating);
subject.setStarRating(Double.POSITIVE_INFINITY);
assertThat(subject.getStarRating()).isEqualTo(initialStarRating);
subject.setStarRating(Double.NEGATIVE_INFINITY);
assertThat(subject.getStarRating()).isEqualTo(initialStarRating);
}
@Test
public void setStarRating_withValuesOutsideOfValidRange_shouldNotSetStarRating() throws Exception {
// First, set star rating to a valid value
final double initialStarRating = 4.9;
subject.setStarRating(initialStarRating);
subject.setStarRating(5.0001);
assertThat(subject.getStarRating()).isEqualTo(initialStarRating);
subject.setStarRating(-0.001);
assertThat(subject.getStarRating()).isEqualTo(initialStarRating);
}
}