package com.github.pfichtner.jrunalyser.base.data.segmenter;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import com.github.pfichtner.jrunalyser.base.data.DefaultDuration;
import com.github.pfichtner.jrunalyser.base.data.jaxb.GpxUnmarshaller;
import com.github.pfichtner.jrunalyser.base.data.segmenter.Segmenter;
import com.github.pfichtner.jrunalyser.base.data.segmenter.Segmenters;
import com.github.pfichtner.jrunalyser.base.data.track.Track;
import com.github.pfichtner.jrunalyser.base.util.Validator;
import com.google.common.io.Closeables;
public class SegmenterTest {
@Test
public void testSegmentUnsegment() throws IOException {
Track track = loadTrack();
assertTrackSize(track);
for (int i = 1; i < 90; i += 2) {
track = Segmenters
.duration(DefaultDuration.of(i, TimeUnit.MINUTES)).segment(
track);
assertFalse(String.valueOf(i + " minutes = "
+ track.getTrackpoints().size() + " waypoints ("
+ track.getSegments().size() + " segments)"), track
.getSegments().size() == 1);
track = Segmenter.NULL_SEGMENTER.segment(track);
assertTrackSize(track);
}
}
private void assertTrackSize(Track track) {
assertEquals(4038, track.getTrackpoints().size());
}
private Track loadTrack() throws IOException {
InputStream stream = getClass().getResourceAsStream(
"/Portland-Ape Cave.gpx");
try {
return Validator.validate(GpxUnmarshaller.loadTrack(stream));
} finally {
Closeables.closeQuietly(stream);
}
}
}