package osm.jp.gpx;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
import javax.xml.parsers.ParserConfigurationException;
import org.junit.Test;
import org.junit.experimental.theories.DataPoints;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
import org.xml.sax.SAXException;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
public class ElementMapTRKSEGTest {
@RunWith(Theories.class)
public static class 各種GPXファイルを食わせる {
static class Fixture {
String gpxSourcePath; // GPXファイル(オリジナル)
int segCount; // GPXファイルに含まれるTRKSEGノードの数
public Fixture(String gpxSourcePath, int segCount) {
this.gpxSourcePath = gpxSourcePath;
this.segCount = segCount;
}
@Override
public String toString() {
String msg = "テストパターン : \n";
msg += "\tgpxSourcePath = "+ gpxSourcePath +"\n";
msg += "\tsegCount = "+ segCount;
return msg;
}
}
@DataPoints
public static Fixture[] datas = {
new Fixture("src/test/data/20170517.gpx", 1),
new Fixture("src/test/data/20170518.gpx", 1),
new Fixture("src/test/data/2019-09-07 16.17.12 Day.gpx", 1),
new Fixture("src/test/data/2019-12-29 06.50.19 Day.gpx", 1),
new Fixture("src/test/data/2020-02-29 13.35.58 Day.gpx", 1),
//new Fixture("src/test/data/muiltiTRK.GarminColorado.gpx.xml", 3),
//new Fixture("src/test/data/muiltiTRKSEG.GarminColorado.gpx.xml", 3),
//new Fixture("src/test/data/muiltiTRKSEG.noNameSpace.gpx.xml", 3),
//new Fixture("src/test/data/multiTRKSEG.eTrex_20J.gpx.xml", 3),
//new Fixture("src/test/data/multiTRKSEGreverse.eTrex_20J.gpx.xml", 3),
};
@Theory
public void TRKSEGを読み込む(Fixture dataset) {
try {
System.out.println("GPX file: "+ dataset.gpxSourcePath);
GpxFile gpx = new GpxFile(new AppParameters(AppParameters.FILE_PATH), new File(dataset.gpxSourcePath));
gpx.parse();
assertThat(gpx.gpx.trkseg.size(), is(dataset.segCount));
for (Date key : gpx.gpx.trkseg.keySet()) {
assertThat(key, is(notNullValue()));
}
}
catch (IOException | ParseException | ParserConfigurationException | SAXException e) {
fail();
}
}
@Test
public void test整形されていないGPX() {
String gpxSourcePath = "src/test/data/2020-02-29 13.35.58 Day.gpx";
try {
System.out.println("GPX file: "+ gpxSourcePath);
GpxFile gpx = new GpxFile(new AppParameters(AppParameters.FILE_PATH), new File(gpxSourcePath));
gpx.parse();
ElementMapTRKSEG seg = gpx.gpx.trkseg;
assertTrue(seg.size() == 1);
for (Date key : seg.keySet()) {
assertThat(key, notNullValue());
}
}
catch (IOException e) {
fail();
}
catch (ParseException e) {
fail();
}
catch (ParserConfigurationException e) {
fail();
}
catch (SAXException e) {
// 整形されていないXML
}
}
}
}