package osm.jp.gpx; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.text.ParseException; import java.util.Date; import javax.xml.parsers.ParserConfigurationException; 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.w3c.dom.DOMException; import org.xml.sax.SAXException; 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("testdata/20170517.gpx", 1), new Fixture("testdata/20170518.gpx", 1), new Fixture("testdata/muiltiTRK.GarminColorado.gpx.xml", 3), new Fixture("testdata/muiltiTRKSEG.GarminColorado.gpx.xml", 3), new Fixture("testdata/muiltiTRKSEG.noNameSpace.gpx.xml", 3), new Fixture("testdata/multiTRKSEG.eTrex_20J.gpx.xml", 3), new Fixture("testdata/multiTRKSEGreverse.eTrex_20J.gpx.xml", 3), }; @Theory public void TRKSEGを読み込む(Fixture dataset) { try { ElementMapTRKSEG mapTRKSEG = new ElementMapTRKSEG(); mapTRKSEG.parse(new File(dataset.gpxSourcePath)); mapTRKSEG.printinfo(); System.out.println("GPX file: "+ dataset.gpxSourcePath); assertThat(mapTRKSEG.size(), is(dataset.segCount)); for (Date key : mapTRKSEG.keySet()) { assertThat(key, is(notNullValue())); } } catch (IOException | ParseException | ParserConfigurationException | DOMException | SAXException e) { fail(); } } } }