package com.sap.pto.paul;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import org.joda.time.DateTimeUtils;
import org.junit.Before;
import org.junit.Test;
import com.sap.pto.dao.FixtureDAO;
import com.sap.pto.dao.PredictionDAO;
import com.sap.pto.dao.entities.Fixture.Result;
import com.sap.pto.dao.entities.Prediction;
import com.sap.pto.testutil.PTOTest;
import com.sap.pto.util.UserUtil;
@SuppressWarnings("nls")
public class PaulTest extends PTOTest {
@Before
public void setup() throws Exception {
prepareTest();
DateTimeUtils.setCurrentMillisFixed(testDay.getMillis());
setupSampleData();
}
@Test
public void testGetPaulPrediction() throws Exception {
PredictionDAO.save(new Prediction(simpleUser, fixture1_2, Result.AWAYWIN));
assertEquals(Result.AWAYWIN, AveragePaul.getPaulPrediction(fixture1_2));
PredictionDAO.save(new Prediction(simpleUser, fixture1_2, Result.DRAW));
PredictionDAO.save(new Prediction(simpleUser, fixture1_2, Result.DRAW));
assertEquals(Result.DRAW, AveragePaul.getPaulPrediction(fixture1_2));
}
@Test
public void testGetPaulDefaultPrediction() throws Exception {
// make sure Paul always predicts
for (int i = 0; i < 100; i++) {
assertFalse(AveragePaul.getPaulPrediction(fixture1_2).equals(Result.NONE));
}
}
@Test
public void testPredictMissingFixtures() throws Exception {
assertEquals(0, new PredictionDAO().getAll().size());
AveragePaul.predictMissingFixtures(new FixtureDAO().getAll(), new PredictionDAO().getAll());
assertEquals(2, new PredictionDAO().getAll().size());
}
@Test
public void testPredictMissingFixturesTwice() throws Exception {
AveragePaul.predictMissingFixtures(new FixtureDAO().getAll(), new PredictionDAO().getAll());
AveragePaul.predictMissingFixtures(new FixtureDAO().getAll(), new PredictionDAO().getAll());
assertEquals(2, new PredictionDAO().getAll().size());
}
@Test
public void testPredictUpcomingFixtures() throws Exception {
PredictionDAO.save(new Prediction(simpleUser, fixture1_2, Result.AWAYWIN));
AveragePaul.predictFixtures(FixtureDAO.getFuture());
Prediction prediction = PredictionDAO.getForUserAndFixture(UserUtil.getPaul(), fixture1_2);
assertEquals(Result.AWAYWIN, prediction.getResult());
PredictionDAO.save(new Prediction(simpleUser, fixture1_2, Result.HOMEWIN));
PredictionDAO.save(new Prediction(simpleUser, fixture1_2, Result.HOMEWIN));
PredictionDAO.save(new Prediction(simpleUser, fixture1_2, Result.HOMEWIN));
AveragePaul.predictFixtures(FixtureDAO.getFuture());
prediction = PredictionDAO.getForUserAndFixture(UserUtil.getPaul(), fixture1_2);
assertEquals(Result.HOMEWIN, prediction.getResult());
}
}