clipr 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+ describe Clipr::TCXFile do
4
+ before(:all) do
5
+ @file = Clipr::TCXFile.new(content_file('sample_activity.tcx'))
6
+ end
7
+
8
+ subject(:file) { @file }
9
+
10
+ it { should have(1).laps }
11
+ it { should have(3370).trackpoints }
12
+
13
+ its(:reported_avg_speed) { should eql(4.431000232696533) }
14
+ its(:real_avg_speed) { should eql(5.665456157569008) }
15
+
16
+ its(:reported_total_distance) { should eql(42981.54) }
17
+ its(:real_total_distance) { should eql(42981.53125) }
18
+ its(:reported_total_seconds) { should eql(9700.176) }
19
+ its(:real_total_seconds) { should eql(9704.0) }
20
+
21
+ describe "A clipped file" do
22
+ before(:all) { @file.clip_after(time: '2013-04-13T11:32:11.000Z') }
23
+
24
+ it 'deletes all following trackpoints' do
25
+ file.should have(3147).trackpoints
26
+ end
27
+
28
+ it 'calculates the average speed' do
29
+ file.real_avg_speed.should == 6.051869161249457
30
+ end
31
+
32
+ it 'sets the reported speed' do
33
+ file.reported_avg_speed.should == 6.051869161249457
34
+ end
35
+
36
+ it 'calculates the total distance' do
37
+ file.real_total_distance.should == 42847.98046875
38
+ end
39
+
40
+ it 'sets the reported total distance' do
41
+ file.reported_total_distance.should == 42847.98046875
42
+ end
43
+
44
+ it 'calculates the maximum speed' do
45
+ file.real_max_speed.should == 14.213000297546387
46
+ end
47
+
48
+ it 'sets the maximum speed' do
49
+ file.reported_max_speed.should == 14.213000297546387
50
+ end
51
+
52
+ it 'calculates the total time' do
53
+ file.real_total_seconds.should == 8091.0
54
+ end
55
+
56
+ it 'sets the total time' do
57
+ file.reported_total_seconds.should == 8091.0
58
+ end
59
+
60
+ describe 'The saved file' do
61
+ before :all do
62
+ saved_name = content_filename('saved.tcx')
63
+ File.delete(saved_name) rescue nil
64
+
65
+ @file.save(saved_name).should be_true
66
+
67
+ @loaded_str = content_file('saved.tcx')
68
+ end
69
+
70
+ context 'as xml' do
71
+ subject(:loaded_xml) { Nokogiri::XML(@loaded_str) }
72
+
73
+ it 'has one activity in the Garmin namespace' do
74
+ loaded_xml.xpath('//xmlns:Activity').should have(1).node
75
+ end
76
+
77
+ it 'has the correct speed' do
78
+ loaded_xml.xpath('//xmlns:Lap/xmlns:TotalTimeSeconds').text.to_f.should == 8091.0
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ describe 'A file with trackpoints that have no distance' do
85
+ before(:all) do
86
+ @file = Clipr::TCXFile.new(content_file('tony.tcx'))
87
+ end
88
+
89
+ its(:real_total_distance) { should eql(53917.5) }
90
+ end
91
+ end
@@ -0,0 +1,9 @@
1
+ require 'clipr'
2
+
3
+ def content_filename(filename)
4
+ File.join(File.dirname(__FILE__), 'fixtures', filename)
5
+ end
6
+
7
+ def content_file(filename)
8
+ File.read(content_filename(filename))
9
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: clipr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Russell Garner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Trims single-lap Garmin TCX files to remove empty space at the end of
14
+ the file
15
+ email:
16
+ - rgarner@zephyros-systems.co.uk
17
+ executables:
18
+ - clipr
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - .gitignore
23
+ - Gemfile
24
+ - README.md
25
+ - Rakefile
26
+ - bin/clipr
27
+ - clipr.gemspec
28
+ - lib/clipr.rb
29
+ - lib/clipr/tcx_file.rb
30
+ - lib/clipr/version.rb
31
+ - lib/trollop.rb
32
+ - spec/fixtures/sample_activity.tcx
33
+ - spec/fixtures/tony.tcx
34
+ - spec/lib/tcx_file_spec.rb
35
+ - spec/spec_helper.rb
36
+ homepage: http://github.com/rgarner/clipr
37
+ licenses: []
38
+ metadata: {}
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubyforge_project:
55
+ rubygems_version: 2.0.3
56
+ signing_key:
57
+ specification_version: 4
58
+ summary: Trim Garmin TCX files
59
+ test_files:
60
+ - spec/fixtures/sample_activity.tcx
61
+ - spec/fixtures/tony.tcx
62
+ - spec/lib/tcx_file_spec.rb
63
+ - spec/spec_helper.rb