added tests for csv based sailwave import

This commit is contained in:
fmittag committed 2013-07-03 20:06:20 +02:00
1 parent 0703fd1ef2
commit dbecc9ceb9
1 file changed
+98
@@ -0,0 +1,98 @@
package com.sap.sailing.sailwave.resultimport.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.MaxPointsReason;
import com.sap.sailing.domain.common.RegattaScoreCorrections;
import com.sap.sailing.domain.common.RegattaScoreCorrections.ScoreCorrectionsForRace;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.Util;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.resultimport.RegattaResults;
import com.sap.sailing.resultimport.ResultDocumentDescriptor;
import com.sap.sailing.resultimport.ResultDocumentProvider;
import com.sap.sailing.resultimport.impl.ResultDocumentDescriptorImpl;
import com.sap.sailing.sailwave.resultimport.CsvParserFactory;
import com.sap.sailing.sailwave.resultimport.impl.ScoreCorrectionProviderImpl;
public class ParserTest {
private static final String SAMPLE_INPUT_NAME_49er = "49er_R1-6.csv";
private static final String SAMPLE_INPUT_NAME_49erFX = "49erFX_R1-6.csv";
private static final String RESOURCES = "resources/";
private InputStream getInputStream(String filename) throws FileNotFoundException, IOException {
return new FileInputStream(getFile(filename));
}
private File getFile(String filename) {
return new File(RESOURCES + filename);
}
private ResultDocumentProvider getTestDocumentProvider() {
return new ResultDocumentProvider() {
@Override
public Iterable<ResultDocumentDescriptor> getResultDocumentDescriptors() throws IOException {
try {
List<ResultDocumentDescriptor> result = new ArrayList<>();
TimePoint now = MillisecondsTimePoint.now();
result.add(new ResultDocumentDescriptorImpl(getInputStream(SAMPLE_INPUT_NAME_49er), SAMPLE_INPUT_NAME_49er, now));
result.add(new ResultDocumentDescriptorImpl(getInputStream(SAMPLE_INPUT_NAME_49erFX), SAMPLE_INPUT_NAME_49erFX, now));
return result;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
};
}
@Test
public void testParsingSomeDocuments() throws Exception {
RegattaResults parseResults49er = CsvParserFactory.INSTANCE.createParser(getInputStream(SAMPLE_INPUT_NAME_49er),
SAMPLE_INPUT_NAME_49er, MillisecondsTimePoint.now()).parseResults();
assertNotNull(parseResults49er);
RegattaResults parseResults49erFX = CsvParserFactory.INSTANCE.createParser(getInputStream(SAMPLE_INPUT_NAME_49erFX),
SAMPLE_INPUT_NAME_49erFX, MillisecondsTimePoint.now()).parseResults();
assertNotNull(parseResults49erFX);
}
@Test
public void testScoreCorrectionProviderNixdorfFinal() throws Exception {
ScoreCorrectionProviderImpl scoreCorrectionProvider = new ScoreCorrectionProviderImpl(getTestDocumentProvider(),
CsvParserFactory.INSTANCE);
Map<String, Set<Pair<String, TimePoint>>> hasResultsFor = scoreCorrectionProvider.getHasResultsForBoatClassFromDateByEventName();
RegattaScoreCorrections result49er = scoreCorrectionProvider.getScoreCorrections(SAMPLE_INPUT_NAME_49er,
"49er", hasResultsFor.get(SAMPLE_INPUT_NAME_49er).iterator().next().getB());
assertNotNull(result49er);
Iterable<ScoreCorrectionsForRace> scoreCorrectionsForRaces = result49er.getScoreCorrectionsForRaces();
assertNotNull(scoreCorrectionsForRaces);
assertEquals(5, Util.size(scoreCorrectionsForRaces)); // 5 races
{
final ScoreCorrectionsForRace resultsForR2 = Util.get(scoreCorrectionsForRaces, 1);
assertEquals(40, resultsForR2.getScoreCorrectionForCompetitor("ITA8400").getPoints(), 0.00000001);
assertSame(MaxPointsReason.DNF, resultsForR2.getScoreCorrectionForCompetitor("ITA8400").getMaxPointsReason());
assertEquals("Müllejans, Christian+Morf, Karsten",
resultsForR2.getScoreCorrectionForCompetitor("ITA8400").getCompetitorName());
}
{
final ScoreCorrectionsForRace resultsForR2 = Util.get(scoreCorrectionsForRaces, 1);
assertEquals(11, resultsForR2.getScoreCorrectionForCompetitor("GER8055").getPoints(), 0.00000001);
assertSame(null, resultsForR2.getScoreCorrectionForCompetitor("GER8055").getMaxPointsReason());
}
}
}