ruby-mapsource 0.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -1
- data/README.md +2 -0
- data/Rakefile +2 -0
- data/lib/mapsource.rb +0 -4
- data/lib/mapsource/version.rb +1 -1
- metadata +7 -10
- data/spec/unit/reader_spec.rb +0 -128
data/Gemfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
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'
|
data/lib/mapsource/version.rb
CHANGED
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:
|
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:
|
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
|
data/spec/unit/reader_spec.rb
DELETED
@@ -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
|
-
|