3 #=======================================================================
5 # File ID: b9e66fa2-f924-11dd-b57f-0001805bf4b1
6 # Test suite for gpst(1).
9 # ©opyleft 2006– Øyvind A. Holm <sunny@sunbase.org>
10 # License: GNU General Public License version 3 or later, see end of
11 # file for legal stuff.
12 #=======================================================================
15 push(@INC, "$ENV{'HOME'}/bin/src/gpstools");
16 use Test
::More
qw{no_plan
};
44 $progname =~ s/^.*\/(.*?)$/$1/;
45 our $VERSION = "0.00";
47 Getopt
::Long
::Configure
("bundling");
50 "all|a" => \
$Opt{'all'},
51 "debug" => \
$Opt{'debug'},
52 "help|h" => \
$Opt{'help'},
53 "todo|t" => \
$Opt{'todo'},
54 "verbose|v+" => \
$Opt{'verbose'},
55 "version" => \
$Opt{'version'},
57 ) || die("$progname: Option error. Use -h for help.\n");
60 'gpsbabel' => 'gpsbabel',
63 $Opt{'debug'} && ($Debug = 1);
64 $Opt{'help'} && usage
(0);
65 if ($Opt{'version'}) {
70 diag
(sprintf("========== Executing %s v%s ==========",
74 chomp(my $gpx_header = <<END);
75 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
78 creator="gpst - http://sunny256.github.com/gpstools/"
79 xmlns="http://www.topografix.com/GPX/1/1"
80 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
81 xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
84 my $stripped_gpx_header = $gpx_header;
85 $stripped_gpx_header =~ s/^\s*(.*)$/$1/mg;
87 if ($Opt{'todo'} && !$Opt{'all'}) {
93 testcmd("$CMD command", # {{{
106 diag
("Testing conversion routines...");
108 # txt_to_xml() and xml_to_txt() {{{
110 is
(txt_to_xml
("abc"),
112 "txt_to_xml(\"abc\")");
113 is
(txt_to_xml
("<&>"),
115 "txt_to_xml(\"<&>\")");
116 is
(txt_to_xml
("first line\nsecond <\rthird\r\n<&>"),
117 "first line\nsecond <\rthird\r\n<&>",
118 "txt_to_xml() with multiline string");
120 is
(xml_to_txt
("abc"),
122 "xml_to_txt(\"abc\")");
123 is
(xml_to_txt
("<&>"),
125 "xml_to_txt(\"<&>\")");
126 is
(xml_to_txt
("first line\nsecond <\rthird\r\n<&>"),
127 "first line\nsecond <\rthird\r\n<&>",
128 "xml_to_txt() with multiline string");
130 # txt_to_xml() and xml_to_txt() }}}
131 # postgresql_copy_safe() {{{
133 is
(postgresql_copy_safe
(""),
135 "postgresql_copy_safe() with empty string");
137 is
(postgresql_copy_safe
("abcæøåÆØÅ"),
139 "postgresql_copy_safe(\"abcæøåÆØÅ\")");
141 is
(postgresql_copy_safe
("abc\t'\r\n"),
143 "postgresql_copy_safe(\"abc\\t'\\r\\n\")");
145 is
(postgresql_copy_safe
("¤%/&gurgle\t325\\wer\ndfv'\r!\"#\n%\twe\r\x00sdf\xFFsadc\n\t\x00sdc\n"),
146 "¤%/&gurgle\\t325\\\\wer\\ndfv'\\r!\"#\\n%\\twe\\r\x00sdf\xFFsadc\\n\\t\x00sdc\\n",
147 "postgresql_copy_safe() with multiline, nulls and stuff");
149 # postgresql_copy_safe() }}}
154 "num_expand(\"\") returns empty string");
156 is
(num_expand
("6.5"),
158 "num_expand(\"6.5\") returns same value");
159 is
(num_expand
("-6.5"),
161 "num_expand(\"-6.5\") returns same value");
162 is
(num_expand
("+6.5"),
164 "num_expand(\"+6.5\") removes leading plus sign");
166 is
(num_expand
("0.0000000000123"),
168 "num_expand(\"0.0000000000123\") returns same value");
169 is
(num_expand
("-0.0000000000123"),
171 "num_expand(\"-0.0000000000123\") returns same value");
172 is
(num_expand
("+0.0000000000123"),
174 "num_expand(\"+0.0000000000123\") removes leading plus sign");
176 is
(num_expand
("1e-06"),
178 "num_expand(\"1e-06\") returns 0.000001");
179 is
(num_expand
("-1e-06"),
181 "num_expand(\"-1e-06\") returns -0.000001");
182 is
(num_expand
("+1e-06"),
184 "num_expand(\"+1e-06\") removes leading plus sign");
186 is
(num_expand
("1e-6"),
188 "num_expand(\"1e-6\") returns 0.000001");
189 is
(num_expand
("1e+6"),
191 "num_expand(\"1e+6\") returns 1000000");
193 is
(num_expand
("3.14159265358979e-10"),
194 "0.000000000314159265358979",
195 "num_expand(\"3.14159265358979e-10\") returns 0.000000000314159265358979");
197 is
(num_expand
("1.2000e-10"),
199 "Strip trailing zeroes from num_expand(\"1.2000e-10\")");
200 is
(num_expand
("1.2000e+10"),
202 "num_expand(\"1.2000e+10\") returns 12000000000");
204 is
(num_expand
("0000000000000"),
206 "num_expand(\"0000000000000\") returns 0");
207 is
(num_expand
("-0000000000000"),
209 "num_expand(\"-0000000000000\") returns 0");
210 is
(num_expand
("+0000000000000"),
212 "num_expand(\"+0000000000000\") returns 0");
214 is
(num_expand
("000000.0000000"),
216 "num_expand(\"000000.0000000\") returns 0");
217 is
(num_expand
("-000000.0000000"),
219 "num_expand(\"-000000.0000000\") returns 0");
220 is
(num_expand
("+000000.0000000"),
222 "num_expand(\"+000000.0000000\") returns 0");
224 is
(num_expand
("1e+20"),
225 "100000000000000000000",
226 "num_expand(\"1e+20\") returns 100000000000000000000");
228 is
(num_expand
("3.14159e+10"),
230 "num_expand(\"314159e+10\") returns 31415900000");
232 is
(num_expand
("2.50000"),
234 "num_expand(\"2.50000\") removes trailing zeroes");
236 is
(num_expand
("0002.5"),
238 "num_expand(\"0002.5\") removes leading zeroes");
239 is
(num_expand
("-0002.5"),
241 "num_expand(\"-0002.5\") removes leading zeroes");
242 is
(num_expand
("+0002.5"),
244 "num_expand(\"+0002.5\") removes leading zeroes and leading plus sign");
246 is
(num_expand
("0002.50000"),
248 "num_expand(\"0002.50000\") removes both leading and trailing zeroes");
250 is
(num_expand
("300"),
252 "Don’t remove trailing zeroes from integers");
254 is
(num_expand
("0004"),
256 "num_expand(\"0004\") removes leading zeroes from integer");
257 is
(num_expand
("-0004"),
259 "num_expand(\"-0004\") removes leading zeroes from negative integer");
260 is
(num_expand
("+0004"),
262 "num_expand(\"+0004\") removes leading plus sign and zeroes from integer");
266 diag
("Testing date routines...");
268 # sec_to_string() {{{
270 is
(sec_to_string
(1148220825),
271 "2006-05-21 14:13:45",
272 "sec_to_string() without separator");
273 is
(sec_to_string
(1148220825, "T"),
274 "2006-05-21T14:13:45",
275 "sec_to_string() with separator");
276 is
(sec_to_string
(-5000),
278 "sec_to_string(-5000) — negative numbers unsupported atm");
279 is
(sec_to_string
(""),
281 "sec_to_string(\"\")");
282 is
(sec_to_string
("pH()rtY tW0"),
284 "sec_to_string() with invalid string");
285 is
(sec_to_string
("00000000000000000000001148220825"),
286 "2006-05-21 14:13:45",
287 "sec_to_string() with a bunch of leading zeros");
288 is
(sec_to_string
("1148220825.93"),
289 "2006-05-21 14:13:45.93",
290 "sec_to_string() with decimals");
291 is
(sec_to_string
("000000000000000000000000000001148220825.7312"),
292 "2006-05-21 14:13:45.7312",
293 "sec_to_string() with decimals and prefixing zeros");
294 is
(sec_to_string
("1148220825.93000"),
295 "2006-05-21 14:13:45.93",
296 "sec_to_string() with decimals and extra trailing zeros");
297 is
(sec_to_string
(".863"),
298 "1970-01-01 00:00:00.863",
299 "sec_to_string() with missing zero before decimal point");
301 # sec_to_string() }}}
302 # sec_to_readable() {{{
304 is
(sec_to_readable
(0),
306 "sec_to_readable(0)");
307 is
(sec_to_readable
("pH()rtY tW0"),
309 "sec_to_readable() with invalid string");
310 is
(sec_to_readable
(86400),
312 "sec_to_readable(86400)");
313 is
(sec_to_readable
(86400*1000),
315 "sec_to_readable(86400*1000)");
316 is
(sec_to_readable
(86400+7200+180+4),
318 "sec_to_readable(86400+7200+180+4)");
319 is
(sec_to_readable
("3.14"),
321 "sec_to_readable(\"3.14\")");
322 is
(sec_to_readable
("-124"),
324 "sec_to_readable() rejects negative numbers");
325 is
(sec_to_readable
("-2.34"),
327 "sec_to_readable() rejects negative decimal");
328 is
(sec_to_readable
(".87"),
330 "sec_to_readable(), missing zero before decimal point");
331 is
(sec_to_readable
(""),
333 "sec_to_readable() with empty string");
335 # sec_to_readable() }}}
337 diag
("Testing geo routines...");
341 is
(ddd_to_dms
("12.34567"),
343 "ddd_to_dms(\"12.34567\")");
347 "ddd_to_dms(\"0\")");
353 is
(ddd_to_dms
("pH()rtY tW0"),
355 "ddd_to_dms(\"pH()rtY tW0\")");
357 is
(ddd_to_dms
("-12.34567"),
359 "ddd_to_dms(\"-12.34567\")");
361 is
(ddd_to_dms
("0.34567"),
363 "ddd_to_dms(\"0.34567\")");
365 is
(ddd_to_dms
(".34567"),
367 "ddd_to_dms(\".34567\")");
369 is
(ddd_to_dms
("-.34567"),
371 "ddd_to_dms(\"-.34567\")");
373 is
(ddd_to_dms
("-0.34567"),
375 "ddd_to_dms(\"-0.34567\")");
377 is
(ddd_to_dms
("180"),
379 "ddd_to_dms(\"180\")");
381 is
(ddd_to_dms
("-180"),
383 "ddd_to_dms(\"-180\")");
387 "ddd_to_dms(\"-1\")");
389 is
(ddd_to_dms
("2-3"),
391 "ddd_to_dms(\"2-3\")");
394 diag
("Testing trackpoint()..."); # {{{
400 "trackpoint() receives empty hash");
419 # trackpoint() (gpsml) {{{
423 "<tp> <time>2003-06-13T14:36:10Z</time> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>\n",
424 "trackpoint() (gpsml)"
427 # trackpoint() (gpsml) }}}
428 # trackpoint() (gpx) {{{
430 $Dat{'format'} = "gpx";
433 qq{ <trkpt lat
="59.5214" lon
="7.392133"> <ele
>762</ele> <time>2003-06-13T14:36:10Z</time> </trkpt
>\n},
437 # trackpoint() (gpx) }}}
439 # trackpoint(): Various loop tests {{{
441 for my $Elem (qw{format lat lon what
}) {
444 $Dat{"$Elem"} = '2d';
447 "trackpoint(): {'$Elem'} with invalid value (\"$Dat{$Elem}\") returns undef"
452 for my $Elem (qw{year month day hour min sec
}) {
459 "<tp> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>\n",
460 "trackpoint(): {'$Elem'} with empty value skips time"
464 $Dat{"$Elem"} = '2d';
466 "<tp> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>\n",
467 "trackpoint(): {'$Elem'} with invalid value (\"$Dat{$Elem}\") skips time"
471 $Dat{$Elem} = "00000$Dat{$Elem}";
473 "<tp> <time>2003-06-13T14:36:10Z</time> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>\n",
474 "trackpoint(): Strip prefixing zeros from {'$Elem'}"
478 $Dat{"$Elem"} = 0-$Dat{$Elem};
480 "<tp> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>\n",
481 "trackpoint(): {'$Elem'} is negative, skip time"
484 if ($Elem ne "sec") {
486 $Dat{"$Elem"} = "$Dat{$Elem}.00";
488 "<tp> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>\n",
489 "trackpoint(): Decimals in {'$Elem'}, skip time"
497 $Dat{'sec'} = "$Dat{'sec'}.00";
499 "<tp> <time>2003-06-13T14:36:10Z</time> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>\n",
500 "trackpoint(): Remove trailing zeros in {'sec'} decimals"
503 for my $Elem (qw{format what error
}) {
508 "trackpoint(): Missing {'$Elem'}, return undef"
512 # Various loop tests }}}
516 diag
("Testing output from ../gpst");
518 diag
("Read empty input (/dev/null)..."); # {{{
519 testcmd
("../gpst </dev/null", # {{{
521 <?xml version="1.0" encoding="UTF-8"?>
528 "Read from /dev/null",
533 testcmd
("../gpst -o gpx </dev/null", # {{{
543 "Output gpx from /dev/null",
549 diag
("Read empty files..."); # {{{
550 testcmd
("echo '<tp> </tp>' | ../gpst", # {{{
552 <?xml version="1.0" encoding="UTF-8"?>
559 "Don’t print empty trackpoints",
564 # Read empty files }}}
565 diag
("Testing --chronology option..."); # {{{
566 testcmd
("../gpst --chronology chronology-error.gpsml", # {{{
568 <?xml version="1.0" encoding="UTF-8"?>
571 <title>Chronology errors</title>
572 <tp> <time>2006-05-02T09:46:37Z</time> <lat>60.45369</lat> <lon>5.31559</lon> <ele>95</ele> </tp>
573 <tp> <time>2006-05-02T09:46:42Z</time> <lat>60.45353</lat> <lon>5.31548</lon> <ele>94</ele> </tp>
574 <tp> <time>2006-05-02T09:46:46Z</time> <lat>60.45353</lat> <lon>5.31561</lon> <ele>94</ele> </tp>
576 <tp> <time>2006-05-02T09:40:07Z</time> <lat>60.45369</lat> <lon>5.31597</lon> <desc>Out of chronology</desc> </tp>
578 <pause>0:00:37:54</pause>
579 <tp> <time>2006-05-02T10:18:01Z</time> <lat>60.45418</lat> <lon>5.31517</lon> <ele>92</ele> </tp>
580 <tp> <time>2006-05-02T10:18:06Z</time> <lat>60.45407</lat> <lon>5.31542</lon> <ele>91</ele> </tp>
581 <tp> <time>2006-05-02T10:18:09Z</time> <lat>60.45401</lat> <lon>5.31543</lon> <ele>98</ele> </tp>
582 <tp> <time>2006-05-02T10:18:09Z</time> <lat>60.45401</lat> <lon>5.31543</lon> <ele>98</ele> </tp>
583 <tp> <time>2006-05-02T10:18:10Z</time> <lat>60.45395</lat> <lon>5.31544</lon> <ele>103</ele> </tp>
584 <tp> <time>2006-05-02T10:18:11Z</time> <lat>60.45391</lat> <lon>5.31545</lon> <ele>107</ele> </tp>
588 "gpst: chronology-error.gpsml: \"2006-05-02T09:46:46Z\": Next date is 0:00:06:39 in the past (2006-05-02T09:40:07Z)\n" .
589 "gpst: chronology-error.gpsml: \"2006-05-02T10:18:09Z\": Duplicated time\n",
590 "Check for chronology errors and duplicated times",
595 # --chronology option }}}
596 diag
("Testing --skip-dups option..."); # {{{
597 testcmd
("../gpst -d no_signal.mayko", # {{{
599 <?xml version="1.0" encoding="UTF-8"?>
602 <tp> <time>2002-12-22T21:42:24Z</time> <lat>70.6800486</lat> <lon>23.6746151</lon> </tp>
603 <tp> <time>2002-12-22T21:42:32Z</time> <lat>70.6799322</lat> <lon>23.6740038</lon> </tp>
604 <tp> <time>2002-12-22T21:42:54Z</time> <lat>70.6796266</lat> <lon>23.6723991</lon> </tp>
605 <etp err="dup"> <time>2002-12-22T21:43:51Z</time> <lat>70.6796266</lat> <lon>23.6723991</lon> </etp>
606 <etp err="dup"> <time>2002-12-22T21:43:52Z</time> <lat>70.6796266</lat> <lon>23.6723991</lon> </etp>
607 <etp err="dup"> <time>2002-12-22T21:43:54Z</time> <lat>70.6796266</lat> <lon>23.6723991</lon> </etp>
608 <tp> <time>2002-12-22T21:44:45Z</time> <lat>70.6800774</lat> <lon>23.6757566</lon> </tp>
609 <tp> <time>2002-12-22T21:44:52Z</time> <lat>70.6801502</lat> <lon>23.6753442</lon> </tp>
610 <tp> <time>2002-12-22T21:45:04Z</time> <lat>70.6801905</lat> <lon>23.6757542</lon> </tp>
615 "Remove duplicated positions from gpsml",
620 testcmd
("../gpst -d -o csv no_signal.mayko", # {{{
622 2002-12-22T21:42:24Z\t23.6746151\t70.6800486\t\t
623 2002-12-22T21:42:32Z\t23.6740038\t70.6799322\t\t
624 2002-12-22T21:42:54Z\t23.6723991\t70.6796266\t\t
625 2002-12-22T21:44:45Z\t23.6757566\t70.6800774\t\t
626 2002-12-22T21:44:52Z\t23.6753442\t70.6801502\t\t
627 2002-12-22T21:45:04Z\t23.6757542\t70.6801905\t\t
630 "Remove duplicated positions from csv output format",
635 testcmd
("../gpst -d -o clean no_signal.mayko", # {{{
637 23.6746151\t70.6800486\t
638 23.6740038\t70.6799322\t
639 23.6723991\t70.6796266\t
640 23.6757566\t70.6800774\t
641 23.6753442\t70.6801502\t
642 23.6757542\t70.6801905\t
645 "Remove duplicated positions from clean output format",
650 testcmd
("../gpst -d -o pgtab no_signal.mayko", # {{{
652 2002-12-22T21:42:24Z\t(70.6800486,23.6746151)\t\\N\t\\N\t\\N\t\\N
653 2002-12-22T21:42:32Z\t(70.6799322,23.6740038)\t\\N\t\\N\t\\N\t\\N
654 2002-12-22T21:42:54Z\t(70.6796266,23.6723991)\t\\N\t\\N\t\\N\t\\N
655 2002-12-22T21:44:45Z\t(70.6800774,23.6757566)\t\\N\t\\N\t\\N\t\\N
656 2002-12-22T21:44:52Z\t(70.6801502,23.6753442)\t\\N\t\\N\t\\N\t\\N
657 2002-12-22T21:45:04Z\t(70.6801905,23.6757542)\t\\N\t\\N\t\\N\t\\N
660 "Remove duplicated positions from pgtab output format",
665 # --skip-dups option }}}
666 diag
("Testing --epoch option..."); # {{{
667 testcmd
("../gpst -e pause.gpx", # {{{
669 <?xml version="1.0" encoding="UTF-8"?>
672 <title>ACTIVE LOG164705</title>
673 <tp> <time>2006-05-21T16:49:11Z</time> <lat>60.425494</lat> <lon>5.299534</lon> <ele>25.26</ele> </tp>
674 <tp> <time>2006-05-21T16:49:46Z</time> <lat>60.425464</lat> <lon>5.29961</lon> <ele>24.931</ele> </tp>
675 <tp> <time>2006-05-21T16:52:04Z</time> <lat>60.425314</lat> <lon>5.299694</lon> <ele>27.975</ele> </tp>
676 <tp> <time>2006-05-21T16:56:36Z</time> <lat>60.425384</lat> <lon>5.299741</lon> <ele>31.017</ele> </tp>
677 <tp> <time>2006-05-21T16:56:47Z</time> <lat>60.425339</lat> <lon>5.299958</lon> <ele>30.98</ele> </tp>
678 <tp> <time>2006-05-21T16:56:56Z</time> <lat>60.425238</lat> <lon>5.29964</lon> <ele>30.538</ele> </tp>
679 <tp> <time>2006-05-21T16:57:03Z</time> <lat>60.425246</lat> <lon>5.299686</lon> <ele>30.515</ele> </tp>
680 <tp> <time>2006-05-21T16:59:08Z</time> <lat>60.425345</lat> <lon>5.299773</lon> <ele>31.936</ele> </tp>
681 <tp> <time>2006-05-21T17:00:54Z</time> <lat>60.425457</lat> <lon>5.299419</lon> <ele>31.794</ele> </tp>
686 "--epoch is ignored in gpsml output",
691 testcmd
("../gpst -e -o gpx pause-noname.gpx", # {{{
696 <trkpt lat="60.425494" lon="5.299534"> <ele>25.26</ele> <time>2006-05-21T16:49:11Z</time> </trkpt>
697 <trkpt lat="60.425464" lon="5.29961"> <ele>24.931</ele> <time>2006-05-21T16:49:46Z</time> </trkpt>
698 <trkpt lat="60.425314" lon="5.299694"> <ele>27.975</ele> <time>2006-05-21T16:52:04Z</time> </trkpt>
699 <trkpt lat="60.425384" lon="5.299741"> <ele>31.017</ele> <time>2006-05-21T16:56:36Z</time> </trkpt>
700 <trkpt lat="60.425339" lon="5.299958"> <ele>30.98</ele> <time>2006-05-21T16:56:47Z</time> </trkpt>
701 <trkpt lat="60.425238" lon="5.29964"> <ele>30.538</ele> <time>2006-05-21T16:56:56Z</time> </trkpt>
702 <trkpt lat="60.425246" lon="5.299686"> <ele>30.515</ele> <time>2006-05-21T16:57:03Z</time> </trkpt>
703 <trkpt lat="60.425345" lon="5.299773"> <ele>31.936</ele> <time>2006-05-21T16:59:08Z</time> </trkpt>
704 <trkpt lat="60.425457" lon="5.299419"> <ele>31.794</ele> <time>2006-05-21T17:00:54Z</time> </trkpt>
710 "--epoch is ignored in gpx output",
716 diag
("Testing --fix option..."); # {{{
717 testcmd
("../gpst --fix --chronology chronology-error.gpsml", # {{{
719 <?xml version="1.0" encoding="UTF-8"?>
722 <title>Chronology errors</title>
723 <tp> <time>2006-05-02T09:46:37Z</time> <lat>60.45369</lat> <lon>5.31559</lon> <ele>95</ele> </tp>
724 <tp> <time>2006-05-02T09:46:42Z</time> <lat>60.45353</lat> <lon>5.31548</lon> <ele>94</ele> </tp>
725 <tp> <time>2006-05-02T09:46:46Z</time> <lat>60.45353</lat> <lon>5.31561</lon> <ele>94</ele> </tp>
727 <etp err="chrono"> <time>2006-05-02T09:40:07Z</time> <lat>60.45369</lat> <lon>5.31597</lon> <desc>Out of chronology</desc> </etp>
729 <pause>0:00:37:54</pause>
730 <tp> <time>2006-05-02T10:18:01Z</time> <lat>60.45418</lat> <lon>5.31517</lon> <ele>92</ele> </tp>
731 <tp> <time>2006-05-02T10:18:06Z</time> <lat>60.45407</lat> <lon>5.31542</lon> <ele>91</ele> </tp>
732 <tp> <time>2006-05-02T10:18:09Z</time> <lat>60.45401</lat> <lon>5.31543</lon> <ele>98</ele> </tp>
733 <etp err="duptime"> <time>2006-05-02T10:18:09Z</time> <lat>60.45401</lat> <lon>5.31543</lon> <ele>98</ele> </etp>
734 <tp> <time>2006-05-02T10:18:10Z</time> <lat>60.45395</lat> <lon>5.31544</lon> <ele>103</ele> </tp>
735 <tp> <time>2006-05-02T10:18:11Z</time> <lat>60.45391</lat> <lon>5.31545</lon> <ele>107</ele> </tp>
739 "gpst: chronology-error.gpsml: \"2006-05-02T09:46:46Z\": Next date is 0:00:06:39 in the past (2006-05-02T09:40:07Z)\n" .
740 "gpst: chronology-error.gpsml: \"2006-05-02T10:18:09Z\": Duplicated time\n",
741 "Remove bad timestamps",
747 diag
("Testing --from-date option..."); # {{{
748 # --from-date option }}}
749 diag
("Testing -h (--help) option..."); # {{{
750 likecmd
("$CMD -h", # {{{
751 '/ Show this help\./',
753 "Option -h prints help screen",
758 diag
("Testing --inside option..."); # {{{
759 testcmd
("../gpst --pos1 2.11,2.12 --pos2 3.31,3.32 --inside multitrack-pause.gpx", # {{{
761 <?xml version="1.0" encoding="UTF-8"?>
764 <title>track1</title>
766 <title>track2</title>
767 <tp> <time>2006-01-02T00:00:00Z</time> <lat>2.11</lat> <lon>2.12</lon> </tp>
768 <tp> <time>2006-01-02T00:00:04Z</time> <lat>2.21</lat> <lon>2.22</lon> </tp>
769 <tp> <time>2006-01-02T00:00:16Z</time> <lat>2.31</lat> <lon>2.32</lon> </tp>
770 <tp> <time>2006-01-02T01:00:16Z</time> <lat>2.41</lat> <lon>2.42</lon> </tp>
772 <tp> <time>2006-01-02T01:00:17Z</time> <lat>2.451</lat> <lon>2.452</lon> </tp>
774 <title>track3</title>
775 <tp> <time>2006-01-03T02:00:20Z</time> <lat>3.11</lat> <lon>3.12</lon> </tp>
776 <tp> <time>2006-01-03T02:00:21Z</time> <lat>3.21</lat> <lon>3.22</lon> </tp>
777 <tp> <time>2006-01-03T02:00:22Z</time> <lat>3.31</lat> <lon>3.32</lon> </tp>
782 "Check --inside option (gpx to gpst)",
787 # --inside option }}}
788 diag
("Testing --undefined option..."); # {{{
789 # --undefined option }}}
790 diag
("Testing --output option..."); # {{{
792 testcmd
("../gpst log.mcsv", # {{{
794 <?xml version="1.0" encoding="UTF-8"?>
798 <title>ACTIVE LOG 125</title>
799 <tp> <time>2006-03-04T11:12:30Z</time> <lat>54.96883</lat> <lon>-1.62439</lon> <ele>77</ele> </tp>
800 <tp> <time>2006-03-04T11:12:47Z</time> <lat>54.96878</lat> <lon>-1.62413</lon> <ele>77</ele> </tp>
801 <tp> <time>2006-03-04T11:12:55Z</time> <lat>54.96913</lat> <lon>-1.62616</lon> <ele>77</ele> </tp>
802 <tp> <time>2006-03-04T11:13:04Z</time> <lat>54.96934</lat> <lon>-1.62624</lon> <ele>77.5</ele> </tp>
803 <tp> <time>2006-03-04T11:13:33Z</time> <lat>54.96934</lat> <lon>-1.62596</lon> <ele>78</ele> </tp>
804 <tp> <time>2006-03-04T11:13:48Z</time> <lat>54.96931</lat> <lon>-1.62645</lon> <ele>78</ele> </tp>
805 <tp> <time>2006-03-04T11:14:05Z</time> <lat>54.96918</lat> <lon>-1.62603</lon> <ele>79</ele> </tp>
806 <tp> <time>2006-03-04T11:14:33Z</time> <lat>54.96901</lat> <lon>-1.62364</lon> <ele>76.1</ele> </tp>
807 <tp> <time>2006-03-04T11:15:02Z</time> <lat>54.96922</lat> <lon>-1.6254</lon> <ele>76.1</ele> </tp>
808 <tp> <time>2006-03-04T11:15:27Z</time> <lat>54.96914</lat> <lon>-1.62526</lon> <ele>75.1</ele> </tp>
809 <tp> <time>2006-03-04T11:15:50Z</time> <lat>54.96911</lat> <lon>-1.62494</lon> <ele>75.1</ele> </tp>
810 <tp> <time>2006-03-04T11:16:03Z</time> <lat>54.9693</lat> <lon>-1.62489</lon> <ele>75.1</ele> </tp>
811 <tp> <time>2006-03-04T11:16:19Z</time> <lat>54.96901</lat> <lon>-1.62496</lon> <ele>75.1</ele> </tp>
812 <tp> <time>2006-03-04T11:16:52Z</time> <lat>54.96871</lat> <lon>-1.62466</lon> <ele>74.6</ele> </tp>
813 <tp> <time>2006-03-04T11:17:25Z</time> <lat>54.96908</lat> <lon>-1.62488</lon> <ele>72.7</ele> </tp>
815 <title>ACTIVE LOG 126</title>
816 <tp> <time>2006-03-04T11:18:32Z</time> <lat>54.96904</lat> <lon>-1.62482</lon> <ele>72.7</ele> </tp>
817 <tp> <time>2006-03-04T11:18:35Z</time> <lat>54.96913</lat> <lon>-1.62499</lon> <ele>71.3</ele> </tp>
818 <tp> <time>2006-03-04T11:18:38Z</time> <lat>54.96904</lat> <lon>-1.62497</lon> <ele>70.8</ele> </tp>
819 <tp> <time>2006-03-04T11:18:48Z</time> <lat>54.96913</lat> <lon>-1.62496</lon> <ele>71.8</ele> </tp>
820 <tp> <time>2006-03-04T11:18:55Z</time> <lat>54.96924</lat> <lon>-1.62501</lon> <ele>72.2</ele> </tp>
821 <tp> <time>2006-03-04T11:19:11Z</time> <lat>54.9694</lat> <lon>-1.62521</lon> <ele>71.8</ele> </tp>
822 <tp> <time>2006-03-04T11:19:30Z</time> <lat>54.96916</lat> <lon>-1.62515</lon> <ele>71.3</ele> </tp>
823 <tp> <time>2006-03-04T11:19:53Z</time> <lat>54.96921</lat> <lon>-1.625</lon> <ele>71.3</ele> </tp>
824 <tp> <time>2006-03-04T11:20:21Z</time> <lat>54.96801</lat> <lon>-1.62417</lon> <ele>71.8</ele> </tp>
826 <title>ACTIVE LOG 127</title>
827 <tp> <time>2006-03-04T11:21:16Z</time> <lat>54.96887</lat> <lon>-1.62504</lon> <ele>70.8</ele> </tp>
828 <tp> <time>2006-03-04T11:21:18Z</time> <lat>54.96898</lat> <lon>-1.62476</lon> <ele>69.8</ele> </tp>
829 <tp> <time>2006-03-04T11:21:29Z</time> <lat>54.9691</lat> <lon>-1.62475</lon> <ele>69.4</ele> </tp>
830 <tp> <time>2006-03-04T11:21:46Z</time> <lat>54.96918</lat> <lon>-1.62468</lon> <ele>70.3</ele> </tp>
831 <tp> <time>2006-03-04T11:22:39Z</time> <lat>54.9692</lat> <lon>-1.62465</lon> <ele>69.4</ele> </tp>
832 <tp> <time>2006-03-04T11:22:43Z</time> <lat>54.96924</lat> <lon>-1.62462</lon> <ele>71.8</ele> </tp>
833 <tp> <time>2006-03-04T11:22:45Z</time> <lat>54.96928</lat> <lon>-1.62463</lon> <ele>71.8</ele> </tp>
834 <tp> <time>2006-03-04T11:23:00Z</time> <lat>54.96945</lat> <lon>-1.62466</lon> <ele>69.4</ele> </tp>
839 "Read Mapsource TAB-separated format",
844 testcmd
("../gpst two-digit_year.mcsv", # {{{
846 <?xml version="1.0" encoding="UTF-8"?>
850 <title>ACTIVE LOG 032</title>
851 <tp> <time>2006-03-20T20:35:33Z</time> <lat>60.41324</lat> <lon>5.33352</lon> <ele>14</ele> </tp>
852 <tp> <time>2006-03-20T20:35:38Z</time> <lat>60.38802</lat> <lon>5.33845</lon> <ele>18</ele> </tp>
853 <tp> <time>2006-03-20T20:35:44Z</time> <lat>60.38709</lat> <lon>5.3379</lon> <ele>19</ele> </tp>
854 <tp> <time>2006-03-20T20:35:49Z</time> <lat>60.38641</lat> <lon>5.33732</lon> <ele>18</ele> </tp>
855 <tp> <time>2006-03-20T20:35:54Z</time> <lat>60.38581</lat> <lon>5.33647</lon> <ele>18</ele> </tp>
856 <tp> <time>2006-03-20T20:36:00Z</time> <lat>60.38516</lat> <lon>5.33528</lon> <ele>15</ele> </tp>
857 <tp> <time>2006-03-20T20:36:02Z</time> <lat>60.38495</lat> <lon>5.3349</lon> <ele>13</ele> </tp>
862 "Read Mapsource TAB-separated format with two-digit year",
867 testcmd
("../gpst log.gpstxt", # {{{
869 <?xml version="1.0" encoding="UTF-8"?>
872 <tp> <time>2003-06-13T14:36:09Z</time> <lat>59.521517</lat> <lon>7.391867</lon> <ele>762</ele> </tp>
873 <tp> <time>2003-06-13T14:36:10Z</time> <lat>59.5214</lat> <lon>7.392133</lon> <ele>762</ele> </tp>
874 <tp> <time>2003-06-13T14:36:11Z</time> <lat>59.5213</lat> <lon>7.392417</lon> <ele>761</ele> </tp>
875 <tp> <time>2003-06-13T14:36:12Z</time> <lat>59.521183</lat> <lon>7.3927</lon> <ele>761</ele> </tp>
876 <etp err="nosignal"> <time>2003-06-13T14:36:13Z</time> </etp>
877 <tp> <time>2003-06-13T14:36:15Z</time> <lat>59.52085</lat> <lon>7.393517</lon> <ele>760</ele> </tp>
878 <tp> <time>2003-06-13T14:36:16Z</time> <lat>59.520733</lat> <lon>7.393783</lon> <ele>760</ele> </tp>
879 <tp> <time>2003-06-13T14:36:17Z</time> <lat>59.52065</lat> <lon>7.39405</lon> <ele>760</ele> </tp>
880 <tp> <time>2003-06-13T14:36:18Z</time> <lat>59.520583</lat> <lon>7.394333</lon> <ele>760</ele> </tp>
881 <tp> <time>2003-06-13T14:36:19Z</time> <lat>59.520533</lat> <lon>7.394633</lon> <ele>759</ele> </tp>
882 <tp> <time>2003-06-13T14:36:20Z</time> <lat>59.520483</lat> <lon>7.394917</lon> <ele>759</ele> </tp>
883 <tp> <time>2003-06-13T14:36:21Z</time> <lat>59.520433</lat> <lon>7.395233</lon> <ele>759</ele> </tp>
884 <etp err="nosignal"> <time>2003-06-13T14:36:22Z</time> </etp>
885 <tp> <time>2003-06-13T14:36:24Z</time> <lat>59.520283</lat> <lon>7.396233</lon> <ele>758</ele> </tp>
886 <tp> <time>2003-06-13T14:36:25Z</time> <lat>59.520233</lat> <lon>7.39655</lon> <ele>758</ele> </tp>
887 <tp> <time>2003-06-13T14:36:26Z</time> <lat>59.520183</lat> <lon>7.396883</lon> <ele>757</ele> </tp>
888 <tp> <time>2003-06-13T14:36:27Z</time> <lat>59.520133</lat> <lon>7.397217</lon> <ele>757</ele> </tp>
889 <tp> <time>2003-06-13T14:36:28Z</time> <lat>59.5201</lat> <lon>7.397567</lon> <ele>757</ele> </tp>
894 "Read Garmin serial text format",
899 testcmd
("../gpst log.dos.mayko", # {{{
901 <?xml version="1.0" encoding="UTF-8"?>
904 <tp> <time>2003-06-15T10:27:45Z</time> <lat>58.1818158</lat> <lon>8.1225077</lon> </tp>
905 <tp> <time>2003-06-15T10:27:53Z</time> <lat>58.1818712</lat> <lon>8.12532</lon> </tp>
906 <tp> <time>2003-06-15T10:27:57Z</time> <lat>58.1816347</lat> <lon>8.1266031</lon> </tp>
907 <tp> <time>2003-06-15T10:28:03Z</time> <lat>58.1812099</lat> <lon>8.1284612</lon> </tp>
908 <tp> <time>2003-06-15T10:28:06Z</time> <lat>58.1810315</lat> <lon>8.129395</lon> </tp>
909 <tp> <time>2003-06-15T10:28:10Z</time> <lat>58.1809621</lat> <lon>8.13074</lon> </tp>
914 "Read DOS-formatted Mayko format",
919 testcmd
("../gpst log.dos.gpstxt", # {{{
921 <?xml version="1.0" encoding="UTF-8"?>
924 <tp> <time>2003-01-05T16:47:11Z</time> <lat>66.908167</lat> <lon>15.022983</lon> <ele>11472</ele> </tp>
925 <tp> <time>2003-01-05T16:47:12Z</time> <lat>66.90625</lat> <lon>15.020667</lon> <ele>11472</ele> </tp>
926 <tp> <time>2003-01-05T16:47:13Z</time> <lat>66.904317</lat> <lon>15.01835</lon> <ele>11472</ele> </tp>
927 <tp> <time>2003-01-05T16:47:14Z</time> <lat>66.9024</lat> <lon>15.016017</lon> <ele>11473</ele> </tp>
928 <tp> <time>2003-01-05T16:47:15Z</time> <lat>66.900483</lat> <lon>15.0137</lon> <ele>11474</ele> </tp>
929 <tp> <time>2003-01-05T16:47:16Z</time> <lat>66.898567</lat> <lon>15.011383</lon> <ele>11474</ele> </tp>
930 <tp> <time>2003-01-05T16:47:17Z</time> <lat>66.896633</lat> <lon>15.009067</lon> <ele>11475</ele> </tp>
931 <tp> <time>2003-01-05T16:47:18Z</time> <lat>66.894717</lat> <lon>15.006733</lon> <ele>11475</ele> </tp>
932 <tp> <time>2003-01-05T16:47:19Z</time> <lat>66.8928</lat> <lon>15.004417</lon> <ele>11475</ele> </tp>
933 <tp> <time>2003-01-05T16:47:20Z</time> <lat>66.890867</lat> <lon>15.0021</lon> <ele>11475</ele> </tp>
934 <tp> <time>2003-01-05T16:47:21Z</time> <lat>66.88895</lat> <lon>14.999783</lon> <ele>11475</ele> </tp>
939 "Read DOS-formatted Garmin serial text format",
944 testcmd
("../gpst log.unix.mcsv", # {{{
946 <?xml version="1.0" encoding="UTF-8"?>
950 <title>ACTIVE LOG 058</title>
951 <tp> <time>2006-02-21T15:14:25Z</time> <lat>60.36662</lat> <lon>5.24885</lon> <ele>31.9</ele> </tp>
952 <tp> <time>2006-02-21T15:14:30Z</time> <lat>60.37057</lat> <lon>5.22956</lon> <ele>35.2</ele> </tp>
953 <tp> <time>2006-02-21T15:14:35Z</time> <lat>60.37019</lat> <lon>5.22817</lon> <ele>39.6</ele> </tp>
954 <tp> <time>2006-02-21T15:14:36Z</time> <lat>60.37012</lat> <lon>5.2279</lon> <ele>41</ele> </tp>
955 <tp> <time>2006-02-21T15:14:40Z</time> <lat>60.37009</lat> <lon>5.22682</lon> <ele>47.2</ele> </tp>
956 <tp> <time>2006-02-21T15:14:42Z</time> <lat>60.37011</lat> <lon>5.22641</lon> <ele>49.2</ele> </tp>
957 <tp> <time>2006-02-21T15:14:44Z</time> <lat>60.37011</lat> <lon>5.22607</lon> <ele>50.1</ele> </tp>
958 <tp> <time>2006-02-21T15:14:48Z</time> <lat>60.37002</lat> <lon>5.22568</lon> <ele>51.1</ele> </tp>
959 <tp> <time>2006-02-21T15:14:51Z</time> <lat>60.3701</lat> <lon>5.22548</lon> <ele>52.5</ele> </tp>
964 "Read UNIX-formatted Garmin Mapsource TAB-separated format",
969 testcmd
("../gpst multitrack.gpx", # {{{
971 <?xml version="1.0" encoding="UTF-8"?>
974 <title>Track 1</title>
975 <tp> <time>2003-02-11T23:35:39Z</time> <lat>51.4968266</lat> <lon>-0.1448824</lon> </tp>
976 <tp> <time>2003-02-11T23:35:49Z</time> <lat>51.4968227</lat> <lon>-0.1449938</lon> </tp>
977 <tp> <time>2003-02-11T23:36:14Z</time> <lat>51.496904</lat> <lon>-0.1453202</lon> </tp>
979 <title>Track 2</title>
980 <tp> <time>2003-02-11T23:36:16Z</time> <lat>51.4969214</lat> <lon>-0.1453398</lon> </tp>
981 <tp> <time>2003-02-11T23:36:31Z</time> <lat>51.4969816</lat> <lon>-0.1455514</lon> </tp>
982 <tp> <time>2003-02-11T23:36:43Z</time> <lat>51.4970224</lat> <lon>-0.1457489</lon> <ele>1000</ele> </tp>
983 <tp> <time>2003-02-11T23:36:50Z</time> <lat>51.4970452</lat> <lon>-0.1457804</lon> </tp>
985 <title>Track 3</title>
986 <tp> <time>2003-02-11T23:37:05Z</time> <lat>51.497068</lat> <lon>-0.1458608</lon> </tp>
987 <tp> <time>2003-02-11T23:37:22Z</time> <lat>51.4971658</lat> <lon>-0.1460047</lon> </tp>
988 <tp> <time>2003-02-11T23:37:36Z</time> <lat>51.4972469</lat> <lon>-0.1461614</lon> </tp>
990 <title>Track 4</title>
991 <tp> <time>2003-02-11T23:37:43Z</time> <lat>51.4972731</lat> <lon>-0.1462394</lon> </tp>
992 <tp> <time>2003-02-11T23:38:04Z</time> <lat>51.4973437</lat> <lon>-0.1463232</lon> </tp>
993 <tp> <time>2003-02-11T23:38:28Z</time> <lat>51.4973337</lat> <lon>-0.1462949</lon> </tp>
994 <tp> <time>2003-02-11T23:38:34Z</time> <lat>51.4973218</lat> <lon>-0.1462825</lon> </tp>
995 <tp> <time>2003-02-11T23:38:35Z</time> <lat>51.4973145</lat> <lon>-0.1462732</lon> </tp>
1000 "Read GPX file with multiple tracks",
1005 testcmd
("../gpst compact.gpx", # {{{
1007 <?xml version="1.0" encoding="UTF-8"?>
1010 <title>All whitespace stripped</title>
1011 <tp> <time>2002-12-30T15:22:04Z</time> <lat>70.660932</lat> <lon>23.7028354</lon> </tp>
1012 <tp> <time>2002-12-30T15:22:06Z</time> <lat>70.6609392</lat> <lon>23.7028468</lon> </tp>
1013 <tp> <time>2002-12-30T15:22:08Z</time> <lat>70.6609429</lat> <lon>23.7028499</lon> </tp>
1014 <tp> <time>2002-12-30T15:22:11Z</time> <lat>70.6609381</lat> <lon>23.702862</lon> </tp>
1015 <tp> <time>2002-12-30T15:22:12Z</time> <lat>70.6609368</lat> <lon>23.7028648</lon> </tp>
1016 <tp> <time>2002-12-30T15:22:13Z</time> <lat>70.6609344</lat> <lon>23.7028652</lon> </tp>
1017 <tp> <time>2002-12-30T15:22:15Z</time> <lat>70.6609349</lat> <lon>23.7028707</lon> </tp>
1018 <tp> <time>2002-12-30T15:22:17Z</time> <lat>70.6609348</lat> <lon>23.7028654</lon> </tp>
1019 <tp> <time>2002-12-30T15:22:19Z</time> <lat>70.6609347</lat> <lon>23.7028599</lon> </tp>
1020 <tp> <time>2002-12-30T15:22:20Z</time> <lat>70.6609348</lat> <lon>23.7028609</lon> </tp>
1021 <tp> <time>2002-12-30T15:22:23Z</time> <lat>70.6609388</lat> <lon>23.7028653</lon> </tp>
1022 <tp> <time>2002-12-30T15:22:25Z</time> <lat>70.6609426</lat> <lon>23.7028732</lon> </tp>
1027 "Read GPX one-liner",
1032 testcmd
("../gpst missing.gpsml", # {{{
1034 <?xml version="1.0" encoding="UTF-8"?>
1037 <title>Missing various elements</title>
1038 <tp> <time>2006-04-30T17:16:59Z</time> </tp>
1039 <tp> <time>2006-04-30T17:17:00Z</time> <lat>60.42352</lat> </tp>
1040 <tp> <time>2006-04-30T17:17:09Z</time> <lat>60.42353</lat> <lon>5.34185</lon> </tp>
1041 <tp> <time>2006-04-30T17:17:11Z</time> <lon>5.34187</lon> <ele>483</ele> </tp>
1042 <tp> <time>2006-04-30T17:17:22Z</time> <ele>485</ele> </tp>
1043 <tp> <lat>60.42347</lat> <lon>5.34212</lon> <ele>486</ele> </tp>
1044 <tp> <lon>5.34224</lon> <ele>484</ele> </tp>
1045 <tp> <ele>486</ele> </tp>
1046 <tp> <desc>Missing everything</desc> </tp>
1047 <tp> <lat>60.42339</lat> </tp>
1048 <tp> <lon>5.34262</lon> </tp>
1049 <tp> <time>2006-04-30T17:18:03Z</time> <lat>60.42339</lat> <ele>490</ele> </tp>
1050 <tp> <time>2006-04-30T17:18:05Z</time> <lat>60.42338</lat> <lon>5.34269</lon> <ele>487</ele> </tp>
1055 "Read gpsml with various data missing",
1060 testcmd
("../gpst different_dateformats.gpsml", # {{{
1062 <?xml version="1.0" encoding="UTF-8"?>
1065 <title>Date format variations</title>
1066 <tp> <time>2006-01-01T00:00:01Z</time> <lat>1</lat> <lon>1</lon> </tp>
1067 <tp> <time>2006-01-01T00:00:02Z</time> <lat>2</lat> <lon>2</lon> </tp>
1068 <tp> <time>2006-01-01T00:00:03Z</time> <lat>3</lat> <lon>3</lon> </tp>
1069 <tp> <time>2006-01-01T00:00:04Z</time> <lat>4</lat> <lon>4</lon> </tp>
1074 "Read different date formats from gpsml file",
1079 testcmd
("../gpst multitrack-pause.gpx", # {{{
1080 file_data
("multitrack-pause.gpsml"),
1082 "Should be equal to multitrack-pause.gpsml",
1088 testcmd
("../gpst -o gpx no_signal.mayko", # {{{
1093 <trkpt lat="70.6800486" lon="23.6746151"> <time>2002-12-22T21:42:24Z</time> </trkpt>
1094 <trkpt lat="70.6799322" lon="23.6740038"> <time>2002-12-22T21:42:32Z</time> </trkpt>
1095 <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:42:54Z</time> </trkpt>
1096 <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:43:51Z</time> </trkpt>
1097 <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:43:52Z</time> </trkpt>
1098 <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:43:54Z</time> </trkpt>
1099 <trkpt lat="70.6800774" lon="23.6757566"> <time>2002-12-22T21:44:45Z</time> </trkpt>
1100 <trkpt lat="70.6801502" lon="23.6753442"> <time>2002-12-22T21:44:52Z</time> </trkpt>
1101 <trkpt lat="70.6801905" lon="23.6757542"> <time>2002-12-22T21:45:04Z</time> </trkpt>
1107 "Output GPX from Mayko file with duplicates",
1112 testcmd
("../gpst -o gpx comments.mayko", # {{{
1117 <trkpt lat="70.6800486" lon="23.6746151"> <time>2002-12-22T21:42:24Z</time> </trkpt>
1118 <trkpt lat="70.6799322" lon="23.6740038"> <time>2002-12-22T21:42:32Z</time> </trkpt>
1119 <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:42:54Z</time> </trkpt>
1120 <!-- <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:43:51Z</time> <extensions> <error>desc</error> </extensions> </trkpt> -->
1121 <!-- <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:43:52Z</time> <extensions> <error>desc</error> </extensions> </trkpt> -->
1122 <!-- <trkpt lat="70.6796266" lon="23.6723991"> <time>2002-12-22T21:43:54Z</time> <extensions> <error>desc</error> </extensions> </trkpt> -->
1123 <trkpt lat="70.6800774" lon="23.6757566"> <time>2002-12-22T21:44:45Z</time> </trkpt>
1126 <trkpt lat="70.6801502" lon="23.6753442"> <time>2002-12-22T21:44:52Z</time> </trkpt>
1127 <trkpt lat="70.6801905" lon="23.6757542"> <time>2002-12-22T21:45:04Z</time> </trkpt>
1133 "Output GPX from Mayko file with commented-out lines",
1138 testcmd
("../gpst -o gpx missing-noname.gpsml", # {{{
1143 <trkpt lat="60.42353" lon="5.34185"> <time>2006-04-30T17:17:09Z</time> </trkpt>
1144 <trkpt lat="60.42347" lon="5.34212"> <ele>486</ele> </trkpt>
1145 <trkpt lat="60.42338" lon="5.34269"> <ele>487</ele> <time>2006-04-30T17:18:05Z</time> </trkpt>
1151 "Output GPX from gpsml with missing data",
1157 testcmd
("../gpst -o xgraph multitrack.gpx", # {{{
1159 -0.1448824 51.4968266
1160 -0.1449938 51.4968227
1161 -0.1453202 51.496904
1162 move -0.1453398 51.4969214
1163 -0.1455514 51.4969816
1164 -0.1457489 51.4970224
1165 -0.1457804 51.4970452
1166 move -0.1458608 51.497068
1167 -0.1460047 51.4971658
1168 -0.1461614 51.4972469
1169 move -0.1462394 51.4972731
1170 -0.1463232 51.4973437
1171 -0.1462949 51.4973337
1172 -0.1462825 51.4973218
1173 -0.1462732 51.4973145
1176 "Output xgraph format from GPX",
1182 testcmd
("../gpst -o pgtab compact.gpx", # {{{
1184 2002-12-30T15:22:04Z\t(70.660932,23.7028354)\t\\N\t\\N\t\\N\t\\N
1185 2002-12-30T15:22:06Z\t(70.6609392,23.7028468)\t\\N\t\\N\t\\N\t\\N
1186 2002-12-30T15:22:08Z\t(70.6609429,23.7028499)\t\\N\t\\N\t\\N\t\\N
1187 2002-12-30T15:22:11Z\t(70.6609381,23.702862)\t\\N\t\\N\t\\N\t\\N
1188 2002-12-30T15:22:12Z\t(70.6609368,23.7028648)\t\\N\t\\N\t\\N\t\\N
1189 2002-12-30T15:22:13Z\t(70.6609344,23.7028652)\t\\N\t\\N\t\\N\t\\N
1190 2002-12-30T15:22:15Z\t(70.6609349,23.7028707)\t\\N\t\\N\t\\N\t\\N
1191 2002-12-30T15:22:17Z\t(70.6609348,23.7028654)\t\\N\t\\N\t\\N\t\\N
1192 2002-12-30T15:22:19Z\t(70.6609347,23.7028599)\t\\N\t\\N\t\\N\t\\N
1193 2002-12-30T15:22:20Z\t(70.6609348,23.7028609)\t\\N\t\\N\t\\N\t\\N
1194 2002-12-30T15:22:23Z\t(70.6609388,23.7028653)\t\\N\t\\N\t\\N\t\\N
1195 2002-12-30T15:22:25Z\t(70.6609426,23.7028732)\t\\N\t\\N\t\\N\t\\N
1198 "Output pgtab from gpx format",
1203 testcmd
("../gpst -o pgtab no_signal.mayko", # {{{
1205 2002-12-22T21:42:24Z\t(70.6800486,23.6746151)\t\\N\t\\N\t\\N\t\\N
1206 2002-12-22T21:42:32Z\t(70.6799322,23.6740038)\t\\N\t\\N\t\\N\t\\N
1207 2002-12-22T21:42:54Z\t(70.6796266,23.6723991)\t\\N\t\\N\t\\N\t\\N
1208 2002-12-22T21:43:51Z\t(70.6796266,23.6723991)\t\\N\t\\N\t\\N\t\\N
1209 2002-12-22T21:43:52Z\t(70.6796266,23.6723991)\t\\N\t\\N\t\\N\t\\N
1210 2002-12-22T21:43:54Z\t(70.6796266,23.6723991)\t\\N\t\\N\t\\N\t\\N
1211 2002-12-22T21:44:45Z\t(70.6800774,23.6757566)\t\\N\t\\N\t\\N\t\\N
1212 2002-12-22T21:44:52Z\t(70.6801502,23.6753442)\t\\N\t\\N\t\\N\t\\N
1213 2002-12-22T21:45:04Z\t(70.6801905,23.6757542)\t\\N\t\\N\t\\N\t\\N
1216 "Output pgtab from mayko format",
1221 testcmd
("../gpst -o pgtab missing.gpsml", # {{{
1223 2006-04-30T17:17:09Z\t(60.42353,5.34185)\t\\N\t\\N\t\\N\t\\N
1224 \\N\t(60.42347,5.34212)\t486\t\\N\t\\N\t\\N
1225 2006-04-30T17:18:05Z\t(60.42338,5.34269)\t487\t\\N\t\\N\t\\N
1228 "Output pgtab from missing.gpsml",
1234 testcmd
("../gpst -o csv log.dos.mayko", # {{{
1236 2003-06-15T10:27:45Z\t8.1225077\t58.1818158\t\t
1237 2003-06-15T10:27:53Z\t8.12532\t58.1818712\t\t
1238 2003-06-15T10:27:57Z\t8.1266031\t58.1816347\t\t
1239 2003-06-15T10:28:03Z\t8.1284612\t58.1812099\t\t
1240 2003-06-15T10:28:06Z\t8.129395\t58.1810315\t\t
1241 2003-06-15T10:28:10Z\t8.13074\t58.1809621\t\t
1244 "Output csv from DOS-formatted Mayko format",
1250 testcmd
("../gpst -o pgwtab multitrack.gpx", # {{{
1252 (51.477880000,-0.001470000)\t0-Meridian\t\\N\t\\N\t\\N\t11-FEB-03 15:46\t11-FEB-03 15:46\t\\N\t\\N
1253 (51.532030,-0.177330)\tAbbey Road\t34.492798\t\\N\t\\N\tDet hellige gangfeltet der Beatles valsa over.\t26-FEB-06 17:29:46\t\\N\t\\N
1254 (61.636684,8.312254)\tGaldhøpiggen med ', &, < og >. ☺\t2469.012939\tmountain\t2006-05-08T18:27:59Z\tHer er det &, < og >. ☺\tSchwæra greie\thttp://www.example.org/\tWaypoint
1255 (60.397460000,5.350610000)\tHalfdan Griegs vei\t\\N\t\\N\t\\N\t04-AUG-02 19:42\t04-AUG-02 19:42\t\\N\t\\N
1256 (51.510130000,-0.130410000)\tLeicester Square\t\\N\t\\N\t\\N\t11-FEB-03 18:00\t11-FEB-03 18:00\t\\N\t\\N
1257 (60.968540000,9.285350000)\tLeira camping\t\\N\t\\N\t\\N\t03-OKT-02 21:58\t03-OKT-02 21:58\t\\N\t\\N
1260 "Test pgwtab format",
1266 testcmd
("../gpst -o pgwupd multitrack.gpx", # {{{
1269 UPDATE logg SET name = clname(coor) WHERE (point(51.477880000,-0.001470000) <-> coor) < 0.05;
1270 UPDATE logg SET dist = cldist(coor) WHERE (point(51.477880000,-0.001470000) <-> coor) < 0.05;
1273 UPDATE logg SET name = clname(coor) WHERE (point(51.532030,-0.177330) <-> coor) < 0.05;
1274 UPDATE logg SET dist = cldist(coor) WHERE (point(51.532030,-0.177330) <-> coor) < 0.05;
1277 UPDATE logg SET name = clname(coor) WHERE (point(61.636684,8.312254) <-> coor) < 0.05;
1278 UPDATE logg SET dist = cldist(coor) WHERE (point(61.636684,8.312254) <-> coor) < 0.05;
1281 UPDATE logg SET name = clname(coor) WHERE (point(60.397460000,5.350610000) <-> coor) < 0.05;
1282 UPDATE logg SET dist = cldist(coor) WHERE (point(60.397460000,5.350610000) <-> coor) < 0.05;
1285 UPDATE logg SET name = clname(coor) WHERE (point(51.510130000,-0.130410000) <-> coor) < 0.05;
1286 UPDATE logg SET dist = cldist(coor) WHERE (point(51.510130000,-0.130410000) <-> coor) < 0.05;
1289 UPDATE logg SET name = clname(coor) WHERE (point(60.968540000,9.285350000) <-> coor) < 0.05;
1290 UPDATE logg SET dist = cldist(coor) WHERE (point(60.968540000,9.285350000) <-> coor) < 0.05;
1294 "Test pgwupd format",
1300 testcmd
("../gpst -t -o clean pause.gpx", # {{{
1302 5.299534\t60.425494\t25.26
1303 5.29961\t60.425464\t24.931
1305 5.299694\t60.425314\t27.975
1307 5.299741\t60.425384\t31.017
1308 5.299958\t60.425339\t30.98
1309 5.29964\t60.425238\t30.538
1310 5.299686\t60.425246\t30.515
1312 5.299773\t60.425345\t31.936
1313 5.299419\t60.425457\t31.794
1316 "Output clean format with time breaks",
1325 # --output option }}}
1326 diag
("Testing --outside option..."); # {{{
1327 testcmd
("../gpst --pos1 2.11,2.12 --pos2 3.31,3.32 --outside multitrack-pause.gpx", # {{{
1329 <?xml version="1.0" encoding="UTF-8"?>
1332 <title>track1</title>
1333 <tp> <time>2006-01-01T00:00:00Z</time> <lat>1.11</lat> <lon>1.12</lon> </tp>
1334 <tp> <time>2006-01-01T00:00:01Z</time> <lat>1.21</lat> <lon>1.22</lon> </tp>
1335 <tp> <time>2006-01-01T00:00:02Z</time> <lat>1.31</lat> <lon>1.32</lon> </tp>
1337 <title>track2</title>
1339 <title>track3</title>
1341 <tp> <time>2006-01-03T02:00:23Z</time> <lat>3.41</lat> <lon>3.42</lon> </tp>
1342 <tp> <time>2006-01-03T02:00:24Z</time> <lat>3.51</lat> <lon>3.52</lon> </tp>
1343 <tp> <time>2006-01-03T02:00:25Z</time> <lat>3.61</lat> <lon>3.62</lon> </tp>
1344 <tp> <time>2006-01-03T02:00:26Z</time> <lat>3.71</lat> <lon>3.72</lon> </tp>
1345 <tp> <time>2006-01-03T02:00:27Z</time> <lat>3.81</lat> <lon>3.82</lon> </tp>
1350 "Check --outside option (gpx to gpst)",
1355 # --outside option }}}
1356 diag
("Testing --pos1 and --pos2 options..."); # {{{
1357 # --pos1 and --pos2 options }}}
1358 diag
("Testing --require option..."); # {{{
1359 testcmd
("../gpst -re multitrack.gpx", # {{{
1361 <?xml version="1.0" encoding="UTF-8"?>
1364 <title>Track 1</title>
1366 <title>Track 2</title>
1367 <tp> <time>2003-02-11T23:36:43Z</time> <lat>51.4970224</lat> <lon>-0.1457489</lon> <ele>1000</ele> </tp>
1369 <title>Track 3</title>
1371 <title>Track 4</title>
1376 "Require elevation from GPX data",
1381 testcmd
("../gpst -re one_ele.dos.gpsml", # {{{
1383 <?xml version="1.0" encoding="UTF-8"?>
1386 <title>Only one point has elevation</title>
1387 <tp> <time>2006-05-21T16:52:04Z</time> <lat>60.425314</lat> <lon>5.299694</lon> <ele>27.975</ele> </tp>
1392 "Require elevation from gpsml",
1397 testcmd
("../gpst -re missing.gpsml", # {{{
1399 <?xml version="1.0" encoding="UTF-8"?>
1402 <title>Missing various elements</title>
1403 <tp> <time>2006-04-30T17:17:11Z</time> <lon>5.34187</lon> <ele>483</ele> </tp>
1404 <tp> <time>2006-04-30T17:17:22Z</time> <ele>485</ele> </tp>
1405 <tp> <lat>60.42347</lat> <lon>5.34212</lon> <ele>486</ele> </tp>
1406 <tp> <lon>5.34224</lon> <ele>484</ele> </tp>
1407 <tp> <ele>486</ele> </tp>
1408 <tp> <time>2006-04-30T17:18:03Z</time> <lat>60.42339</lat> <ele>490</ele> </tp>
1409 <tp> <time>2006-04-30T17:18:05Z</time> <lat>60.42338</lat> <lon>5.34269</lon> <ele>487</ele> </tp>
1414 "Require elevation",
1419 testcmd
("../gpst -rt missing.gpsml", # {{{
1421 <?xml version="1.0" encoding="UTF-8"?>
1424 <title>Missing various elements</title>
1425 <tp> <time>2006-04-30T17:16:59Z</time> </tp>
1426 <tp> <time>2006-04-30T17:17:00Z</time> <lat>60.42352</lat> </tp>
1427 <tp> <time>2006-04-30T17:17:09Z</time> <lat>60.42353</lat> <lon>5.34185</lon> </tp>
1428 <tp> <time>2006-04-30T17:17:11Z</time> <lon>5.34187</lon> <ele>483</ele> </tp>
1429 <tp> <time>2006-04-30T17:17:22Z</time> <ele>485</ele> </tp>
1430 <tp> <time>2006-04-30T17:18:03Z</time> <lat>60.42339</lat> <ele>490</ele> </tp>
1431 <tp> <time>2006-04-30T17:18:05Z</time> <lat>60.42338</lat> <lon>5.34269</lon> <ele>487</ele> </tp>
1441 testcmd
("../gpst -rp missing.gpsml", # {{{
1443 <?xml version="1.0" encoding="UTF-8"?>
1446 <title>Missing various elements</title>
1447 <tp> <time>2006-04-30T17:17:09Z</time> <lat>60.42353</lat> <lon>5.34185</lon> </tp>
1448 <tp> <lat>60.42347</lat> <lon>5.34212</lon> <ele>486</ele> </tp>
1449 <tp> <time>2006-04-30T17:18:05Z</time> <lat>60.42338</lat> <lon>5.34269</lon> <ele>487</ele> </tp>
1459 testcmd
("../gpst -ret missing.gpsml", # {{{
1461 <?xml version="1.0" encoding="UTF-8"?>
1464 <title>Missing various elements</title>
1465 <tp> <time>2006-04-30T17:17:11Z</time> <lon>5.34187</lon> <ele>483</ele> </tp>
1466 <tp> <time>2006-04-30T17:17:22Z</time> <ele>485</ele> </tp>
1467 <tp> <time>2006-04-30T17:18:03Z</time> <lat>60.42339</lat> <ele>490</ele> </tp>
1468 <tp> <time>2006-04-30T17:18:05Z</time> <lat>60.42338</lat> <lon>5.34269</lon> <ele>487</ele> </tp>
1473 "Require elevation and time",
1478 testcmd
("../gpst -retp missing.gpsml", # {{{
1480 <?xml version="1.0" encoding="UTF-8"?>
1483 <title>Missing various elements</title>
1484 <tp> <time>2006-04-30T17:18:05Z</time> <lat>60.42338</lat> <lon>5.34269</lon> <ele>487</ele> </tp>
1489 "Require elevation, time and position",
1494 testcmd
("../gpst -rep missing.gpsml", # {{{
1496 <?xml version="1.0" encoding="UTF-8"?>
1499 <title>Missing various elements</title>
1500 <tp> <lat>60.42347</lat> <lon>5.34212</lon> <ele>486</ele> </tp>
1501 <tp> <time>2006-04-30T17:18:05Z</time> <lat>60.42338</lat> <lon>5.34269</lon> <ele>487</ele> </tp>
1506 "Require elevation and position",
1511 # --require option }}}
1512 diag
("Testing --round option..."); # {{{
1513 testcmd
("../gpst -R lat=4,lon=5,ele=1 pause.gpx", # {{{
1515 <?xml version="1.0" encoding="UTF-8"?>
1518 <title>ACTIVE LOG164705</title>
1519 <tp> <time>2006-05-21T16:49:11Z</time> <lat>60.4255</lat> <lon>5.29953</lon> <ele>25.3</ele> </tp>
1520 <tp> <time>2006-05-21T16:49:46Z</time> <lat>60.4255</lat> <lon>5.29961</lon> <ele>24.9</ele> </tp>
1521 <tp> <time>2006-05-21T16:52:04Z</time> <lat>60.4253</lat> <lon>5.29969</lon> <ele>28</ele> </tp>
1522 <tp> <time>2006-05-21T16:56:36Z</time> <lat>60.4254</lat> <lon>5.29974</lon> <ele>31</ele> </tp>
1523 <tp> <time>2006-05-21T16:56:47Z</time> <lat>60.4253</lat> <lon>5.29996</lon> <ele>31</ele> </tp>
1524 <tp> <time>2006-05-21T16:56:56Z</time> <lat>60.4252</lat> <lon>5.29964</lon> <ele>30.5</ele> </tp>
1525 <tp> <time>2006-05-21T16:57:03Z</time> <lat>60.4252</lat> <lon>5.29969</lon> <ele>30.5</ele> </tp>
1526 <tp> <time>2006-05-21T16:59:08Z</time> <lat>60.4253</lat> <lon>5.29977</lon> <ele>31.9</ele> </tp>
1527 <tp> <time>2006-05-21T17:00:54Z</time> <lat>60.4255</lat> <lon>5.29942</lon> <ele>31.8</ele> </tp>
1532 "--round works with lat, lon, ele from gpx",
1537 testcmd
("../gpst -R lat=3,lon=3,ele=1 -o pgtab pause.gpx", # {{{
1539 2006-05-21T16:49:11Z\t(60.425,5.3)\t25.3\t\\N\t\\N\t\\N
1540 2006-05-21T16:49:46Z\t(60.425,5.3)\t24.9\t\\N\t\\N\t\\N
1541 2006-05-21T16:52:04Z\t(60.425,5.3)\t28\t\\N\t\\N\t\\N
1542 2006-05-21T16:56:36Z\t(60.425,5.3)\t31\t\\N\t\\N\t\\N
1543 2006-05-21T16:56:47Z\t(60.425,5.3)\t31\t\\N\t\\N\t\\N
1544 2006-05-21T16:56:56Z\t(60.425,5.3)\t30.5\t\\N\t\\N\t\\N
1545 2006-05-21T16:57:03Z\t(60.425,5.3)\t30.5\t\\N\t\\N\t\\N
1546 2006-05-21T16:59:08Z\t(60.425,5.3)\t31.9\t\\N\t\\N\t\\N
1547 2006-05-21T17:00:54Z\t(60.425,5.299)\t31.8\t\\N\t\\N\t\\N
1550 "pgtab output from gpx works with --round lat, lon, ele",
1555 testcmd
("../gpst -R lat=3,lon=3,ele=1 -o pgwtab multitrack.gpx", # {{{
1557 (51.478,-0.001)\t0-Meridian\t\\N\t\\N\t\\N\t11-FEB-03 15:46\t11-FEB-03 15:46\t\\N\t\\N
1558 (51.532,-0.177)\tAbbey Road\t34.5\t\\N\t\\N\tDet hellige gangfeltet der Beatles valsa over.\t26-FEB-06 17:29:46\t\\N\t\\N
1559 (61.637,8.312)\tGaldhøpiggen med ', &, < og >. ☺\t2469\tmountain\t2006-05-08T18:27:59Z\tHer er det &, < og >. ☺\tSchwæra greie\thttp://www.example.org/\tWaypoint
1560 (60.397,5.351)\tHalfdan Griegs vei\t\\N\t\\N\t\\N\t04-AUG-02 19:42\t04-AUG-02 19:42\t\\N\t\\N
1561 (51.51,-0.13)\tLeicester Square\t\\N\t\\N\t\\N\t11-FEB-03 18:00\t11-FEB-03 18:00\t\\N\t\\N
1562 (60.969,9.285)\tLeira camping\t\\N\t\\N\t\\N\t03-OKT-02 21:58\t03-OKT-02 21:58\t\\N\t\\N
1565 "--round works with lat, lon, ele from gpx, pgwtab output",
1570 testcmd
("../gpst -R lat=3,lon=3,ele=1 -o pgwupd multitrack.gpx", # {{{
1573 UPDATE logg SET name = clname(coor) WHERE (point(51.478,-0.001) <-> coor) < 0.05;
1574 UPDATE logg SET dist = cldist(coor) WHERE (point(51.478,-0.001) <-> coor) < 0.05;
1577 UPDATE logg SET name = clname(coor) WHERE (point(51.532,-0.177) <-> coor) < 0.05;
1578 UPDATE logg SET dist = cldist(coor) WHERE (point(51.532,-0.177) <-> coor) < 0.05;
1581 UPDATE logg SET name = clname(coor) WHERE (point(61.637,8.312) <-> coor) < 0.05;
1582 UPDATE logg SET dist = cldist(coor) WHERE (point(61.637,8.312) <-> coor) < 0.05;
1585 UPDATE logg SET name = clname(coor) WHERE (point(60.397,5.351) <-> coor) < 0.05;
1586 UPDATE logg SET dist = cldist(coor) WHERE (point(60.397,5.351) <-> coor) < 0.05;
1589 UPDATE logg SET name = clname(coor) WHERE (point(51.51,-0.13) <-> coor) < 0.05;
1590 UPDATE logg SET dist = cldist(coor) WHERE (point(51.51,-0.13) <-> coor) < 0.05;
1593 UPDATE logg SET name = clname(coor) WHERE (point(60.969,9.285) <-> coor) < 0.05;
1594 UPDATE logg SET dist = cldist(coor) WHERE (point(60.969,9.285) <-> coor) < 0.05;
1598 "pgwupd output and --round works with lat, lon, ele from gpx",
1603 testcmd
("../gpst -R lat=8,lon=8 -o gpx rounding.mayko", # {{{
1608 <trkpt lat="51.4838161" lon="0.0000533"> <time>2003-02-11T12:17:05Z</time> </trkpt>
1609 <trkpt lat="51.483777" lon="-0.0000211"> <time>2003-02-11T12:17:15Z</time> </trkpt>
1610 <trkpt lat="51.4837543" lon="-0.0000894"> <time>2003-02-11T12:17:21Z</time> </trkpt>
1611 <trkpt lat="51.4836222" lon="0.0000272"> <time>2003-02-11T12:27:41Z</time> </trkpt>
1617 "Suppress braindead scientific notation when using --round (from mayko)",
1622 testcmd
("../gpst -R lat=8,lon=8 -o gpx rounding.gpx", # {{{
1627 <trkpt lat="51.4838161" lon="0.0000533"> <time>2003-02-11T12:17:05Z</time> </trkpt>
1628 <trkpt lat="51.483777" lon="-0.0000211"> <time>2003-02-11T12:17:15Z</time> </trkpt>
1629 <trkpt lat="51.4837543" lon="-0.0000894"> <time>2003-02-11T12:17:21Z</time> </trkpt>
1630 <trkpt lat="51.4836222" lon="0.0000272"> <time>2003-02-11T12:27:41Z</time> </trkpt>
1636 "Suppress braindead scientific notation when using --round (from gpx)",
1641 # --round option }}}
1642 diag
("Testing --short-date option..."); # {{{
1643 # --short-date option }}}
1644 diag
("Testing --save-to-file option..."); # {{{
1645 # --save-to-file option }}}
1646 diag
("Testing --create-breaks option..."); # {{{
1647 testcmd
("../gpst -t pause.gpx", # {{{
1649 <?xml version="1.0" encoding="UTF-8"?>
1652 <title>ACTIVE LOG164705</title>
1653 <tp> <time>2006-05-21T16:49:11Z</time> <lat>60.425494</lat> <lon>5.299534</lon> <ele>25.26</ele> </tp>
1654 <tp> <time>2006-05-21T16:49:46Z</time> <lat>60.425464</lat> <lon>5.29961</lon> <ele>24.931</ele> </tp>
1655 <pause>0:00:02:18</pause>
1656 <tp> <time>2006-05-21T16:52:04Z</time> <lat>60.425314</lat> <lon>5.299694</lon> <ele>27.975</ele> </tp>
1657 <pause>0:00:04:32</pause>
1658 <tp> <time>2006-05-21T16:56:36Z</time> <lat>60.425384</lat> <lon>5.299741</lon> <ele>31.017</ele> </tp>
1659 <tp> <time>2006-05-21T16:56:47Z</time> <lat>60.425339</lat> <lon>5.299958</lon> <ele>30.98</ele> </tp>
1660 <tp> <time>2006-05-21T16:56:56Z</time> <lat>60.425238</lat> <lon>5.29964</lon> <ele>30.538</ele> </tp>
1661 <tp> <time>2006-05-21T16:57:03Z</time> <lat>60.425246</lat> <lon>5.299686</lon> <ele>30.515</ele> </tp>
1662 <pause>0:00:02:05</pause>
1663 <tp> <time>2006-05-21T16:59:08Z</time> <lat>60.425345</lat> <lon>5.299773</lon> <ele>31.936</ele> </tp>
1664 <tp> <time>2006-05-21T17:00:54Z</time> <lat>60.425457</lat> <lon>5.299419</lon> <ele>31.794</ele> </tp>
1669 "Output gpsml with <pause> elements from GPX files",
1674 testcmd
("../gpst -t multitrack-pause.gpx", # {{{
1676 <?xml version="1.0" encoding="UTF-8"?>
1679 <title>track1</title>
1680 <tp> <time>2006-01-01T00:00:00Z</time> <lat>1.11</lat> <lon>1.12</lon> </tp>
1681 <tp> <time>2006-01-01T00:00:01Z</time> <lat>1.21</lat> <lon>1.22</lon> </tp>
1682 <tp> <time>2006-01-01T00:00:02Z</time> <lat>1.31</lat> <lon>1.32</lon> </tp>
1684 <title>track2</title>
1685 <pause>0:23:59:58</pause>
1686 <tp> <time>2006-01-02T00:00:00Z</time> <lat>2.11</lat> <lon>2.12</lon> </tp>
1687 <tp> <time>2006-01-02T00:00:04Z</time> <lat>2.21</lat> <lon>2.22</lon> </tp>
1688 <tp> <time>2006-01-02T00:00:16Z</time> <lat>2.31</lat> <lon>2.32</lon> </tp>
1689 <pause>0:01:00:00</pause>
1690 <tp> <time>2006-01-02T01:00:16Z</time> <lat>2.41</lat> <lon>2.42</lon> </tp>
1692 <tp> <time>2006-01-02T01:00:17Z</time> <lat>2.451</lat> <lon>2.452</lon> </tp>
1694 <title>track3</title>
1695 <pause>1:01:00:03</pause>
1696 <tp> <time>2006-01-03T02:00:20Z</time> <lat>3.11</lat> <lon>3.12</lon> </tp>
1697 <tp> <time>2006-01-03T02:00:21Z</time> <lat>3.21</lat> <lon>3.22</lon> </tp>
1698 <tp> <time>2006-01-03T02:00:22Z</time> <lat>3.31</lat> <lon>3.32</lon> </tp>
1700 <tp> <time>2006-01-03T02:00:23Z</time> <lat>3.41</lat> <lon>3.42</lon> </tp>
1701 <tp> <time>2006-01-03T02:00:24Z</time> <lat>3.51</lat> <lon>3.52</lon> </tp>
1702 <tp> <time>2006-01-03T02:00:25Z</time> <lat>3.61</lat> <lon>3.62</lon> </tp>
1703 <tp> <time>2006-01-03T02:00:26Z</time> <lat>3.71</lat> <lon>3.72</lon> </tp>
1704 <tp> <time>2006-01-03T02:00:27Z</time> <lat>3.81</lat> <lon>3.82</lon> </tp>
1709 "Insert <pause> between gpx tracks",
1714 testcmd
("../gpst -t multitrack-pause.gpsml", # {{{
1716 <?xml version="1.0" encoding="UTF-8"?>
1719 <title>track1</title>
1720 <tp> <time>2006-01-01T00:00:00Z</time> <lat>1.11</lat> <lon>1.12</lon> </tp>
1721 <tp> <time>2006-01-01T00:00:01Z</time> <lat>1.21</lat> <lon>1.22</lon> </tp>
1722 <tp> <time>2006-01-01T00:00:02Z</time> <lat>1.31</lat> <lon>1.32</lon> </tp>
1724 <title>track2</title>
1725 <pause>0:23:59:58</pause>
1726 <tp> <time>2006-01-02T00:00:00Z</time> <lat>2.11</lat> <lon>2.12</lon> </tp>
1727 <tp> <time>2006-01-02T00:00:04Z</time> <lat>2.21</lat> <lon>2.22</lon> </tp>
1728 <tp> <time>2006-01-02T00:00:16Z</time> <lat>2.31</lat> <lon>2.32</lon> </tp>
1729 <pause>0:01:00:00</pause>
1730 <tp> <time>2006-01-02T01:00:16Z</time> <lat>2.41</lat> <lon>2.42</lon> </tp>
1732 <tp> <time>2006-01-02T01:00:17Z</time> <lat>2.451</lat> <lon>2.452</lon> </tp>
1734 <title>track3</title>
1735 <pause>1:01:00:03</pause>
1736 <tp> <time>2006-01-03T02:00:20Z</time> <lat>3.11</lat> <lon>3.12</lon> </tp>
1737 <tp> <time>2006-01-03T02:00:21Z</time> <lat>3.21</lat> <lon>3.22</lon> </tp>
1738 <tp> <time>2006-01-03T02:00:22Z</time> <lat>3.31</lat> <lon>3.32</lon> </tp>
1740 <tp> <time>2006-01-03T02:00:23Z</time> <lat>3.41</lat> <lon>3.42</lon> </tp>
1741 <tp> <time>2006-01-03T02:00:24Z</time> <lat>3.51</lat> <lon>3.52</lon> </tp>
1742 <tp> <time>2006-01-03T02:00:25Z</time> <lat>3.61</lat> <lon>3.62</lon> </tp>
1743 <tp> <time>2006-01-03T02:00:26Z</time> <lat>3.71</lat> <lon>3.72</lon> </tp>
1744 <tp> <time>2006-01-03T02:00:27Z</time> <lat>3.81</lat> <lon>3.82</lon> </tp>
1749 "Insert <pause> between gpsml titles",
1754 # --create-breaks option }}}
1755 diag
("Testing -T (--time-shift) option..."); # {{{
1756 testcmd
("$CMD -T 3600 multitrack-pause.gpx", # {{{
1758 <?xml version="1.0" encoding="UTF-8"?>
1761 <title>track1</title>
1762 <tp> <time>2006-01-01T01:00:00Z</time> <lat>1.11</lat> <lon>1.12</lon> </tp>
1763 <tp> <time>2006-01-01T01:00:01Z</time> <lat>1.21</lat> <lon>1.22</lon> </tp>
1764 <tp> <time>2006-01-01T01:00:02Z</time> <lat>1.31</lat> <lon>1.32</lon> </tp>
1766 <title>track2</title>
1767 <tp> <time>2006-01-02T01:00:00Z</time> <lat>2.11</lat> <lon>2.12</lon> </tp>
1768 <tp> <time>2006-01-02T01:00:04Z</time> <lat>2.21</lat> <lon>2.22</lon> </tp>
1769 <tp> <time>2006-01-02T01:00:16Z</time> <lat>2.31</lat> <lon>2.32</lon> </tp>
1770 <tp> <time>2006-01-02T02:00:16Z</time> <lat>2.41</lat> <lon>2.42</lon> </tp>
1772 <tp> <time>2006-01-02T02:00:17Z</time> <lat>2.451</lat> <lon>2.452</lon> </tp>
1774 <title>track3</title>
1775 <tp> <time>2006-01-03T03:00:20Z</time> <lat>3.11</lat> <lon>3.12</lon> </tp>
1776 <tp> <time>2006-01-03T03:00:21Z</time> <lat>3.21</lat> <lon>3.22</lon> </tp>
1777 <tp> <time>2006-01-03T03:00:22Z</time> <lat>3.31</lat> <lon>3.32</lon> </tp>
1779 <tp> <time>2006-01-03T03:00:23Z</time> <lat>3.41</lat> <lon>3.42</lon> </tp>
1780 <tp> <time>2006-01-03T03:00:24Z</time> <lat>3.51</lat> <lon>3.52</lon> </tp>
1781 <tp> <time>2006-01-03T03:00:25Z</time> <lat>3.61</lat> <lon>3.62</lon> </tp>
1782 <tp> <time>2006-01-03T03:00:26Z</time> <lat>3.71</lat> <lon>3.72</lon> </tp>
1783 <tp> <time>2006-01-03T03:00:27Z</time> <lat>3.81</lat> <lon>3.82</lon> </tp>
1788 "Add one hour to GPX input, output gpsml",
1793 testcmd
("$CMD -T -3600 multitrack-pause.gpx", # {{{
1795 <?xml version="1.0" encoding="UTF-8"?>
1798 <title>track1</title>
1799 <tp> <time>2005-12-31T23:00:00Z</time> <lat>1.11</lat> <lon>1.12</lon> </tp>
1800 <tp> <time>2005-12-31T23:00:01Z</time> <lat>1.21</lat> <lon>1.22</lon> </tp>
1801 <tp> <time>2005-12-31T23:00:02Z</time> <lat>1.31</lat> <lon>1.32</lon> </tp>
1803 <title>track2</title>
1804 <tp> <time>2006-01-01T23:00:00Z</time> <lat>2.11</lat> <lon>2.12</lon> </tp>
1805 <tp> <time>2006-01-01T23:00:04Z</time> <lat>2.21</lat> <lon>2.22</lon> </tp>
1806 <tp> <time>2006-01-01T23:00:16Z</time> <lat>2.31</lat> <lon>2.32</lon> </tp>
1807 <tp> <time>2006-01-02T00:00:16Z</time> <lat>2.41</lat> <lon>2.42</lon> </tp>
1809 <tp> <time>2006-01-02T00:00:17Z</time> <lat>2.451</lat> <lon>2.452</lon> </tp>
1811 <title>track3</title>
1812 <tp> <time>2006-01-03T01:00:20Z</time> <lat>3.11</lat> <lon>3.12</lon> </tp>
1813 <tp> <time>2006-01-03T01:00:21Z</time> <lat>3.21</lat> <lon>3.22</lon> </tp>
1814 <tp> <time>2006-01-03T01:00:22Z</time> <lat>3.31</lat> <lon>3.32</lon> </tp>
1816 <tp> <time>2006-01-03T01:00:23Z</time> <lat>3.41</lat> <lon>3.42</lon> </tp>
1817 <tp> <time>2006-01-03T01:00:24Z</time> <lat>3.51</lat> <lon>3.52</lon> </tp>
1818 <tp> <time>2006-01-03T01:00:25Z</time> <lat>3.61</lat> <lon>3.62</lon> </tp>
1819 <tp> <time>2006-01-03T01:00:26Z</time> <lat>3.71</lat> <lon>3.72</lon> </tp>
1820 <tp> <time>2006-01-03T01:00:27Z</time> <lat>3.81</lat> <lon>3.82</lon> </tp>
1825 "Subtract one hour from GPX input, output gpsml",
1830 testcmd
("$CMD -T 1 -o gpx multitrack-pause.gpx", # {{{
1835 <trkpt lat="1.11" lon="1.12"> <time>2006-01-01T00:00:01Z</time> </trkpt>
1836 <trkpt lat="1.21" lon="1.22"> <time>2006-01-01T00:00:02Z</time> </trkpt>
1837 <trkpt lat="1.31" lon="1.32"> <time>2006-01-01T00:00:03Z</time> </trkpt>
1840 <trkpt lat="2.11" lon="2.12"> <time>2006-01-02T00:00:01Z</time> </trkpt>
1841 <trkpt lat="2.21" lon="2.22"> <time>2006-01-02T00:00:05Z</time> </trkpt>
1842 <trkpt lat="2.31" lon="2.32"> <time>2006-01-02T00:00:17Z</time> </trkpt>
1843 <trkpt lat="2.41" lon="2.42"> <time>2006-01-02T01:00:17Z</time> </trkpt>
1844 <trkpt lat="2.451" lon="2.452"> <time>2006-01-02T01:00:18Z</time> </trkpt>
1849 <trkpt lat="3.11" lon="3.12"> <time>2006-01-03T02:00:21Z</time> </trkpt>
1850 <trkpt lat="3.21" lon="3.22"> <time>2006-01-03T02:00:22Z</time> </trkpt>
1851 <trkpt lat="3.31" lon="3.32"> <time>2006-01-03T02:00:23Z</time> </trkpt>
1852 <trkpt lat="3.41" lon="3.42"> <time>2006-01-03T02:00:24Z</time> </trkpt>
1855 <trkpt lat="3.51" lon="3.52"> <time>2006-01-03T02:00:25Z</time> </trkpt>
1856 <trkpt lat="3.61" lon="3.62"> <time>2006-01-03T02:00:26Z</time> </trkpt>
1857 <trkpt lat="3.71" lon="3.72"> <time>2006-01-03T02:00:27Z</time> </trkpt>
1858 <trkpt lat="3.81" lon="3.82"> <time>2006-01-03T02:00:28Z</time> </trkpt>
1864 "Add one second to GPX input, output GPX",
1869 testcmd
("$CMD --time-shift -1 -o gpx multitrack-pause.gpsml", # {{{
1874 <trkpt lat="1.11" lon="1.12"> <time>2005-12-31T23:59:59Z</time> </trkpt>
1875 <trkpt lat="1.21" lon="1.22"> <time>2006-01-01T00:00:00Z</time> </trkpt>
1876 <trkpt lat="1.31" lon="1.32"> <time>2006-01-01T00:00:01Z</time> </trkpt>
1879 <trkpt lat="2.11" lon="2.12"> <time>2006-01-01T23:59:59Z</time> </trkpt>
1880 <trkpt lat="2.21" lon="2.22"> <time>2006-01-02T00:00:03Z</time> </trkpt>
1881 <trkpt lat="2.31" lon="2.32"> <time>2006-01-02T00:00:15Z</time> </trkpt>
1882 <trkpt lat="2.41" lon="2.42"> <time>2006-01-02T01:00:15Z</time> </trkpt>
1883 <trkpt lat="2.451" lon="2.452"> <time>2006-01-02T01:00:16Z</time> </trkpt>
1888 <trkpt lat="3.11" lon="3.12"> <time>2006-01-03T02:00:19Z</time> </trkpt>
1889 <trkpt lat="3.21" lon="3.22"> <time>2006-01-03T02:00:20Z</time> </trkpt>
1890 <trkpt lat="3.31" lon="3.32"> <time>2006-01-03T02:00:21Z</time> </trkpt>
1891 <trkpt lat="3.41" lon="3.42"> <time>2006-01-03T02:00:22Z</time> </trkpt>
1894 <trkpt lat="3.51" lon="3.52"> <time>2006-01-03T02:00:23Z</time> </trkpt>
1895 <trkpt lat="3.61" lon="3.62"> <time>2006-01-03T02:00:24Z</time> </trkpt>
1896 <trkpt lat="3.71" lon="3.72"> <time>2006-01-03T02:00:25Z</time> </trkpt>
1897 <trkpt lat="3.81" lon="3.82"> <time>2006-01-03T02:00:26Z</time> </trkpt>
1903 "Subtract one second from gpsml input, output GPX, use long option",
1908 testcmd
("$CMD -T 0 -o pgtab multitrack-pause.gpx", # {{{
1910 2006-01-01T00:00:00Z\t(1.11,1.12)\t\\N\t\\N\t\\N\t\\N
1911 2006-01-01T00:00:01Z\t(1.21,1.22)\t\\N\t\\N\t\\N\t\\N
1912 2006-01-01T00:00:02Z\t(1.31,1.32)\t\\N\t\\N\t\\N\t\\N
1913 2006-01-02T00:00:00Z\t(2.11,2.12)\t\\N\t\\N\t\\N\t\\N
1914 2006-01-02T00:00:04Z\t(2.21,2.22)\t\\N\t\\N\t\\N\t\\N
1915 2006-01-02T00:00:16Z\t(2.31,2.32)\t\\N\t\\N\t\\N\t\\N
1916 2006-01-02T01:00:16Z\t(2.41,2.42)\t\\N\t\\N\t\\N\t\\N
1917 2006-01-02T01:00:17Z\t(2.451,2.452)\t\\N\t\\N\t\\N\t\\N
1918 2006-01-03T02:00:20Z\t(3.11,3.12)\t\\N\t\\N\t\\N\t\\N
1919 2006-01-03T02:00:21Z\t(3.21,3.22)\t\\N\t\\N\t\\N\t\\N
1920 2006-01-03T02:00:22Z\t(3.31,3.32)\t\\N\t\\N\t\\N\t\\N
1921 2006-01-03T02:00:23Z\t(3.41,3.42)\t\\N\t\\N\t\\N\t\\N
1922 2006-01-03T02:00:24Z\t(3.51,3.52)\t\\N\t\\N\t\\N\t\\N
1923 2006-01-03T02:00:25Z\t(3.61,3.62)\t\\N\t\\N\t\\N\t\\N
1924 2006-01-03T02:00:26Z\t(3.71,3.72)\t\\N\t\\N\t\\N\t\\N
1925 2006-01-03T02:00:27Z\t(3.81,3.82)\t\\N\t\\N\t\\N\t\\N
1928 "Read GPX, time-shift 0 seconds, output pgtab",
1933 # --time-shift option }}}
1934 diag
("Testing -v (--verbose) option..."); # {{{
1935 likecmd
("$CMD -hv", # {{{
1936 '/^\n\S+ v\d\.\d\d\n/s',
1938 "Option --version with -h returns version number and help screen",
1942 diag
("Testing --version option..."); # {{{
1943 likecmd
("$CMD --version", # {{{
1944 '/^\S+ v\d\.\d\d\n/',
1946 "Option --version returns version number",
1950 # --version option }}}
1951 # ---version option }}}
1952 diag
("Testing --strip-whitespace option..."); # {{{
1953 testcmd
("../gpst -w -o gpx pause-noname.gpx", # {{{
1955 $stripped_gpx_header
1958 <trkpt lat="60.425494" lon="5.299534"><ele>25.26</ele><time>2006-05-21T16:49:11Z</time></trkpt>
1959 <trkpt lat="60.425464" lon="5.29961"><ele>24.931</ele><time>2006-05-21T16:49:46Z</time></trkpt>
1960 <trkpt lat="60.425314" lon="5.299694"><ele>27.975</ele><time>2006-05-21T16:52:04Z</time></trkpt>
1961 <trkpt lat="60.425384" lon="5.299741"><ele>31.017</ele><time>2006-05-21T16:56:36Z</time></trkpt>
1962 <trkpt lat="60.425339" lon="5.299958"><ele>30.98</ele><time>2006-05-21T16:56:47Z</time></trkpt>
1963 <trkpt lat="60.425238" lon="5.29964"><ele>30.538</ele><time>2006-05-21T16:56:56Z</time></trkpt>
1964 <trkpt lat="60.425246" lon="5.299686"><ele>30.515</ele><time>2006-05-21T16:57:03Z</time></trkpt>
1965 <trkpt lat="60.425345" lon="5.299773"><ele>31.936</ele><time>2006-05-21T16:59:08Z</time></trkpt>
1966 <trkpt lat="60.425457" lon="5.299419"><ele>31.794</ele><time>2006-05-21T17:00:54Z</time></trkpt>
1972 "Strip whitespace from GPX output",
1977 testcmd
("../gpst -o gpx -w comments.mayko", # {{{
1979 $stripped_gpx_header
1982 <trkpt lat="70.6800486" lon="23.6746151"><time>2002-12-22T21:42:24Z</time></trkpt>
1983 <trkpt lat="70.6799322" lon="23.6740038"><time>2002-12-22T21:42:32Z</time></trkpt>
1984 <trkpt lat="70.6796266" lon="23.6723991"><time>2002-12-22T21:42:54Z</time></trkpt>
1985 <!-- <trkpt lat="70.6796266" lon="23.6723991"><time>2002-12-22T21:43:51Z</time><extensions><error>desc</error></extensions></trkpt> -->
1986 <!-- <trkpt lat="70.6796266" lon="23.6723991"><time>2002-12-22T21:43:52Z</time><extensions><error>desc</error></extensions></trkpt> -->
1987 <!-- <trkpt lat="70.6796266" lon="23.6723991"><time>2002-12-22T21:43:54Z</time><extensions><error>desc</error></extensions></trkpt> -->
1988 <trkpt lat="70.6800774" lon="23.6757566"><time>2002-12-22T21:44:45Z</time></trkpt>
1991 <trkpt lat="70.6801502" lon="23.6753442"><time>2002-12-22T21:44:52Z</time></trkpt>
1992 <trkpt lat="70.6801905" lon="23.6757542"><time>2002-12-22T21:45:04Z</time></trkpt>
1998 "Output whitespace-stripped GPX from Mayko file with commented-out lines",
2003 testcmd
("../gpst -w -o pgwupd multitrack.gpx", # {{{
2006 UPDATE logg SET name = clname(coor) WHERE (point(51.477880000,-0.001470000) <-> coor) < 0.05;
2007 UPDATE logg SET dist = cldist(coor) WHERE (point(51.477880000,-0.001470000) <-> coor) < 0.05;
2010 UPDATE logg SET name = clname(coor) WHERE (point(51.532030,-0.177330) <-> coor) < 0.05;
2011 UPDATE logg SET dist = cldist(coor) WHERE (point(51.532030,-0.177330) <-> coor) < 0.05;
2014 UPDATE logg SET name = clname(coor) WHERE (point(61.636684,8.312254) <-> coor) < 0.05;
2015 UPDATE logg SET dist = cldist(coor) WHERE (point(61.636684,8.312254) <-> coor) < 0.05;
2018 UPDATE logg SET name = clname(coor) WHERE (point(60.397460000,5.350610000) <-> coor) < 0.05;
2019 UPDATE logg SET dist = cldist(coor) WHERE (point(60.397460000,5.350610000) <-> coor) < 0.05;
2022 UPDATE logg SET name = clname(coor) WHERE (point(51.510130000,-0.130410000) <-> coor) < 0.05;
2023 UPDATE logg SET dist = cldist(coor) WHERE (point(51.510130000,-0.130410000) <-> coor) < 0.05;
2026 UPDATE logg SET name = clname(coor) WHERE (point(60.968540000,9.285350000) <-> coor) < 0.05;
2027 UPDATE logg SET dist = cldist(coor) WHERE (point(60.968540000,9.285350000) <-> coor) < 0.05;
2031 "Strip whitespace from pgwupd output",
2036 # --strip-whitespace option }}}
2037 diag
("Testing --double-y-scale option..."); # {{{
2038 testcmd
("../gpst -y -o clean pause.gpx", # {{{
2040 5.299534\t120.850988\t25.26
2041 5.29961\t120.850928\t24.931
2042 5.299694\t120.850628\t27.975
2043 5.299741\t120.850768\t31.017
2044 5.299958\t120.850678\t30.98
2045 5.29964\t120.850476\t30.538
2046 5.299686\t120.850492\t30.515
2047 5.299773\t120.85069\t31.936
2048 5.299419\t120.850914\t31.794
2051 "Double y scale, clean output from gpx format",
2056 testcmd
("../gpst -y -o clean log.dos.mayko", # {{{
2058 8.1225077\t116.3636316\t
2059 8.12532\t116.3637424\t
2060 8.1266031\t116.3632694\t
2061 8.1284612\t116.3624198\t
2062 8.129395\t116.362063\t
2063 8.13074\t116.3619242\t
2066 "Double y scale, clean output from mayko format",
2071 # --double-y-scale option }}}
2072 diag
("Testing --debug option..."); # {{{
2073 # --debug option }}}
2074 diag
("Strip error from Mayko format..."); # {{{
2076 testcmd
("../gpst -o csv date_error.mayko", # {{{
2078 2003-06-13T09:12:36Z\t5.5794667\t60.4280897\t\t
2079 2003-06-13T09:12:38Z\t5.5802255\t60.4281867\t\t
2080 2003-06-13T09:12:41Z\t5.5813636\t60.428332\t\t
2081 2003-06-13T09:12:42Z\t5.581743\t60.4283806\t\t
2084 "Strip error from mayko format in csv output",
2089 testcmd
("../gpst -o clean date_error.mayko", # {{{
2091 5.5794667\t60.4280897\t
2092 5.5802255\t60.4281867\t
2093 5.5813636\t60.428332\t
2094 5.581743\t60.4283806\t
2097 "Strip error from mayko format in clean output",
2102 testcmd
("../gpst -o gpsml date_error.mayko", # {{{
2104 <?xml version="1.0" encoding="UTF-8"?>
2107 <tp> <time>2003-06-13T09:12:36Z</time> <lat>60.4280897</lat> <lon>5.5794667</lon> </tp>
2108 <tp> <time>2003-06-13T09:12:38Z</time> <lat>60.4281867</lat> <lon>5.5802255</lon> </tp>
2109 <etp err="error"> <time>2037-06-25T17:19:22Z</time> <lat>103.4034054</lat> <lon>129.7271053</lon> </etp>
2110 <tp> <time>2003-06-13T09:12:41Z</time> <lat>60.428332</lat> <lon>5.5813636</lon> </tp>
2111 <tp> <time>2003-06-13T09:12:42Z</time> <lat>60.4283806</lat> <lon>5.581743</lon> </tp>
2116 "Strip error from mayko format in gpsml output",
2121 testcmd
("../gpst -o gpx date_error.mayko", # {{{
2126 <trkpt lat="60.4280897" lon="5.5794667"> <time>2003-06-13T09:12:36Z</time> </trkpt>
2127 <trkpt lat="60.4281867" lon="5.5802255"> <time>2003-06-13T09:12:38Z</time> </trkpt>
2128 <!-- <trkpt lat="103.4034054" lon="129.7271053"> <time>2037-06-25T17:19:22Z</time> <extensions> <error>error</error> </extensions> </trkpt> -->
2129 <trkpt lat="60.428332" lon="5.5813636"> <time>2003-06-13T09:12:41Z</time> </trkpt>
2130 <trkpt lat="60.4283806" lon="5.581743"> <time>2003-06-13T09:12:42Z</time> </trkpt>
2136 "Strip error from mayko format in gpx output",
2141 testcmd
("../gpst -o gpstrans date_error.mayko", # {{{
2143 Format: DMS UTC Offset: 0.00 hrs Datum[100]: WGS 84
2144 T\t06/13/2003 09:12:36\t60\xB025'41.1"\t5\xB034'46.1"
2145 T\t06/13/2003 09:12:38\t60\xB025'41.5"\t5\xB034'48.8"
2146 T\t06/13/2003 09:12:41\t60\xB025'42.0"\t5\xB034'52.9"
2147 T\t06/13/2003 09:12:42\t60\xB025'42.2"\t5\xB034'54.3"
2150 "Strip error from mayko format in gpstrans output",
2155 testcmd
("../gpst -o pgtab date_error.mayko", # {{{
2157 2003-06-13T09:12:36Z\t(60.4280897,5.5794667)\t\\N\t\\N\t\\N\t\\N
2158 2003-06-13T09:12:38Z\t(60.4281867,5.5802255)\t\\N\t\\N\t\\N\t\\N
2159 2003-06-13T09:12:41Z\t(60.428332,5.5813636)\t\\N\t\\N\t\\N\t\\N
2160 2003-06-13T09:12:42Z\t(60.4283806,5.581743)\t\\N\t\\N\t\\N\t\\N
2163 "Strip error from mayko format in pgtab output",
2168 testcmd
("../gpst -o poscount date_error.mayko", # {{{
2170 5.5802255\t60.4281867\t1
2171 5.5817430\t60.4283806\t1
2172 5.5813636\t60.4283320\t1
2173 5.5794667\t60.4280897\t1
2176 "Strip error from mayko format in poscount output",
2181 testcmd
("../gpst -o xgraph date_error.mayko", # {{{
2183 5.5794667 60.4280897
2184 5.5802255 60.4281867
2189 "Strip error from mayko format in xgraph output",
2194 testcmd
("../gpst -o ygraph date_error.mayko", # {{{
2197 5.5794667 60.4280897
2200 5.5802255 60.4281867
2203 5.5813636 60.4283320
2206 5.5817430 60.4283806
2210 "Strip error from mayko format in ygraph output",
2216 # Strip error from Mayko format }}}
2221 if ($Opt{'all'} || $Opt{'todo'}) {
2222 diag
("Running TODO tests..."); # {{{
2225 local $TODO = "Fix read/write of GPX name element";
2226 testcmd
("../gpst -o gpx pause.gpx", # {{{
2230 <name>ACTIVE LOG164705</name>
2232 <trkpt lat="60.425494" lon="5.299534"> <ele>25.260</ele> <time>2006-05-21T16:49:11Z</time> </trkpt>
2233 <trkpt lat="60.425464" lon="5.29961"> <ele>24.931</ele> <time>2006-05-21T16:49:46Z</time> </trkpt>
2234 <trkpt lat="60.425314" lon="5.299694"> <ele>27.975</ele> <time>2006-05-21T16:52:04Z</time> </trkpt>
2235 <trkpt lat="60.425384" lon="5.299741"> <ele>31.017</ele> <time>2006-05-21T16:56:36Z</time> </trkpt>
2236 <trkpt lat="60.425339" lon="5.299958"> <ele>30.980</ele> <time>2006-05-21T16:56:47Z</time> </trkpt>
2237 <trkpt lat="60.425238" lon="5.29964"> <ele>30.538</ele> <time>2006-05-21T16:56:56Z</time> </trkpt>
2238 <trkpt lat="60.425246" lon="5.299686"> <ele>30.515</ele> <time>2006-05-21T16:57:03Z</time> </trkpt>
2239 <trkpt lat="60.425345" lon="5.299773"> <ele>31.936</ele> <time>2006-05-21T16:59:08Z</time> </trkpt>
2240 <trkpt lat="60.425457" lon="5.299419"> <ele>31.794</ele> <time>2006-05-21T17:00:54Z</time> </trkpt>
2246 "Read and write name element from/to GPX",
2251 local $TODO = "Remove extra \\n in the beginning";
2252 testcmd
("../gpst -o csv multitrack.gpx", # {{{
2254 2003-02-11T23:35:39Z\t-0.1448824\t51.4968266\t\t
2255 2003-02-11T23:35:49Z\t-0.1449938\t51.4968227\t\t
2256 2003-02-11T23:36:14Z\t-0.1453202\t51.496904\t\t
2258 2003-02-11T23:36:16Z\t-0.1453398\t51.4969214\t\t
2259 2003-02-11T23:36:31Z\t-0.1455514\t51.4969816\t\t
2260 2003-02-11T23:36:43Z\t-0.1457489\t51.4970224\t1000\t
2261 2003-02-11T23:36:50Z\t-0.1457804\t51.4970452\t\t
2263 2003-02-11T23:37:05Z\t-0.1458608\t51.497068\t\t
2264 2003-02-11T23:37:22Z\t-0.1460047\t51.4971658\t\t
2265 2003-02-11T23:37:36Z\t-0.1461614\t51.4972469\t\t
2267 2003-02-11T23:37:43Z\t-0.1462394\t51.4972731\t\t
2268 2003-02-11T23:38:04Z\t-0.1463232\t51.4973437\t\t
2269 2003-02-11T23:38:28Z\t-0.1462949\t51.4973337\t\t
2270 2003-02-11T23:38:34Z\t-0.1462825\t51.4973218\t\t
2271 2003-02-11T23:38:35Z\t-0.1462732\t51.4973145\t\t
2274 "Output csv format from multitrack.gpx",
2279 testcmd
("../gpst -o csv pause.gpx", # {{{
2281 2006-05-21T16:49:11Z\t5.299534\t60.425494\t25.26\t
2282 2006-05-21T16:49:46Z\t5.29961\t60.425464\t24.931\t
2283 2006-05-21T16:52:04Z\t5.299694\t60.425314\t27.975\t
2284 2006-05-21T16:56:36Z\t5.299741\t60.425384\t31.017\t
2285 2006-05-21T16:56:47Z\t5.299958\t60.425339\t30.98\t
2286 2006-05-21T16:56:56Z\t5.29964\t60.425238\t30.538\t
2287 2006-05-21T16:57:03Z\t5.299686\t60.425246\t30.515\t
2288 2006-05-21T16:59:08Z\t5.299773\t60.425345\t31.936\t
2289 2006-05-21T17:00:54Z\t5.299419\t60.425457\t31.794\t
2292 "Output csv format from pause.gpx",
2297 testcmd
("../gpst -e -o csv pause.gpx", # {{{
2299 1148230151\t5.299534\t60.425494\t25.26\t
2300 1148230186\t5.29961\t60.425464\t24.931\t
2301 1148230324\t5.299694\t60.425314\t27.975\t
2302 1148230596\t5.299741\t60.425384\t31.017\t
2303 1148230607\t5.299958\t60.425339\t30.98\t
2304 1148230616\t5.29964\t60.425238\t30.538\t
2305 1148230623\t5.299686\t60.425246\t30.515\t
2306 1148230748\t5.299773\t60.425345\t31.936\t
2307 1148230854\t5.299419\t60.425457\t31.794\t
2310 "csv format with epoch seconds from gpx",
2315 $TODO = "Tweak output";
2316 testcmd
("../gpst -o gpx multitrack-pause.gpsml", # {{{
2317 file_data
("multitrack-pause.gpx"),
2319 "Should be equal to multitrack-pause.gpx",
2328 diag
("Testing finished.");
2332 my ($Cmd, $Exp_stdout, $Exp_stderr, $Desc, $is_gpx) = @_;
2333 my $stderr_cmd = "";
2334 my $deb_str = $Opt{'debug'} ?
" --debug" : "";
2341 my $TMP_STDERR = "gpst-stderr.tmp";
2342 my $TMP_STDOUT = "gpst-stdout.tmp";
2343 defined($is_gpx) || die("$progname: testcmd(): $Desc: \$is_gpx not defined\n");
2345 if (defined($Exp_stderr) && !length($deb_str)) {
2346 $stderr_cmd = " 2>$TMP_STDERR";
2348 system("$Cmd$deb_str$stderr_cmd >$TMP_STDOUT");
2349 is
(file_data
($TMP_STDOUT), $Exp_stdout, $Txt);
2351 validate_gpx
($TMP_STDOUT, $Desc);
2353 if (defined($Exp_stderr)) {
2354 if (!length($deb_str)) {
2355 is
(file_data
($TMP_STDERR), $Exp_stderr, "$Txt (stderr)");
2356 unlink($TMP_STDERR);
2359 diag
("Warning: stderr not defined for '$Txt'");
2361 unlink($TMP_STDOUT);
2367 my ($Cmd, $Exp_stdout, $Exp_stderr, $Desc) = @_;
2368 my $stderr_cmd = "";
2369 my $deb_str = $Opt{'debug'} ?
" --debug" : "";
2376 my $TMP_STDERR = "gpst-stderr.tmp";
2378 if (defined($Exp_stderr) && !length($deb_str)) {
2379 $stderr_cmd = " 2>$TMP_STDERR";
2381 like
(`$Cmd$deb_str$stderr_cmd`, "$Exp_stdout", $Txt);
2382 if (defined($Exp_stderr)) {
2383 if (!length($deb_str)) {
2384 like
(file_data
($TMP_STDERR), "$Exp_stderr", "$Txt (stderr)");
2385 unlink($TMP_STDERR);
2388 diag
("Warning: stderr not defined for '$Txt'");
2394 # Return file content as a string {{{
2397 if (open(FP
, "<", $File)) {
2398 $Txt = join("", <FP
>);
2408 # Check that a file is valid GPX {{{
2409 my ($File, $Txt) = @_;
2410 my $TMP_VALID = "validate_result.tmp";
2411 my $Result = system("xmllint --noout --schema ../Tools/xsd/gpx/gpx-1.1.xsd $File 2>$TMP_VALID");
2412 is
($Result, 0, "GPX for \"$Txt\" validates");
2414 diag
(file_data
($TMP_VALID));
2421 # Print program version {{{
2422 print("$progname v$VERSION\n");
2427 # Send the help message to stdout {{{
2430 if ($Opt{'verbose'}) {
2436 Usage: $progname [options] [file [files [...]]]
2438 Contains tests for the gpst(1) program.
2443 Run all tests, also TODOs.
2447 Run only the TODO tests.
2449 Increase level of verbosity. Can be repeated.
2451 Print version information.
2453 Print debugging messages.
2461 # Print a status message to stderr based on verbosity level {{{
2462 my ($verbose_level, $Txt) = @_;
2464 if ($Opt{'verbose'} >= $verbose_level) {
2465 print(STDERR
"$progname: $Txt\n");
2472 # Plain Old Documentation (POD) {{{
2482 run-tests.pl [options] [file [files [...]]]
2486 Contains tests for the gpst(1) program.
2492 =item B<-a>, B<--all>
2494 Run all tests, also TODOs.
2496 =item B<-h>, B<--help>
2498 Print a brief help summary.
2500 =item B<-t>, B<--todo>
2502 Run only the TODO tests.
2504 =item B<-v>, B<--verbose>
2506 Increase level of verbosity. Can be repeated.
2510 Print version information.
2514 Print debugging messages.
2520 Made by Øyvind A. Holm S<E<lt>sunny@sunbase.orgE<gt>>.
2524 Copyleft © Øyvind A. Holm E<lt>sunny@sunbase.orgE<gt>
2525 This is free software; see the file F<COPYING> for legalese stuff.
2529 This program is free software: you can redistribute it and/or modify it
2530 under the terms of the GNU General Public License as published by the
2531 Free Software Foundation, either version 3 of the License, or (at your
2532 option) any later version.
2534 This program is distributed in the hope that it will be useful, but
2535 WITHOUT ANY WARRANTY; without even the implied warranty of
2536 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2537 See the GNU General Public License for more details.
2539 You should have received a copy of the GNU General Public License along
2541 If not, see L<http://www.gnu.org/licenses/>.
2551 # vim: set fenc=UTF-8 ft=perl fdm=marker ts=4 sw=4 sts=4 et fo+=w :