76 lines
2.7 KiB
Ruby
76 lines
2.7 KiB
Ruby
require 'test/unit'
|
|
require 'gpx'
|
|
|
|
class TrackFileTest < Test::Unit::TestCase
|
|
TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/tracks.gpx")
|
|
OTHER_TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/arches.gpx")
|
|
|
|
def setup
|
|
@track_file = GPX::GPXFile.new(:gpx_file => TRACK_FILE)
|
|
@other_track_file = GPX::GPXFile.new(:gpx_file => OTHER_TRACK_FILE)
|
|
end
|
|
|
|
def test_track_read
|
|
assert_equal(3, @track_file.tracks.size)
|
|
assert_equal("First Track", @track_file.tracks[0].name)
|
|
assert_equal("Second Track", @track_file.tracks[1].name)
|
|
assert_equal("Third Track", @track_file.tracks[2].name)
|
|
end
|
|
|
|
def test_track_segment_and_point_counts
|
|
# One segment with 398 points...
|
|
assert_equal(1, @track_file.tracks[0].segments.size)
|
|
assert_equal(389, @track_file.tracks[0].segments.first.points.size)
|
|
|
|
# One segment with 299 points...
|
|
assert_equal(1, @track_file.tracks[1].segments.size)
|
|
assert_equal(299, @track_file.tracks[1].segments.first.points.size)
|
|
|
|
# Many segments of many different sizes
|
|
segment_sizes = %w{ 2 2 5 4 2 1 197 31 54 1 15 54 19 26 109 18 9 2 8 3 10 23 21 11 25 32 66 21 2 3 3 4 6 4 4 4 3 3 6 6 27 13 2 }
|
|
assert_equal(43, @track_file.tracks[2].segments.size)
|
|
@track_file.tracks[2].segments.each_with_index do |seg, i|
|
|
assert_equal(segment_sizes[i].to_i, seg.points.size)
|
|
end
|
|
last_segment = @track_file.tracks[2].segments.last
|
|
assert_equal(1680.041, last_segment.points.last.elevation)
|
|
|
|
|
|
second_to_last_segment = @track_file.tracks[2].segments[-2]
|
|
assert_equal("2006-01-02T00:00:51Z", second_to_last_segment.points.last.time.strftime("%Y-%m-%dT%H:%M:%SZ"))
|
|
assert_equal(39.998045, second_to_last_segment.points.last.lat)
|
|
assert_equal(-105.292368, second_to_last_segment.points.last.lon)
|
|
end
|
|
|
|
def test_find_nearest_point_by_time
|
|
time = Time.parse("2005-12-31T22:02:01Z")
|
|
pt = @track_file.tracks[0].closest_point(time)
|
|
#puts "pt: #{pt.lat_lon}"
|
|
|
|
end
|
|
|
|
def test_find_distance
|
|
#puts "Distance: #{@other_track_file.distance(:units => 'miles')} miles"
|
|
#puts "Distance: #{@track_file.distance(:units => 'miles')} miles"
|
|
end
|
|
def test_high_low_elevation
|
|
#puts "Lowest: #{@track_file.lowest_point.elevation} m"
|
|
#puts "Highest: #{@track_file.highest_point.elevation} m"
|
|
end
|
|
|
|
def test_duration
|
|
#puts "Duration 1: #{@other_track_file.duration} "
|
|
#puts "Duration 2: #{@track_file.duration} "
|
|
end
|
|
|
|
def test_average_speed
|
|
#puts "Speed 1: #{@other_track_file.average_speed} "
|
|
#puts "Speed 2: #{@track_file.average_speed} "
|
|
end
|
|
|
|
def test_write
|
|
@other_track_file.write("tests/output/myoutput.gpx")
|
|
end
|
|
|
|
end
|