- package osm.jp.gpx;
-
- import static org.hamcrest.CoreMatchers.is;
- import static org.hamcrest.CoreMatchers.notNullValue;
- import static org.hamcrest.CoreMatchers.nullValue;
- import static org.junit.Assert.*;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.experimental.runners.Enclosed;
- import org.junit.runner.RunWith;
- import org.w3c.dom.DOMImplementation;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
-
- @RunWith(Enclosed.class)
- public class ElementMapTRKPTTest {
-
- public static class Keyのみ {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
- ElementMapTRKPT map = null;
- long timeL;
- static String[] values = {
- "1970-01-01 08:59:59.999",
- "1970-01-01 09:00:00.000",
- "1970-01-01 09:00:00.001",
- "2018-10-25 07:59:59.999",
- "2018-10-25 08:00:00.000",
- "2018-10-25 08:00:00.001"
- };
-
- @Before
- public void setUp() throws Exception {
- timeL = (sdf.parse("2018-10-25 08:00:00.000")).getTime();
- map = new ElementMapTRKPT();
- map.put(new Date(timeL), null); // 5-6: 2018-10-25 08:00:00.000
- map.put(new Date(timeL + 1L), null); // 7: 2018-10-25 08:00:00.001
- map.put(new Date(timeL - 1L), null); // 4: 2018-10-25 07:59:59.999
- map.put(new Date(1L), null); // 3: 1970-01-01 09:00:00.001
- map.put(new Date(0L), null); // 2: 1970-01-01 09:00:00.000
- map.put(new Date(-1L), null); // 1: 1970-01-01 08:59:59.999
- map.put(new Date(timeL), null); // 5-6: 2018-10-25 08:00:00.000
- }
-
- @Test
- public void 同一キーをPUTした場合() {
- assertThat(map.size(), is(6));
- }
-
- @Test
- public void イテレータを使って読みだす() {
- assertThat(map.size(), is(6));
-
- int i = 0;
- for (Date key : map.keySet()) {
- assertThat(sdf.format(key), is(values[i++]));
- }
- }
-
- @Test
- public void 拡張FOR文を使って読みだす() {
- assertThat(map.size(), is(6));
-
- int i = 0;
- for (Date key : map.keySet()) {
- assertThat(sdf.format(key), is(values[i++]));
- }
- }
- }
-
- public static class Keyとvalueのセット {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
- ElementMapTRKPT map = null;
- long timeL;
-
- /*
- * <trkpt lat="35.8812697884" lon="137.9952202085"><time>2017-05-29T01:23:18Z</time></trkpt>
- * <trkpt lat="35.8811769169" lon="137.9951928835"><time>2017-05-29T01:23:21Z</time><ele>614.90</ele></trkpt>
- * <trkpt lat="35.881112963" lon="137.9951796401"><time>2017-05-29T01:23:24Z</time><ele>615.00</ele></trkpt>
- * <trkpt lat="35.881072646" lon="137.9951728508"><time>2017-05-29T01:23:27Z</time><ele>615.03</ele></trkpt>
- */
- static String[][] values = {
- {"2017-05-29T01:23:18Z", "35.8812697884", "137.9952202085", null},
- {"2017-05-29T01:23:21Z", "35.8811769169", "137.9951928835", "614.90"},
- {"2017-05-29T01:23:24Z", "35.881112963", "137.9951796401", "615.00"},
- {"2017-05-29T01:23:27Z", "35.881072646", "137.9951728508", "615.03"}
- };
-
- Element createElement(Document document, String[] values) {
- Element trkpt = document.createElement("trkpt");
- trkpt.setAttribute("lat", values[1]);
- trkpt.setAttribute("lon", values[2]);
- Element timeE = document.createElement("time");
- timeE.appendChild(document.createTextNode(values[0]));
- trkpt.appendChild(timeE);
- if (values[3] != null) {
- Element eleE = document.createElement("ele");
- eleE.appendChild(document.createTextNode(values[3]));
- trkpt.appendChild(eleE);
- }
- return trkpt;
- }
-
- @Before
- public void setUp() throws Exception {
- Complementation.param_GpxOverwriteMagvar = true;
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
- DOMImplementation domImpl=builder.getDOMImplementation();
- Document document = domImpl.createDocument("","trkpt",null);
-
- map = new ElementMapTRKPT();
- for (int cnt = 4; cnt > 0; cnt--) {
- map.put(new TagTrkpt(createElement(document, values[cnt - 1])));
- }
- }
-
- @Test
- public void コンテンツの数をチェック() {
- assertThat(map.size(), is(4));
- }
-
- @Test
- public void KEYが時間順に取り出せるか() {
- int i = 0;
- for (Date key : map.keySet()) {
- try {
- String s = sdf.format(ImportPicture.toUTCDate(values[i++][0]));
- assertThat(sdf.format(key), is(s));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- }
-
- @Test
- public void get_17() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:17Z"));
- assertThat(tag, is(nullValue()));
- }
-
- @Test
- public void get_18() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:18Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:18Z"));
- assertThat(tag.eleStr, is(nullValue()));
- assertThat(tag.lat, is(new Double(values[0][1])));
- assertThat(tag.lon, is(new Double(values[0][2])));
- assertThat(tag.magvarStr, is(nullValue()));
- }
-
- @Test
- public void get_19() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:19Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:18Z"));
- assertThat(tag.eleStr, is(nullValue()));
- assertThat(tag.lat, is(new Double(values[0][1])));
- assertThat(tag.lon, is(new Double(values[0][2])));
- assertThat(tag.magvarStr, is(nullValue()));
- }
-
- @Test
- public void get_20() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:20Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:18Z"));
- assertThat(tag.eleStr, is(nullValue()));
- assertThat(tag.lat, is(new Double(values[0][1])));
- assertThat(tag.lon, is(new Double(values[0][2])));
- assertThat(tag.magvarStr, is(nullValue()));
- }
-
- @Test
- public void get_21() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:21Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:21Z"));
- assertThat(tag.eleStr, is("614.90"));
- assertThat(tag.lat, is(new Double(values[1][1])));
- assertThat(tag.lon, is(new Double(values[1][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_22() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:22Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:21Z"));
- assertThat(tag.eleStr, is("614.90"));
- assertThat(tag.lat, is(new Double(values[1][1])));
- assertThat(tag.lon, is(new Double(values[1][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_23() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:23Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:21Z"));
- assertThat(tag.eleStr, is("614.90"));
- assertThat(tag.lat, is(new Double(values[1][1])));
- assertThat(tag.lon, is(new Double(values[1][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_24() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:24Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:24Z"));
- assertThat(tag.eleStr, is("615.00"));
- assertThat(tag.lat, is(new Double(values[2][1])));
- assertThat(tag.lon, is(new Double(values[2][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_25() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:25Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:24Z"));
- assertThat(tag.eleStr, is("615.00"));
- assertThat(tag.lat, is(new Double(values[2][1])));
- assertThat(tag.lon, is(new Double(values[2][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_26() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:26Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:24Z"));
- assertThat(tag.eleStr, is("615.00"));
- assertThat(tag.lat, is(new Double(values[2][1])));
- assertThat(tag.lon, is(new Double(values[2][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_27() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:27Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:27Z"));
- assertThat(tag.eleStr, is("615.03"));
- assertThat(tag.lat, is(new Double(values[3][1])));
- assertThat(tag.lon, is(new Double(values[3][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_28() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:28Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:27Z"));
- assertThat(tag.eleStr, is("615.03"));
- assertThat(tag.lat, is(new Double(values[3][1])));
- assertThat(tag.lon, is(new Double(values[3][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_30() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:30Z"));
- assertThat(sdf.format(tag.time), is("2017-05-29T10:23:27Z"));
- assertThat(tag.eleStr, is("615.03"));
- assertThat(tag.lat, is(new Double(values[3][1])));
- assertThat(tag.lon, is(new Double(values[3][2])));
- assertThat(tag.magvarStr, is(notNullValue()));
- }
-
- @Test
- public void get_31() throws ParseException {
- TagTrkpt tag = map.getValue(ImportPicture.toUTCDate("2017-05-29T01:23:31Z"));
- assertThat(tag, is(nullValue()));
- }
- }
-
- public static class タイムスタンプの書式 {
- @Test
- public void EXIF時刻書式テスト() throws Exception {
- String dateTimeOriginal = "2017:06:30 09:59:59";
- Date time = ImportPicture.toEXIFDate(dateTimeOriginal);
- assertThat(ImportPicture.toEXIFString(time), is("2017:06:30 09:59:59"));
- assertThat(ImportPicture.toUTCString(time), is("2017-06-30T00:59:59Z"));
- DateFormat dfUTC = new SimpleDateFormat(ImportPicture.TIME_FORMAT_STRING);
- assertThat(dfUTC.format(time), is("2017-06-30T09:59:59Z"));
- }
- }
- }