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