summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/gpx/gpx.test
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/gpx/gpx.test')
-rw-r--r--tcllib/modules/gpx/gpx.test317
1 files changed, 317 insertions, 0 deletions
diff --git a/tcllib/modules/gpx/gpx.test b/tcllib/modules/gpx/gpx.test
new file mode 100644
index 0000000..90b0442
--- /dev/null
+++ b/tcllib/modules/gpx/gpx.test
@@ -0,0 +1,317 @@
+# -*- tcl -*-
+# gpx.test: tests for the gpx package.
+#
+# Copyright (c) 2010-2015 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
+# All rights reserved.
+#
+# RCS: @(#) $Id: gpx.test,v 1.2 2010/07/10 15:58:23 andreas_kupries Exp $
+
+# -------------------------------------------------------------------------
+
+if {[file exists testutilities.tcl]} {
+ source testutilities.tcl
+} else {
+ source [file join \
+ [file dirname [file dirname [file join [pwd] [info script]]]] \
+ devtools testutilities.tcl]
+}
+
+testsNeedTcl 8.5
+testsNeedTcltest 2.0
+
+testsNeed tdom 0.8
+
+testing {
+ useLocal gpx.tcl gpx
+}
+# -------------------------------------------------------------------------
+
+set rawXML {<?xml version="1.0" encoding="UTF-8"?>
+<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1"
+ creator="ExpertGPS 3.80"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.topografix.com/GPX/gpx_overlay/0/3 http://www.topografix.com/GPX/gpx_overlay/0/3/gpx_overlay.xsd http://www.topografix.com/GPX/gpx_modified/0/1 http://www.topografix.com/GPX/gpx_modified/0/1/gpx_modified.xsd">
+ <metadata>
+ <name>Sample GPX file</name>
+ <desc>GPX data for testing</desc>
+ <author>
+ <name>Keith Vetter</name>
+ <email id="kvetter" domain="gmail.com"/>
+ <link href="http://www.klimb.org">
+ <text>KLIMB Bike Mapping program</text>
+ <type>text/html</type>
+ </link>
+ </author>
+ <copyright author="Keith Vetter">
+ <year>2010</year>
+ <license>http://anywhere.com</license>
+ </copyright>
+ <link href="http://www.garmin.com">
+ <text>Garmin International</text>
+ <type>text/html</type>
+ </link>
+ <time>2009-10-17T22:58:43Z</time>
+ <keywords>gpx test file</keywords>
+ </metadata>
+ <wpt lat="41.61629786" lon="-70.61782860">
+ <ele>33.531</ele>
+ <time>2010-06-17T16:02:28Z</time>
+ <name>Trail head</name>
+ </wpt>
+ <wpt lat="41.61794834" lon="-70.61709418">
+ <ele>31.128</ele>
+ <time>2010-06-17T16:06:58Z</time>
+ <name>Abandoned car</name>
+ </wpt>
+ <trk>
+ <name>First track</name>
+ <type>GPS Tracklog</type>
+ <trkseg>
+ <trkpt lat="41.61716028" lon="-70.61758477">
+ <ele>35.706</ele>
+ <time>2010-06-17T16:02:28Z</time>
+ </trkpt>
+ <trkpt lat="41.61718609" lon="-70.61757144">
+ <ele>36.667</ele>
+ <time>2010-06-17T16:02:40Z</time>
+ </trkpt>
+ <trkpt lat="41.61736211" lon="-70.61755426">
+ <ele>35.706</ele>
+ <time>2010-06-17T16:02:49Z</time>
+ </trkpt>
+ </trkseg>
+ </trk>
+ <trk>
+ <name>Second track</name>
+ <type>GPS Tracklog</type>
+ <trkseg>
+ <trkpt lat="41.64316086" lon="-70.60154080">
+ <ele>15.038</ele>
+ <time>2010-07-09T14:28:20Z</time>
+ </trkpt>
+ <trkpt lat="41.64325641" lon="-70.60175169">
+ <ele>13.596</ele>
+ <time>2010-07-09T14:28:32Z</time>
+ </trkpt>
+ </trkseg>
+ <trkseg>
+ <trkpt lat="41.64335188" lon="-70.60195579">
+ <ele>13.596</ele>
+ <time>2010-07-09T14:28:43Z</time>
+ </trkpt>
+ <trkpt lat="41.64339547" lon="-70.60203558">
+ <ele>13.596</ele>
+ <time>2010-07-09T14:28:48Z</time>
+ </trkpt>
+ <trkpt lat="41.64344785" lon="-70.60210507">
+ <ele>13.115</ele>
+ <time>2010-07-09T14:28:53Z</time>
+ </trkpt>
+ </trkseg>
+ </trk>
+ <rte>
+ <name>KLIMB Route 1</name>
+ <number>1</number>
+ <rtept lat="41.64383611111111" lon="-70.60295833333333">
+ <ele>21.6</ele>
+ <name>M1</name>
+ <desc><![CDATA[Node 1]]></desc>
+ <sym>Waypoint</sym>
+ <type>KLIMB node</type>
+ </rtept>
+ <rtept lat="41.64373333333333" lon="-70.6031611111111">
+ <ele>22.9</ele>
+ </rtept>
+ <rtept lat="41.64364166666667" lon="-70.60331388888888">
+ <ele>23.5</ele>
+ </rtept>
+ <rtept lat="41.643502777777776" lon="-70.60352777777777">
+ <ele>23.8</ele>
+ </rtept>
+ <rtept lat="41.64322222222222" lon="-70.603725">
+ <ele>23.5</ele>
+ </rtept>
+ <rtept lat="41.64293055555555" lon="-70.6038611111111">
+ <ele>23.5</ele>
+ <name>M2</name>
+ <desc><![CDATA[Node 2]]></desc>
+ <sym>Waypoint</sym>
+ <type>KLIMB node</type>
+ </rtept>
+ </rte>
+</gpx>}
+set gpxFile [tcltest::makeFile $rawXML testGPXfile.gpx]
+
+# -------------------------------------------------------------------------
+
+test gpx-1.0 {create error} -body {
+ gpx::Create
+} -returnCodes error \
+ -result {wrong # args: should be "gpx::Create gpxFilename ?rawXML?"}
+
+test gpx-1.1 {create error} -body {
+ gpx::Create F XML X
+} -returnCodes error \
+ -result {wrong # args: should be "gpx::Create gpxFilename ?rawXML?"}
+
+test gpx-2.0 {create & destroy} -body {
+ gpx::Cleanup [gpx::Create $gpxFile]
+} -result {}
+
+test gpx-2.1 {create & destroy} -body {
+ gpx::Cleanup [gpx::Create {} $rawXML]
+} -result {}
+
+# -------------------------------------------------------------------------
+#
+# GetGPXMetadata tests
+#
+set token [gpx::Create "" $rawXML]
+
+test gpx-3.0 {GetGPXMetadata simple} -body {
+ llength [gpx::GetGPXMetadata $token]
+} -result 18
+
+test gpx-3.1 {GetGPXMetadata item} -body {
+ dict get [gpx::GetGPXMetadata $token] version
+} -result {1.1}
+
+test gpx-3.2 {GetGPXMetadata complex item} -body {
+ dict get [gpx::GetGPXMetadata $token] link href
+} -result {http://www.garmin.com}
+
+# -------------------------------------------------------------------------
+#
+# Waypoint tests
+#
+test gpx-4.0 {GetWaypointCount} -body {
+ gpx::GetWaypointCount $token
+} -result {2}
+
+test gpx-4.1 {Waypoint location} -body {
+ lrange [lindex [gpx::GetAllWaypoints $token] 0] 0 1
+} -result {41.61629786 -70.61782860}
+
+test gpx-4.2 {first waypoint metadata} -body {
+ llength [lindex [gpx::GetAllWaypoints $token] 0 2]
+} -result 6
+
+test gpx-4.3 {first waypoint metadata item} -body {
+ dict get [lindex [gpx::GetAllWaypoints $token] 0 2] ele
+} -result {33.531}
+
+test gpx-4.4 {second waypoint metadata} -body {
+ llength [lindex [gpx::GetAllWaypoints $token] 1 2]
+} -result 6
+
+test gpx-4.5 {second waypoint metadata item} -body {
+ dict get [lindex [gpx::GetAllWaypoints $token] 1 2] name
+} -result {Abandoned car}
+
+#----------------------------------------------------------------------
+#
+# Track tests
+#
+
+test gpx-5.0 {track count} -body {
+ gpx::GetTrackCount $token
+} -result {2}
+
+test gpx-5.1 {track metadata} -body {
+ llength [gpx::GetTrackMetadata $token 1]
+} -result 4
+
+test gpx-5.2 {track metadata item} -body {
+ dict get [gpx::GetTrackMetadata $token 1] name
+} -result {First track}
+
+test gpx-5.3 {total track points} -body {
+ llength [gpx::GetTrackPoints $token 1]
+} -result {3}
+
+test gpx-5.4 {total track points second track} -body {
+ llength [gpx::GetTrackPoints $token 2]
+} -result {5}
+
+test gpx-5.5 {first track first point location} -body {
+ lrange [lindex [gpx::GetTrackPoints $token 1] 0] 0 1
+} -result {41.61716028 -70.61758477}
+
+test gpx-5.6 {first track first point metadata} -body {
+ llength [lindex [gpx::GetTrackPoints $token 1] 0 2]
+} -result 4
+
+test gpx-5.7 {first track first point metadata item} -body {
+ dict get [lindex [gpx::GetTrackPoints $token 1] 0 2] ele
+} -result {35.706}
+
+test gpx-5.8 {second track last point location} -body {
+ lrange [lindex [gpx::GetTrackPoints $token 2] end] 0 1
+} -result {41.64344785 -70.60210507}
+
+test gpx-5.9 {second track last point metadata} -body {
+ llength [lindex [gpx::GetTrackPoints $token 2] end 2]
+} -result 4
+
+test gpx-5.10 {second track last point metadata item} -body {
+ dict get [lindex [gpx::GetTrackPoints $token 2] end 2] ele
+} -result {13.115}
+
+#----------------------------------------------------------------------
+#
+# Route tests
+#
+
+test gpx-6.0 {route count} -body {
+ gpx::GetRouteCount $token
+} -result 1
+
+test gpx-6.1 {route metadata} -body {
+ llength [gpx::GetRouteMetadata $token 1]
+} -result 4
+
+test gpx-6.2 {route metadata item} -body {
+ dict get [gpx::GetRouteMetadata $token 1] name
+} -result {KLIMB Route 1}
+
+test gpx-6.3 {total route points} -body {
+ llength [gpx::GetRoutePoints $token 1]
+} -result 6
+
+test gpx-6.4 {route first point location} -body {
+ lrange [lindex [gpx::GetRoutePoints $token 1] 0] 0 1
+} -result {41.64383611111111 -70.60295833333333}
+
+test gpx-6.5 {route first point metadata} -body {
+ llength [lindex [gpx::GetRoutePoints $token 1] 0 2]
+} -result 10
+
+test gpx-6.6 {route first point metadata item} -body {
+ dict get [lindex [gpx::GetRoutePoints $token 1] 0 2] type
+} -result {KLIMB node}
+
+test gpx-6.7 {route second point metadata} -body {
+ llength [lindex [gpx::GetRoutePoints $token 1] 1 2]
+} -result 2
+
+test gpx-6.8 {route last point location} -body {
+ lrange [lindex [gpx::GetRoutePoints $token 1] end] 0 1
+} -result {41.64293055555555 -70.6038611111111}
+
+test gpx-6.8 {route last point metadata} -body {
+ llength [lindex [gpx::GetRoutePoints $token 1] end 2]
+} -result 10
+
+test gpx-6.9 {route last point metadata item} -body {
+ dict get [lindex [gpx::GetRoutePoints $token 1] end 2] desc
+} -result {Node 2}
+
+
+#----------------------------------------------------------------------
+gpx::Cleanup $token
+tcltest::removeFile $gpxFile
+unset rawXML gpxFile token
+
+#----------------------------------------------------------------------
+testsuiteCleanup
+return