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 +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
|
-
|