mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-08 12:02:20 +00:00
added tests for csv based sailwave import
This commit is contained in:
1 parent
0703fd1ef2
commit
dbecc9ceb9
1 file changed
+98
+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());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user