ruby-mapsource 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://travis-ci.org/dodecaphonic/ruby-mapsource.png?branch=master)](https://travis-ci.org/dodecaphonic/ruby-mapsource)
2
+
1
3
  ruby-mapsource is a library that allows ruby programs to read files created by Garmin's MapSource and BaseCamp.
2
4
 
3
5
  # Usage
data/Rakefile CHANGED
@@ -5,3 +5,5 @@ Rake::TestTask.new do |t|
5
5
  t.libs.push 'spec'
6
6
  t.pattern = 'spec/**/*_spec.rb'
7
7
  end
8
+
9
+ task default: :test
data/lib/mapsource.rb CHANGED
@@ -20,11 +20,7 @@
20
20
  # SOFTWARE.
21
21
  #++
22
22
 
23
- mapsource_path = File.dirname(__FILE__)
24
- $:.unshift(mapsource_path) if File.directory?(mapsource_path) && !$:.include?(mapsource_path)
25
-
26
23
  require 'stringio'
27
-
28
24
  require 'mapsource/structure'
29
25
  require 'mapsource/defs'
30
26
  require 'mapsource/reader'
@@ -1,3 +1,3 @@
1
1
  module MapSource
2
- VERSION = "0.2"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-mapsource
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-07 00:00:00.000000000 Z
12
+ date: 2013-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -82,7 +82,6 @@ files:
82
82
  - spec/assets/track.bin
83
83
  - spec/integration/reader_spec.rb
84
84
  - spec/spec_helper.rb
85
- - spec/unit/reader_spec.rb
86
85
  homepage: http://github.com/dodecaphonic/ruby-mapsource
87
86
  licenses: []
88
87
  post_install_message:
@@ -95,22 +94,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
94
  - - ! '>='
96
95
  - !ruby/object:Gem::Version
97
96
  version: '0'
98
- segments:
99
- - 0
100
- hash: -3373937689098540236
101
97
  required_rubygems_version: !ruby/object:Gem::Requirement
102
98
  none: false
103
99
  requirements:
104
100
  - - ! '>='
105
101
  - !ruby/object:Gem::Version
106
102
  version: '0'
107
- segments:
108
- - 0
109
- hash: -3373937689098540236
110
103
  requirements: []
111
104
  rubyforge_project: ruby-mapsource
112
105
  rubygems_version: 1.8.24
113
106
  signing_key:
114
107
  specification_version: 3
115
108
  summary: A Ruby library for reading MapSource/BaseCamp-created GDB files
116
- test_files: []
109
+ test_files:
110
+ - spec/assets/sample.gdb
111
+ - spec/assets/track.bin
112
+ - spec/integration/reader_spec.rb
113
+ - spec/spec_helper.rb
@@ -1,128 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MapSource::Reader do
4
- describe "when reading the header" do
5
- it "fails when first portion of the file doesn't pass validation" do
6
- gdb_file, sequence = *create_basic_valid_state(before: :start)
7
-
8
- bogus = mock('bogus')
9
- bogus.expects(:unpack).with('A*').returns ['Bogus']
10
- gdb_file.expects(:read).with(6).returns bogus
11
-
12
- lambda {
13
- MapSource::Reader.new gdb_file
14
- }.must_raise MapSource::InvalidFormatError
15
- end
16
-
17
- it "fails when header is malformed" do
18
- gdb_file, sequence = *create_basic_valid_state(before: :version)
19
-
20
- reclen = mock('reclen')
21
- reclen.expects(:unpack).with('l').returns [2]
22
- gdb_file.expects(:read).in_sequence(sequence).with(4).returns reclen
23
-
24
- gdb_file.expects(:read).in_sequence(sequence).with(3).returns "Am\x00"
25
-
26
- lambda {
27
- MapSource::Reader.new gdb_file
28
- }.must_raise MapSource::InvalidFormatError
29
- end
30
-
31
- it "fails when version is unsupported" do
32
- gdb_file, sequence = *create_basic_valid_state(before: :version)
33
-
34
- reclen = mock('reclen')
35
- reclen.expects(:unpack).with('l').returns [2]
36
- gdb_file.expects(:read).in_sequence(sequence).with(4).returns reclen
37
-
38
- gdb_file.expects(:read).in_sequence(sequence).with(3).returns "Dn\x00"
39
-
40
- lambda {
41
- MapSource::Reader.new gdb_file
42
- }.must_raise MapSource::UnsupportedVersionError
43
- end
44
-
45
- it "determines which version of the format it has" do
46
- gdb_file, _ = *create_basic_valid_state
47
-
48
- reader = MapSource::Reader.new(gdb_file)
49
- reader.header.version.must_equal 3
50
- end
51
-
52
- it "determines which software created the file" do
53
- gdb_file, _ = *create_basic_valid_state
54
-
55
- reader = MapSource::Reader.new(gdb_file)
56
- reader.header.created_by.must_equal 'MapSource'
57
- end
58
-
59
- it "determines which software signed the file" do
60
- gdb_file, _ = *create_basic_valid_state
61
-
62
- reader = MapSource::Reader.new(gdb_file)
63
- reader.header.signed_by.must_equal 'MapSource'
64
- end
65
-
66
- it "fails when creator is not recognized" do
67
- gdb_file, sequence = *create_basic_valid_state(before: :signer)
68
-
69
- gdb_file.expects(:read).in_sequence(sequence).with(10).returns 'BogusSoftw'
70
- gdb_file.expects(:read).in_sequence(sequence).with(1).times(3).returns 'x'
71
- gdb_file.expects(:read).in_sequence(sequence).with(1).returns "\x00"
72
-
73
- lambda {
74
- MapSource::Reader.new gdb_file
75
- }.must_raise MapSource::InvalidFormatError
76
- end
77
- end
78
-
79
- describe "when reading the content" do
80
- it "parses waypoints" do
81
- gdb_file, seq = *create_basic_valid_state
82
-
83
- gdb_file.expects(:read).in_sequence(seq).with(4).returns "\l\x00\x00\x00"
84
- gdb_file.expects(:read).in_sequence(seq).with(109).returns "W001\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xE7\xB7\x85\xEF\xDE\xCB\x1D\xE0\x01\x00\x00\x00\x80\xF9X\x97@15-DEZ-11 12:06:43PM\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x8D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
85
- gdb_file.expects(:read).in_sequence(seq).with(4).returns "\x01\x00\x00\x00"
86
- gdb_file.expects(:read).in_sequence(seq).with(2).returns "V\x00"
87
-
88
- reader = MapSource::Reader.new(gdb_file)
89
-
90
- reader.waypoints.size.must_equal 1
91
- wpt = reader.waypoints.first
92
- wpt.shortname.must_equal "001"
93
- wpt.latitude.must_be_close_to -23.17171306349337
94
- wpt.longitude.must_be_close_to -44.836323726922274
95
- wpt.notes.must_equal "15-DEZ-11 12:06:43PM"
96
- wpt.altitude.floor.must_be_close_to 1494
97
- wpt.depth.must_be_nil
98
- end
99
-
100
- it "parses tracks" do
101
- track = open(SAMPLE_TRACK, 'rb').read
102
- gdb_file, seq = *create_basic_valid_state
103
- gdb_file.expects(:read).in_sequence(seq).with(4).returns "\xC0r\x00\x00"
104
- gdb_file.expects(:read).in_sequence(seq).with(29377).returns track
105
- gdb_file.expects(:read).in_sequence(seq).with(4).returns "\x01\x00\x00\x00"
106
- gdb_file.expects(:read).in_sequence(seq).with(2).returns "V\x00"
107
-
108
- reader = MapSource::Reader.new(gdb_file)
109
- reader.tracks.size.must_equal 1
110
-
111
- track = reader.tracks.first
112
- track.name.must_equal "ACTIVE LOG"
113
- track.color.name.must_equal "Red"
114
- track.size.must_equal 1223
115
-
116
- wpt = track.waypoints.first
117
- wpt.latitude.must_be_close_to -22.17333
118
- wpt.longitude.must_be_close_to -42.41256
119
- wpt.altitude.must_be_close_to 675.0, 0.5
120
-
121
- wpt = track.waypoints[1]
122
- wpt.latitude.must_be_close_to -22.17332
123
- wpt.longitude.must_be_close_to -42.41264
124
- wpt.altitude.must_be_close_to 673.0, 0.5
125
- end
126
- end
127
- end
128
-