Cucumber - Gooby Functional Tests
|
The following is the cucumber feature for testing Gooby functionality.
The test is invoked with command: cucumber features/gooby.feature
The matcher steps are implemented in ruby code.
|
Feature: Using Gooby
In order to generate maps with Gooby
From data recorded on a Garmin GPS device, or the MotionX app on an iPhone
We get the raw GPS data recorded from the device
then parse the raw GPS data into a "gooby standard" CSV format
then generate Google HTML maps from the CSV files
then generate Google Earth KML maps from the same CSV files
then enjoy viewing the maps and seeing where we've been.
Scenario: Setup the environment and directories for the scenarios that follow
Given GOOBY_HOME is set to '/Users/cjoakim/projects/github/cjoakim/gooby2'
And an empty csv directory within GOOBY_HOME
And an empty out directory within GOOBY_HOME
And an empty tmp directory within GOOBY_HOME
And an empty splits directory within GOOBY_HOME
And file 'gooby_davidson1.kmz' does not exist within GOOBY_HOME
Scenario: Generate the Gooby help content
When rake task 'gooby:help' is executed
Then the output contains 126 lines, within a tolerance of 2
And the following lines are expected
And line: Gooby = Google APIs + Ruby. Copyright 2009 by Chris Joakim.
And line: Gooby is available under GNU General Public License (GPL) license.
And line: Version 2.0.0
And line: Directory Structure:
And line: {GOOBY_HOME} Your chosen directory on your computer in which to store Gooby files.
And line: You must set the "GOOBY_HOME" environment variable on your computer to this
And line: chosen directory name.
And line: {GOOBY_HOME}/config Contains configuration files in yaml format.
And line: File /config/gooby_config.yaml is the "base" configuration file, and is read first.
And line: This file typically remains unchanged after your intial edits to it. Be sure to
And line: set "gmap_key" to your Google Maps key, and "gmap_icon_url_base" to the URL on
And line: your site where the map icon images are located.
And line: You should create one "map-specific" yaml file for each map you wish to create.
And line: It "inherits" all entries from the base configuration file, gooby_config.yaml.
And line: So just specify the additions or overrides in your map-specific yaml files.
And line: This design allows you generate your various maps, without having to frequently
And line: reset the values the the base configuration file.
And line: {GOOBY_HOME}/csv Gooby places CSV data files in this directory. All Gooby parsers create a
And line: standard CSV format that you can use to generate either Google maps or Google Earth
And line: maps with.
And line: {GOOBY_HOME}/data You place data files from your desktop GPS software here.
And line: {GOOBY_HOME}/out Gooby places generated Google Map html files and Google Earth kml files here.
And line: {GOOBY_HOME}/out/images Standard set of images here which are used in the generated html & kml files.
And line: Add your own images here, or replace the existing ones, as necessary.
And line: {GOOBY_HOME}/samples Contains a set of sample files for your reference.
And line: {GOOBY_HOME}/splits Gooby places individual 'activity xml files' here, split-out from a large tcx file.
And line: {GOOBY_HOME}/tmp Temporary files.
And line: List of Gooby commands (in order of typical usage):
And line: rake # Default task; same as 'rake gooby:help'.
And line: rake gooby:help # Display Gooby usage instructions.
And line: rake gooby:extract_activities_from_tcx # Extract individual Activity xml files from a Garmin tcx file
And line: rake gooby:parse_activity_xml_to_csv # Parse an extracted Activity xml file to a corresponding csv file.
And line: rake gooby:parse_track_log_to_csv # Parse a GPS Track Log file a corresponding csv file.
And line: rake gooby:parse_gpx_to_csv # Parse a *.gpx file into a corresponding csv file.
And line: rake gooby:generate_google_map # Generate a Google Map from a csv file.
And line: rake gooby:generate_google_earth_map # Generate a Google Earth kml file from a csv file, with optional
And line: kmz file generation.
And line: Gooby Command Detail:
And line: command: rake gooby:help
And line: description: Displays help information for each Gooby command.
And line: command: rake gooby:extract_activities_from_tcx
And line: description: Splits the potentially huge Garmin Training Center tcx file into individual
And line: Activity xml files, and places these in the /splits directory. Each has a filename
And line: based on the starting date/time of the activity.
And line: parameters: tcx_file - The input file, created by exporting from Garmin Training Center.
And line: Defaults to 'data/current.tcx' in your GOOBY_HOME directory.
And line: command: rake gooby:parse_activity_xml_to_csv
And line: description: Parse an extracted Activity xml 'split' file to a corresponding csv file.
And line: example: rake gooby:parse_activity_xml_to_csv config_file=config/big_sur_marathon.yaml
And line: command: rake gooby:parse_gpx_to_csv
And line: description: Parse a *.gpx file into a corresponding csv file.
And line: example: rake gooby:parse_gpx_to_csv config_file=config/ballantyne.yaml
And line: command: rake gooby:parse_track_log_to_csv
And line: description: Parse an extracted 'GPS Tracks Log' file from MacGpsPro into csv format.
And line: note 2: It is strongly recommended that you manually copy the 'GPS Tracks Log' file
And line: from your MacGpsPro installation to the GOOBY_HOME/data directory, and rename it to
And line: 'gps_track_logs.txt', before running this command. Then manually edit out the lines
And line: not pertinent to the map you want to generate.
And line: note 3: I use MacGpsPro to read the GPS data from my Garmin eTrex Venture device, since the
And line: Garmin Training Center software does not support this device.
And line: example: rake gooby:parse_track_log_to_csv config_file=config/crowders_mtn_hike.yaml
And line: command: rake gooby:generate_google_map
And line: description: Generate a Google Map html file from a csv file.
And line: example: rake gooby:generate_google_map config_file=config/big_sur_marathon.yaml
And line: command: rake gooby:generate_google_earth_map
And line: description: Generate a Google Earth kml file from a csv file.
And line: note 2: Gooby will optionally create a kmz file for you. A kmz file is essentially a
And line: zip file, which contains your kml file(s), as well as any associated files such
And line: as images. Two parameters are required in your yaml config file for kmz generation:
And line: 'kmz_build' must be set to true, and 'kmz_build_command' must be the appropriate
And line: zip-creating command for your operating system and set of installed software.
And line: A Mac OS/X example command is: zip -r gooby_big_sur.kmz .
And line: example: rake gooby:generate_google_earth_map config_file=config/big_sur_marathon.yaml
And line: Your GOOBY_HOME directory is currently set to
And the output contains the expected lines
Scenario: Split a large TCX file exported from Garmin Training Center
Given we imported the data from our Garmin GPS device model 305 into Garmin Training Center
And exported the data from Garmin Training Center to a TCX file
And the TCX file is named 'data/current.tcx'
When rake task 'gooby:extract_activities_from_tcx' is executed
Then the splits directory contains at least 15 files matching name '2009'
And the splits directory contains at least 90 files matching name '2008'
And the splits directory contains at least 100 files matching name '2007'
And these activity xml files exist:
| file | lines |
| splits/2008_04_27_13_49_50_tcx.xml | 24560 |
| splits/2009_01_01_14_45_00_tcx.xml | 10630 |
Scenario: Parse an activity xml file to csv
Given the config file we use is 'config/big_sur_marathon.yaml'
When rake task 'gooby:parse_activity_xml_to_csv' is executed
Then the CSV file 'csv/2008_04_27_13_49_50_tcx.csv' is created
And the CSV file contains 2449 trackpoints
And the CSV file contains these trackpoints:
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2008-04-27T13:49:50Z | 36.247196 | -121.781665 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 1800 | 2008-04-27T15:50:22Z | 36.460703 | -121.924925 | 20.0004984569685 | 3:03:46 | 6.530 | 9:11.29 |
| 2449 | 2008-04-27T17:09:28Z | 36.538656 | -121.91085 | 26.3666472682879 | 4:05:34 | 6.442 | 9:18.81 |
Scenario: Parse a track log file to csv
Given the config file we use is 'config/crowders_mtn_hike.yaml'
When rake task 'gooby:parse_track_log_to_csv' is executed
Then the CSV file 'csv/crowders_mtn_hike.csv' is created
And the CSV file contains 1065 trackpoints
And the CSV file contains these trackpoints:
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2008-11-16T08:43:06Z | 35.21357 | -81.29359 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 1065 | 2008-11-16T14:46:11Z | 35.26834 | -81.25154 | 15.0878648193097 | 6:03:05 | 2.493 | 24:03.88 |
Scenario: Parse a gpx file to csv
Given the config file we use is 'config/ballantyne.yaml'
When rake task 'gooby:parse_gpx_to_csv' is executed
Then the CSV file 'csv/ballantyne.csv' is created
And the CSV file contains 27 trackpoints
And the CSV file contains these trackpoints:
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2009-05-14T22:08:50Z | 35.062748 | -80.85562 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 27 | 2009-05-14T22:10:43Z | 35.062613 | -80.855448 | 0.0783970446562321 | 0:01:53 | 2.498 | 24:01.38 |
Scenario: Generate a Big Sur Marathon Google map in html format
Given the config file we use is 'config/big_sur_marathon.yaml'
When rake task 'gooby:generate_google_map' is executed
Then the HTML file 'out/big_sur_marathon.html' is created
And the HTML file contains 2766 lines
And the following lines are expected
And line: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
And line: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
And line: <html xmlns="http://www.w3.org/1999/xhtml">
And line: <head>
And line: <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
And line: <meta name="description" content="Google Map generated by Gooby version 2.0.0">
And line: <meta name="keywords" content="Google Map Generated by Gooby version 2.0.0">
And line: <title> Big Sur Marathon </title>
And line: <script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA
And line: <script type="text/javascript">
And line: //<![CDATA[
And line: function load() {
And line: if (GBrowserIsCompatible()) {
And line: var map = new GMap2(document.getElementById("map"));
And line: map.addControl(new GLargeMapControl());
And line: map.addControl(new GMapTypeControl());
And line: var centerPoint = new GLatLng(36.392926, -121.8600045);
And line: map.setCenter(centerPoint, 11);
And line: var points = new Array();
And line: points.push(new GLatLng(36.247196,-121.781665));
And line: // points.push(new GLatLng(36.247208,-121.78167));
And line: points.push(new GLatLng(36.538656,-121.91085));
And line: // app_max=200.0 ratio=12.245 increment=12
And line: var routePolyline = new GPolyline(points);
And line: map.addOverlay(routePolyline);
And line: // Create a base icon for all of our markers that specifies the
And line: // shadow, icon dimensions, etc.
And line: var baseIcon = new GIcon();
And line: baseIcon.shadow = "images/shadow50.png";
And line: baseIcon.iconSize = new GSize(20, 34);
And line: baseIcon.shadowSize = new GSize(37, 34);
And line: baseIcon.iconAnchor = new GPoint(9, 34);
And line: baseIcon.infoWindowAnchor = new GPoint(9, 2);
And line: baseIcon.infoShadowAnchor = new GPoint(18, 25);
And line: var iconStart = new GIcon(baseIcon);
And line: iconStart.image = "images/dd-start.png";
And line: var pStart = new GPoint(-121.781665, 36.247196);
And line: var mStart = new GMarker(pStart, iconStart);
And line: GEvent.addListener(mStart, "click", function() {
And line: mStart.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Start!</b>
And line: map.addOverlay(mStart);
And line: var icon1 = new GIcon(baseIcon);
And line: icon1.image = "images/marker1.png";
And line: var p1 = new GPoint(-121.788872, 36.259338);
And line: var m1 = new GMarker(p1, icon1);
And line: GEvent.addListener(m1, "click", function() {
And line: m1.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 1</b>
And line: map.addOverlay(m1);
And line: var icon26 = new GIcon(baseIcon);
And line: icon26.image = "images/marker26.png";
And line: var p26 = new GPoint(-121.914424, 36.534368);
And line: var m26 = new GMarker(p26, icon26);
And line: GEvent.addListener(m26, "click", function() {
And line: m26.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 26</b>
And line: map.addOverlay(m26);
And line: var iconFinish = new GIcon(baseIcon);
And line: iconFinish.image = "images/dd-end.png";
And line: var pFinish = new GPoint(-121.91085, 36.538656);
And line: var mFinish = new GMarker(pFinish, iconFinish);
And line: GEvent.addListener(mFinish, "click", function() {
And line: mFinish.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Finish!</b>
And line: map.addOverlay(mFinish);
And line: </script>
And line: </head>
And line: <body onload="load()" onunload="GUnload()">
And line: <center>
And line: <h3> Big Sur Marathon </h3>
And line: <div id="map" style="width: 1500px; height: 800px"></div>
And line: <div id="messages"></div>
And line: </center>
And line: </body>
And line: </html>
And the HTML contains the expected lines
Scenario: Generate a Big Sur Marathon Google Earth map in kml format
Given the config file we use is 'config/big_sur_marathon.yaml'
When rake task 'gooby:generate_google_earth_map' is executed
Then the KML file 'out/big_sur_marathon.kml' is created
And the KML file contains 685 lines
And the following lines are expected
And line: <?xml version="1.0" encoding="UTF-8"?>
And line: <kml xmlns="http://www.opengis.net/kml/2.2">
And line: <Document>
And line: <!-- kml file generated by Gooby version 2.0.0 -->
And line: <name>Big Sur Marathon</name>
And line: <Style id="goobyStyle">
And line: <name>Start</name>
And line: <description><table align='left'><tr><td colspan='2'><b>Start!</b>
And line: <href>images/dd-start.png</href>
And line: <coordinates>-121.781665,36.247196,1</coordinates>
And line: <name>Finish</name>
And line: <description><table align='left'><tr><td colspan='2'><b>Finish!</b>
And line: <href>images/dd-end.png</href>
And line: <coordinates>-121.91085,36.538656,1</coordinates>
And line: <visibility>1</visibility>
And line: <description>Route</description>
And line: <styleUrl>#goobyStyle</styleUrl>
And line: <LineString>
And line: <tessellate>1</tessellate>
And line: <altitudeMode>relativeToGround</altitudeMode>
And line: <coordinates>
And line: -121.781665,36.247196,1
And line: -121.782714,36.248216,1
And line: -121.784484,36.249009,1
And line: -121.912713,36.536075,1
And line: -121.911365,36.537773,1
And line: -121.91085,36.538656,1
And line: </coordinates>
And line: </LineString>
And line: </Placemark>
And line: </Document>
And line: </kml>
And the KML contains the expected lines
Scenario: Parse the Davidson 11-miler activity xml file to csv
Given the config file we use is 'config/davidson1.yaml'
When rake task 'gooby:parse_activity_xml_to_csv' is executed
Then the CSV file 'csv/davidson1.csv' is created
And the CSV file contains 1060 trackpoints
And the CSV file contains these trackpoints:
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2009-01-01T14:45:00Z | 35.495525 | -80.83215 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 1060 | 2009-01-01T16:25:22Z | 35.495495 | -80.832109 | 11.0685814547597 | 1:40:22 | 6.617 | 9:04.06 |
And we edit CSV file 'csv/davidson1.csv' to contain only point number 1
Scenario: Generate a single-point Google map in html format
Given the config file we use is 'config/davidson1.yaml'
When rake task 'gooby:generate_google_map' is executed
Then the HTML file 'out/davidson1.html' is created
And the HTML file contains 75 lines
Scenario: Generate a single-point Google Earth map in kmz format
Given the config file we use is 'config/davidson1.yaml'
When rake task 'gooby:generate_google_earth_map' is executed
Then the KML file 'out/doc.kml' is created
And the KML file contains 49 lines
Then the KMZ file 'gooby_davidson1.kmz' is created
Scenario: Generate a Crowders Mt. Hike Google map in html format from Garmin eTrex Venture source data
Given the config file we use is 'config/crowders_mtn_hike.yaml'
When rake task 'gooby:generate_google_map' is executed
Then the HTML file 'out/crowders_mtn_hike.html' is created
And the HTML file contains 1283 lines
Scenario: Generate a Google Earth map in kml format from iPhone & MotionX app source data
Given the config file we use is 'config/ballantyne.yaml'
When rake task 'gooby:generate_google_earth_map' is executed
Then the KML file 'out/ballantyne.kml' is created
And the KML file contains 91 lines
Scenario: Save the generated files for packaging in the gooby gem
Then copy the generated files to the samples directory
|
| ...and this is the output of the above test: |
Feature: Using Gooby
In order to generate maps with Gooby
From data recorded on a Garmin GPS device, or the MotionX app on an iPhone
We get the raw GPS data recorded from the device
then parse the raw GPS data into a "gooby standard" CSV format
then generate Google HTML maps from the CSV files
then generate Google Earth KML maps from the same CSV files
then enjoy viewing the maps and seeing where we've been.
Scenario: Setup the environment and directories for the scenarios that follow # features/gooby.feature:10
Given GOOBY_HOME is set to '/Users/cjoakim/projects/github/cjoakim/gooby2' # features/steps/gooby_steps.rb:14
And an empty csv directory within GOOBY_HOME # features/steps/gooby_steps.rb:36
And an empty out directory within GOOBY_HOME # features/steps/gooby_steps.rb:36
And an empty tmp directory within GOOBY_HOME # features/steps/gooby_steps.rb:36
And an empty splits directory within GOOBY_HOME # features/steps/gooby_steps.rb:36
And file 'gooby_davidson1.kmz' does not exist within GOOBY_HOME # features/steps/gooby_steps.rb:42
Scenario: Generate the Gooby help content # features/gooby.feature:18
When rake task 'gooby:help' is executed # features/steps/gooby_steps.rb:50
Then the output contains 126 lines, within a tolerance of 2 # features/steps/gooby_steps.rb:117
And the following lines are expected # features/steps/gooby_steps.rb:78
And line: Gooby = Google APIs + Ruby. Copyright 2009 by Chris Joakim. # features/steps/gooby_steps.rb:82
And line: Gooby is available under GNU General Public License (GPL) license. # features/steps/gooby_steps.rb:82
And line: Version 2.0.0 # features/steps/gooby_steps.rb:82
And line: Directory Structure: # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME} Your chosen directory on your computer in which to store Gooby files. # features/steps/gooby_steps.rb:82
And line: You must set the "GOOBY_HOME" environment variable on your computer to this # features/steps/gooby_steps.rb:82
And line: chosen directory name. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/config Contains configuration files in yaml format. # features/steps/gooby_steps.rb:82
And line: File /config/gooby_config.yaml is the "base" configuration file, and is read first. # features/steps/gooby_steps.rb:82
And line: This file typically remains unchanged after your intial edits to it. Be sure to # features/steps/gooby_steps.rb:82
And line: set "gmap_key" to your Google Maps key, and "gmap_icon_url_base" to the URL on # features/steps/gooby_steps.rb:82
And line: your site where the map icon images are located. # features/steps/gooby_steps.rb:82
And line: You should create one "map-specific" yaml file for each map you wish to create. # features/steps/gooby_steps.rb:82
And line: It "inherits" all entries from the base configuration file, gooby_config.yaml. # features/steps/gooby_steps.rb:82
And line: So just specify the additions or overrides in your map-specific yaml files. # features/steps/gooby_steps.rb:82
And line: This design allows you generate your various maps, without having to frequently # features/steps/gooby_steps.rb:82
And line: reset the values the the base configuration file. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/csv Gooby places CSV data files in this directory. All Gooby parsers create a # features/steps/gooby_steps.rb:82
And line: standard CSV format that you can use to generate either Google maps or Google Earth # features/steps/gooby_steps.rb:82
And line: maps with. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/data You place data files from your desktop GPS software here. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/out Gooby places generated Google Map html files and Google Earth kml files here. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/out/images Standard set of images here which are used in the generated html & kml files. # features/steps/gooby_steps.rb:82
And line: Add your own images here, or replace the existing ones, as necessary. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/samples Contains a set of sample files for your reference. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/splits Gooby places individual 'activity xml files' here, split-out from a large tcx file. # features/steps/gooby_steps.rb:82
And line: {GOOBY_HOME}/tmp Temporary files. # features/steps/gooby_steps.rb:82
And line: List of Gooby commands (in order of typical usage): # features/steps/gooby_steps.rb:82
And line: rake # Default task; same as 'rake gooby:help'. # features/steps/gooby_steps.rb:82
And line: rake gooby:help # Display Gooby usage instructions. # features/steps/gooby_steps.rb:82
And line: rake gooby:extract_activities_from_tcx # Extract individual Activity xml files from a Garmin tcx file # features/steps/gooby_steps.rb:82
And line: rake gooby:parse_activity_xml_to_csv # Parse an extracted Activity xml file to a corresponding csv file. # features/steps/gooby_steps.rb:82
And line: rake gooby:parse_track_log_to_csv # Parse a GPS Track Log file a corresponding csv file. # features/steps/gooby_steps.rb:82
And line: rake gooby:parse_gpx_to_csv # Parse a *.gpx file into a corresponding csv file. # features/steps/gooby_steps.rb:82
And line: rake gooby:generate_google_map # Generate a Google Map from a csv file. # features/steps/gooby_steps.rb:82
And line: rake gooby:generate_google_earth_map # Generate a Google Earth kml file from a csv file, with optional # features/steps/gooby_steps.rb:82
And line: kmz file generation. # features/steps/gooby_steps.rb:82
And line: Gooby Command Detail: # features/steps/gooby_steps.rb:82
And line: command: rake gooby:help # features/steps/gooby_steps.rb:82
And line: description: Displays help information for each Gooby command. # features/steps/gooby_steps.rb:82
And line: command: rake gooby:extract_activities_from_tcx # features/steps/gooby_steps.rb:82
And line: description: Splits the potentially huge Garmin Training Center tcx file into individual # features/steps/gooby_steps.rb:82
And line: Activity xml files, and places these in the /splits directory. Each has a filename # features/steps/gooby_steps.rb:82
And line: based on the starting date/time of the activity. # features/steps/gooby_steps.rb:82
And line: parameters: tcx_file - The input file, created by exporting from Garmin Training Center. # features/steps/gooby_steps.rb:82
And line: Defaults to 'data/current.tcx' in your GOOBY_HOME directory. # features/steps/gooby_steps.rb:82
And line: command: rake gooby:parse_activity_xml_to_csv # features/steps/gooby_steps.rb:82
And line: description: Parse an extracted Activity xml 'split' file to a corresponding csv file. # features/steps/gooby_steps.rb:82
And line: example: rake gooby:parse_activity_xml_to_csv config_file=config/big_sur_marathon.yaml # features/steps/gooby_steps.rb:82
And line: command: rake gooby:parse_gpx_to_csv # features/steps/gooby_steps.rb:82
And line: description: Parse a *.gpx file into a corresponding csv file. # features/steps/gooby_steps.rb:82
And line: example: rake gooby:parse_gpx_to_csv config_file=config/ballantyne.yaml # features/steps/gooby_steps.rb:82
And line: command: rake gooby:parse_track_log_to_csv # features/steps/gooby_steps.rb:82
And line: description: Parse an extracted 'GPS Tracks Log' file from MacGpsPro into csv format. # features/steps/gooby_steps.rb:82
And line: note 2: It is strongly recommended that you manually copy the 'GPS Tracks Log' file # features/steps/gooby_steps.rb:82
And line: from your MacGpsPro installation to the GOOBY_HOME/data directory, and rename it to # features/steps/gooby_steps.rb:82
And line: 'gps_track_logs.txt', before running this command. Then manually edit out the lines # features/steps/gooby_steps.rb:82
And line: not pertinent to the map you want to generate. # features/steps/gooby_steps.rb:82
And line: note 3: I use MacGpsPro to read the GPS data from my Garmin eTrex Venture device, since the # features/steps/gooby_steps.rb:82
And line: Garmin Training Center software does not support this device. # features/steps/gooby_steps.rb:82
And line: example: rake gooby:parse_track_log_to_csv config_file=config/crowders_mtn_hike.yaml # features/steps/gooby_steps.rb:82
And line: command: rake gooby:generate_google_map # features/steps/gooby_steps.rb:82
And line: description: Generate a Google Map html file from a csv file. # features/steps/gooby_steps.rb:82
And line: example: rake gooby:generate_google_map config_file=config/big_sur_marathon.yaml # features/steps/gooby_steps.rb:82
And line: command: rake gooby:generate_google_earth_map # features/steps/gooby_steps.rb:82
And line: description: Generate a Google Earth kml file from a csv file. # features/steps/gooby_steps.rb:82
And line: note 2: Gooby will optionally create a kmz file for you. A kmz file is essentially a # features/steps/gooby_steps.rb:82
And line: zip file, which contains your kml file(s), as well as any associated files such # features/steps/gooby_steps.rb:82
And line: as images. Two parameters are required in your yaml config file for kmz generation: # features/steps/gooby_steps.rb:82
And line: 'kmz_build' must be set to true, and 'kmz_build_command' must be the appropriate # features/steps/gooby_steps.rb:82
And line: zip-creating command for your operating system and set of installed software. # features/steps/gooby_steps.rb:82
And line: A Mac OS/X example command is: zip -r gooby_big_sur.kmz . # features/steps/gooby_steps.rb:82
And line: example: rake gooby:generate_google_earth_map config_file=config/big_sur_marathon.yaml # features/steps/gooby_steps.rb:82
And line: Your GOOBY_HOME directory is currently set to # features/steps/gooby_steps.rb:82
And the output contains the expected lines # features/steps/gooby_steps.rb:123
Scenario: Split a large TCX file exported from Garmin Training Center # features/gooby.feature:98
Given we imported the data from our Garmin GPS device model 305 into Garmin Training Center # features/steps/gooby_steps.rb:24
And exported the data from Garmin Training Center to a TCX file # features/steps/gooby_steps.rb:28
And the TCX file is named 'data/current.tcx' # features/steps/gooby_steps.rb:32
When rake task 'gooby:extract_activities_from_tcx' is executed # features/steps/gooby_steps.rb:50
Then the splits directory contains at least 15 files matching name '2009' # features/steps/gooby_steps.rb:104
And the splits directory contains at least 90 files matching name '2008' # features/steps/gooby_steps.rb:104
And the splits directory contains at least 100 files matching name '2007' # features/steps/gooby_steps.rb:104
And these activity xml files exist: # features/steps/gooby_steps.rb:110
| file | lines |
| splits/2008_04_27_13_49_50_tcx.xml | 24560 |
| splits/2009_01_01_14_45_00_tcx.xml | 10630 |
Scenario: Parse an activity xml file to csv # features/gooby.feature:112
Given the config file we use is 'config/big_sur_marathon.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:parse_activity_xml_to_csv' is executed # features/steps/gooby_steps.rb:50
Then the CSV file 'csv/2008_04_27_13_49_50_tcx.csv' is created # features/steps/gooby_steps.rb:64
And the CSV file contains 2449 trackpoints # features/steps/gooby_steps.rb:86
And the CSV file contains these trackpoints: # features/steps/gooby_steps.rb:151
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2008-04-27T13:49:50Z | 36.247196 | -121.781665 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 1800 | 2008-04-27T15:50:22Z | 36.460703 | -121.924925 | 20.0004984569685 | 3:03:46 | 6.530 | 9:11.29 |
| 2449 | 2008-04-27T17:09:28Z | 36.538656 | -121.91085 | 26.3666472682879 | 4:05:34 | 6.442 | 9:18.81 |
Scenario: Parse a track log file to csv # features/gooby.feature:123
Given the config file we use is 'config/crowders_mtn_hike.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:parse_track_log_to_csv' is executed # features/steps/gooby_steps.rb:50
Then the CSV file 'csv/crowders_mtn_hike.csv' is created # features/steps/gooby_steps.rb:64
And the CSV file contains 1065 trackpoints # features/steps/gooby_steps.rb:86
And the CSV file contains these trackpoints: # features/steps/gooby_steps.rb:151
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2008-11-16T08:43:06Z | 35.21357 | -81.29359 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 1065 | 2008-11-16T14:46:11Z | 35.26834 | -81.25154 | 15.0878648193097 | 6:03:05 | 2.493 | 24:03.88 |
Scenario: Parse a gpx file to csv # features/gooby.feature:133
Given the config file we use is 'config/ballantyne.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:parse_gpx_to_csv' is executed # features/steps/gooby_steps.rb:50
Then the CSV file 'csv/ballantyne.csv' is created # features/steps/gooby_steps.rb:64
And the CSV file contains 27 trackpoints # features/steps/gooby_steps.rb:86
And the CSV file contains these trackpoints: # features/steps/gooby_steps.rb:151
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2009-05-14T22:08:50Z | 35.062748 | -80.85562 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 27 | 2009-05-14T22:10:43Z | 35.062613 | -80.855448 | 0.0783970446562321 | 0:01:53 | 2.498 | 24:01.38 |
Scenario: Generate a Big Sur Marathon Google map in html format # features/gooby.feature:143
Given the config file we use is 'config/big_sur_marathon.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:generate_google_map' is executed # features/steps/gooby_steps.rb:50
Then the HTML file 'out/big_sur_marathon.html' is created # features/steps/gooby_steps.rb:64
And the HTML file contains 2766 lines # features/steps/gooby_steps.rb:96
And the following lines are expected # features/steps/gooby_steps.rb:78
And line: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" # features/steps/gooby_steps.rb:82
And line: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> # features/steps/gooby_steps.rb:82
And line: <html xmlns="http://www.w3.org/1999/xhtml"> # features/steps/gooby_steps.rb:82
And line: <head> # features/steps/gooby_steps.rb:82
And line: <meta http-equiv="content-type" content="text/html; charset=utf-8"/> # features/steps/gooby_steps.rb:82
And line: <meta name="description" content="Google Map generated by Gooby version 2.0.0"> # features/steps/gooby_steps.rb:82
And line: <meta name="keywords" content="Google Map Generated by Gooby version 2.0.0"> # features/steps/gooby_steps.rb:82
And line: <title> Big Sur Marathon </title> # features/steps/gooby_steps.rb:82
And line: <script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA # features/steps/gooby_steps.rb:82
And line: <script type="text/javascript"> # features/steps/gooby_steps.rb:82
And line: //<![CDATA[ # features/steps/gooby_steps.rb:82
And line: function load() { # features/steps/gooby_steps.rb:82
And line: if (GBrowserIsCompatible()) { # features/steps/gooby_steps.rb:82
And line: var map = new GMap2(document.getElementById("map")); # features/steps/gooby_steps.rb:82
And line: map.addControl(new GLargeMapControl()); # features/steps/gooby_steps.rb:82
And line: map.addControl(new GMapTypeControl()); # features/steps/gooby_steps.rb:82
And line: var centerPoint = new GLatLng(36.392926, -121.8600045); # features/steps/gooby_steps.rb:82
And line: map.setCenter(centerPoint, 11); # features/steps/gooby_steps.rb:82
And line: var points = new Array(); # features/steps/gooby_steps.rb:82
And line: points.push(new GLatLng(36.247196,-121.781665)); # features/steps/gooby_steps.rb:82
And line: // points.push(new GLatLng(36.247208,-121.78167)); # features/steps/gooby_steps.rb:82
And line: points.push(new GLatLng(36.538656,-121.91085)); # features/steps/gooby_steps.rb:82
And line: // app_max=200.0 ratio=12.245 increment=12 # features/steps/gooby_steps.rb:82
And line: var routePolyline = new GPolyline(points); # features/steps/gooby_steps.rb:82
And line: map.addOverlay(routePolyline); # features/steps/gooby_steps.rb:82
And line: // Create a base icon for all of our markers that specifies the # features/steps/gooby_steps.rb:82
And line: // shadow, icon dimensions, etc. # features/steps/gooby_steps.rb:82
And line: var baseIcon = new GIcon(); # features/steps/gooby_steps.rb:82
And line: baseIcon.shadow = "images/shadow50.png"; # features/steps/gooby_steps.rb:82
And line: baseIcon.iconSize = new GSize(20, 34); # features/steps/gooby_steps.rb:82
And line: baseIcon.shadowSize = new GSize(37, 34); # features/steps/gooby_steps.rb:82
And line: baseIcon.iconAnchor = new GPoint(9, 34); # features/steps/gooby_steps.rb:82
And line: baseIcon.infoWindowAnchor = new GPoint(9, 2); # features/steps/gooby_steps.rb:82
And line: baseIcon.infoShadowAnchor = new GPoint(18, 25); # features/steps/gooby_steps.rb:82
And line: var iconStart = new GIcon(baseIcon); # features/steps/gooby_steps.rb:82
And line: iconStart.image = "images/dd-start.png"; # features/steps/gooby_steps.rb:82
And line: var pStart = new GPoint(-121.781665, 36.247196); # features/steps/gooby_steps.rb:82
And line: var mStart = new GMarker(pStart, iconStart); # features/steps/gooby_steps.rb:82
And line: GEvent.addListener(mStart, "click", function() { # features/steps/gooby_steps.rb:82
And line: mStart.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Start!</b> # features/steps/gooby_steps.rb:82
And line: map.addOverlay(mStart); # features/steps/gooby_steps.rb:82
And line: var icon1 = new GIcon(baseIcon); # features/steps/gooby_steps.rb:82
And line: icon1.image = "images/marker1.png"; # features/steps/gooby_steps.rb:82
And line: var p1 = new GPoint(-121.788872, 36.259338); # features/steps/gooby_steps.rb:82
And line: var m1 = new GMarker(p1, icon1); # features/steps/gooby_steps.rb:82
And line: GEvent.addListener(m1, "click", function() { # features/steps/gooby_steps.rb:82
And line: m1.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 1</b> # features/steps/gooby_steps.rb:82
And line: map.addOverlay(m1); # features/steps/gooby_steps.rb:82
And line: var icon26 = new GIcon(baseIcon); # features/steps/gooby_steps.rb:82
And line: icon26.image = "images/marker26.png"; # features/steps/gooby_steps.rb:82
And line: var p26 = new GPoint(-121.914424, 36.534368); # features/steps/gooby_steps.rb:82
And line: var m26 = new GMarker(p26, icon26); # features/steps/gooby_steps.rb:82
And line: GEvent.addListener(m26, "click", function() { # features/steps/gooby_steps.rb:82
And line: m26.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Mile 26</b> # features/steps/gooby_steps.rb:82
And line: map.addOverlay(m26); # features/steps/gooby_steps.rb:82
And line: var iconFinish = new GIcon(baseIcon); # features/steps/gooby_steps.rb:82
And line: iconFinish.image = "images/dd-end.png"; # features/steps/gooby_steps.rb:82
And line: var pFinish = new GPoint(-121.91085, 36.538656); # features/steps/gooby_steps.rb:82
And line: var mFinish = new GMarker(pFinish, iconFinish); # features/steps/gooby_steps.rb:82
And line: GEvent.addListener(mFinish, "click", function() { # features/steps/gooby_steps.rb:82
And line: mFinish.openInfoWindowHtml("<table align='left'><tr><td colspan='2'><b>Finish!</b> # features/steps/gooby_steps.rb:82
And line: map.addOverlay(mFinish); # features/steps/gooby_steps.rb:82
And line: </script> # features/steps/gooby_steps.rb:82
And line: </head> # features/steps/gooby_steps.rb:82
And line: <body onload="load()" onunload="GUnload()"> # features/steps/gooby_steps.rb:82
And line: <center> # features/steps/gooby_steps.rb:82
And line: <h3> Big Sur Marathon </h3> # features/steps/gooby_steps.rb:82
And line: <div id="map" style="width: 1500px; height: 800px"></div> # features/steps/gooby_steps.rb:82
And line: <div id="messages"></div> # features/steps/gooby_steps.rb:82
And line: </center> # features/steps/gooby_steps.rb:82
And line: </body> # features/steps/gooby_steps.rb:82
And line: </html> # features/steps/gooby_steps.rb:82
And the HTML contains the expected lines # features/steps/gooby_steps.rb:123
Scenario: Generate a Big Sur Marathon Google Earth map in kml format # features/gooby.feature:223
Given the config file we use is 'config/big_sur_marathon.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:generate_google_earth_map' is executed # features/steps/gooby_steps.rb:50
Then the KML file 'out/big_sur_marathon.kml' is created # features/steps/gooby_steps.rb:64
And the KML file contains 685 lines # features/steps/gooby_steps.rb:100
And the following lines are expected # features/steps/gooby_steps.rb:78
And line: <?xml version="1.0" encoding="UTF-8"?> # features/steps/gooby_steps.rb:82
And line: <kml xmlns="http://www.opengis.net/kml/2.2"> # features/steps/gooby_steps.rb:82
And line: <Document> # features/steps/gooby_steps.rb:82
And line: <!-- kml file generated by Gooby version 2.0.0 --> # features/steps/gooby_steps.rb:82
And line: <name>Big Sur Marathon</name> # features/steps/gooby_steps.rb:82
And line: <Style id="goobyStyle"> # features/steps/gooby_steps.rb:82
And line: <name>Start</name> # features/steps/gooby_steps.rb:82
And line: <description><table align='left'><tr><td colspan='2'><b>Start!</b> # features/steps/gooby_steps.rb:82
And line: <href>images/dd-start.png</href> # features/steps/gooby_steps.rb:82
And line: <coordinates>-121.781665,36.247196,1</coordinates> # features/steps/gooby_steps.rb:82
And line: <name>Finish</name> # features/steps/gooby_steps.rb:82
And line: <description><table align='left'><tr><td colspan='2'><b>Finish!</b> # features/steps/gooby_steps.rb:82
And line: <href>images/dd-end.png</href> # features/steps/gooby_steps.rb:82
And line: <coordinates>-121.91085,36.538656,1</coordinates> # features/steps/gooby_steps.rb:82
And line: <visibility>1</visibility> # features/steps/gooby_steps.rb:82
And line: <description>Route</description> # features/steps/gooby_steps.rb:82
And line: <styleUrl>#goobyStyle</styleUrl> # features/steps/gooby_steps.rb:82
And line: <LineString> # features/steps/gooby_steps.rb:82
And line: <tessellate>1</tessellate> # features/steps/gooby_steps.rb:82
And line: <altitudeMode>relativeToGround</altitudeMode> # features/steps/gooby_steps.rb:82
And line: <coordinates> # features/steps/gooby_steps.rb:82
And line: -121.781665,36.247196,1 # features/steps/gooby_steps.rb:82
And line: -121.782714,36.248216,1 # features/steps/gooby_steps.rb:82
And line: -121.784484,36.249009,1 # features/steps/gooby_steps.rb:82
And line: -121.912713,36.536075,1 # features/steps/gooby_steps.rb:82
And line: -121.911365,36.537773,1 # features/steps/gooby_steps.rb:82
And line: -121.91085,36.538656,1 # features/steps/gooby_steps.rb:82
And line: </coordinates> # features/steps/gooby_steps.rb:82
And line: </LineString> # features/steps/gooby_steps.rb:82
And line: </Placemark> # features/steps/gooby_steps.rb:82
And line: </Document> # features/steps/gooby_steps.rb:82
And line: </kml> # features/steps/gooby_steps.rb:82
And the KML contains the expected lines # features/steps/gooby_steps.rb:123
Scenario: Parse the Davidson 11-miler activity xml file to csv # features/gooby.feature:263
Given the config file we use is 'config/davidson1.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:parse_activity_xml_to_csv' is executed # features/steps/gooby_steps.rb:50
Then the CSV file 'csv/davidson1.csv' is created # features/steps/gooby_steps.rb:64
And the CSV file contains 1060 trackpoints # features/steps/gooby_steps.rb:86
And the CSV file contains these trackpoints: # features/steps/gooby_steps.rb:151
| seq | time | latitude | longitude | distance | elapsed | mph | pace |
| 1 | 2009-01-01T14:45:00Z | 35.495525 | -80.83215 | 0.0 | 0:00:00 | 0.00 | 0:00 |
| 1060 | 2009-01-01T16:25:22Z | 35.495495 | -80.832109 | 11.0685814547597 | 1:40:22 | 6.617 | 9:04.06 |
And we edit CSV file 'csv/davidson1.csv' to contain only point number 1 # features/steps/gooby_steps.rb:143
Scenario: Generate a single-point Google map in html format # features/gooby.feature:274
Given the config file we use is 'config/davidson1.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:generate_google_map' is executed # features/steps/gooby_steps.rb:50
Then the HTML file 'out/davidson1.html' is created # features/steps/gooby_steps.rb:64
And the HTML file contains 75 lines # features/steps/gooby_steps.rb:96
Scenario: Generate a single-point Google Earth map in kmz format # features/gooby.feature:280
Given the config file we use is 'config/davidson1.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:generate_google_earth_map' is executed # features/steps/gooby_steps.rb:50
Then the KML file 'out/doc.kml' is created # features/steps/gooby_steps.rb:64
And the KML file contains 49 lines # features/steps/gooby_steps.rb:100
Then the KMZ file 'gooby_davidson1.kmz' is created # features/steps/gooby_steps.rb:64
Scenario: Generate a Crowders Mt. Hike Google map in html format from Garmin eTrex Venture source data # features/gooby.feature:287
Given the config file we use is 'config/crowders_mtn_hike.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:generate_google_map' is executed # features/steps/gooby_steps.rb:50
Then the HTML file 'out/crowders_mtn_hike.html' is created # features/steps/gooby_steps.rb:64
And the HTML file contains 1283 lines # features/steps/gooby_steps.rb:96
Scenario: Generate a Google Earth map in kml format from iPhone & MotionX app source data # features/gooby.feature:293
Given the config file we use is 'config/ballantyne.yaml' # features/steps/gooby_steps.rb:20
When rake task 'gooby:generate_google_earth_map' is executed # features/steps/gooby_steps.rb:50
Then the KML file 'out/ballantyne.kml' is created # features/steps/gooby_steps.rb:64
And the KML file contains 91 lines # features/steps/gooby_steps.rb:100
Scenario: Save the generated files for packaging in the gooby gem # features/gooby.feature:299
Then copy the generated files to the samples directory # features/steps/gooby_steps.rb:172
14 scenarios (14 passed)
247 steps (247 passed)
|
|