package org.limewire.promotion.impressions;
import java.util.HashSet;
import java.util.Set;
import junit.framework.Test;
import org.limewire.promotion.PromotionBinder;
public class PromotionContainerRequestorTest extends AbstractEventQueryDataBaseTestCase {
public PromotionContainerRequestorTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(PromotionContainerRequestorTest.class);
}
// ------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------
public void testValid0() {
runTest(0,true);
}
public void testValid1() {
runTest(1,true);
}
public void testValid2() {
runTest(2,true);
}
public void testValid3() {
runTest(3,true);
}
public void testValid4() {
runTest(4,true);
}
public void testValid5() {
runTest(5,true);
}
public void testInvalid0() {
runTest(0,false);
}
public void testInvalid1() {
runTest(1,false);
}
public void testInvalid2() {
runTest(2,false);
}
public void testInvalid3() {
runTest(3,false);
}
public void testInvalid4() {
runTest(4,false);
}
public void testInvalid5() {
runTest(5,false);
}
// ------------------------------------------------------------------------
// Misc
// ------------------------------------------------------------------------
private void runTest(int n, final boolean isValid) {
PromotionBinder binder = new TestPromotionContainerRequestorImpl(isValid).request(url(), id(), getEvents(n));
if (isValid) {
assertNotNull(binder);
} else {
assertNull(binder);
}
}
/**
* Returns a singleton set with <code>numEvents</code> events.
*
* @param numEvents number of events
* @return a singleton set with <code>numEvents</code> events.
*/
private Set<UserQueryEvent> getEvents(int numEvents) {
return getEvents(numEvents, 1);
}
/**
* Returns <code>numSets</code> sets of <code>numEvents</code> each set.
*
* @param numEvents number of events in each set
* @param numSets number of sets to return
* @return <code>numSets</code> sets of <code>numEvents</code> each set.
*/
private Set<UserQueryEvent> getEvents(int numEvents, int numSets) {
Set<UserQueryEvent> eventSets = new HashSet<UserQueryEvent>();
for (int i = 0; i < numSets; i++) {
eventSets.add(getUserQueryEvent(numEvents));
}
return eventSets;
}
/**
* We don't care about this url.
* @return
*/
private String url() {
return "http://doesnt.matter.com";
}
private long id() {
return (long) (Math.random() * Long.MAX_VALUE);
}
}