rozi 0.0.7 → 0.1.3

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +255 -0
  3. data/lib/rozi.rb +6 -3
  4. data/lib/rozi/file_wrapper_base.rb +52 -0
  5. data/lib/rozi/module_functions.rb +19 -69
  6. data/lib/rozi/name_search.rb +176 -0
  7. data/lib/rozi/{ozi_functions.rb → shared.rb} +36 -9
  8. data/lib/rozi/tracks.rb +170 -0
  9. data/lib/rozi/version.rb +1 -1
  10. data/lib/rozi/waypoints.rb +315 -0
  11. data/test/rozi/file_wrapper_base_test.rb +29 -0
  12. data/test/rozi/module_functions_test.rb +11 -72
  13. data/test/rozi/name_search_test.rb +248 -0
  14. data/test/rozi/{ozi_functions_test.rb → shared_test.rb} +25 -5
  15. data/test/rozi/tracks_test.rb +105 -0
  16. data/test/rozi/waypoints_test.rb +268 -0
  17. data/test/test_data/expected_output_1.nst +6 -0
  18. data/{test_data → test/test_data}/expected_output_1.plt +9 -9
  19. data/{test_data → test/test_data}/expected_output_1.wpt +7 -7
  20. data/test/test_data/input_1.wpt +6 -0
  21. metadata +128 -34
  22. data/README.rdoc +0 -127
  23. data/lib/rozi/name.rb +0 -23
  24. data/lib/rozi/name_search_text.rb +0 -43
  25. data/lib/rozi/name_search_text_writer.rb +0 -71
  26. data/lib/rozi/track.rb +0 -67
  27. data/lib/rozi/track_point.rb +0 -39
  28. data/lib/rozi/track_writer.rb +0 -50
  29. data/lib/rozi/waypoint.rb +0 -90
  30. data/lib/rozi/waypoint_writer.rb +0 -38
  31. data/test/rozi/name_search_text_test.rb +0 -28
  32. data/test/rozi/name_search_text_writer_test.rb +0 -114
  33. data/test/rozi/track_point_test.rb +0 -32
  34. data/test/rozi/track_test.rb +0 -25
  35. data/test/rozi/track_writer_test.rb +0 -62
  36. data/test/rozi/waypoint_test.rb +0 -31
  37. data/test/rozi/waypoint_writer_test.rb +0 -60
@@ -0,0 +1,268 @@
1
+
2
+ require "stringio"
3
+
4
+ module RoziTestSuite
5
+ class WriteWaypointsTest < TestCase
6
+ def setup
7
+ @subject = Rozi.method(:write_waypoints)
8
+ end
9
+
10
+ def test_basic_usage
11
+ waypoints = [
12
+ Rozi::Waypoint.new(
13
+ latitude: 59.91273, longitude: 10.74609, name: "OSLO"
14
+ ),
15
+ Rozi::Waypoint.new(
16
+ latitude: 60.39358, longitude: 5.32476, name: "BERGEN"
17
+ ),
18
+ Rozi::Waypoint.new(
19
+ latitude: 62.56749, longitude: 7.68709, name: "ÅNDALSNES"
20
+ )
21
+ ]
22
+
23
+ file = StringIO.new
24
+ Rozi.expects(:open_file).returns(file)
25
+
26
+ @subject.call(waypoints, "/x/y.wpt", datum: "WGS 84", version: "1.1")
27
+
28
+ assert_equal(
29
+ RoziTestSuite.read_test_data("expected_output_1.wpt"),
30
+ file.string
31
+ )
32
+ end
33
+ end
34
+
35
+ class WaypointTest < TestCase
36
+ def setup
37
+ @subject = Rozi::Waypoint.new
38
+ end
39
+
40
+ def test_initialize
41
+ wp = Rozi::Waypoint.new(number: 5, name: "Test point")
42
+
43
+ assert_equal "Test point", wp.name
44
+ assert_equal 5, wp.number
45
+
46
+ assert_raises(ArgumentError) {
47
+ # Invalid attribute "foo".
48
+ wp = Rozi::Waypoint.new(foo: 123)
49
+ }
50
+ end
51
+
52
+ def test_display_format_setter
53
+ @subject.display_format = 3
54
+ assert_equal 3, @subject.display_format(raw: true)
55
+
56
+ @subject.display_format = :name_with_dot
57
+ assert_equal 3, @subject.display_format(raw: true)
58
+ end
59
+
60
+ def test_display_format_getter
61
+ @subject.display_format = 3
62
+
63
+ assert_equal :name_with_dot, @subject.display_format
64
+ assert_equal 3, @subject.display_format(raw: true)
65
+ end
66
+
67
+ def test_colors
68
+ wp = Rozi::Waypoint.new()
69
+ wp.expects(:interpret_color).twice.with(:foo).returns(:bar)
70
+
71
+ wp.fg_color = :foo
72
+ assert_equal :bar, wp.fg_color
73
+
74
+ wp.bg_color = :foo
75
+ assert_equal :bar, wp.bg_color
76
+ end
77
+ end
78
+
79
+ class WaypointFileTest < TestCase
80
+ def setup
81
+ @sio = StringIO.new
82
+ @subject = Rozi::WaypointFile.new(@sio)
83
+ end
84
+
85
+ def test_write
86
+ @subject.expects(:write_waypoint).with(:foo)
87
+ @subject.expects(:write_waypoint).with(:bar)
88
+ @subject.expects(:write_waypoint).with(:baz)
89
+
90
+ @subject.write([:foo, :bar, :baz])
91
+ end
92
+
93
+ def test_write_waypoint
94
+ wpt = Rozi::Waypoint.new
95
+
96
+ @subject.expects(:write_properties).once
97
+
98
+ @subject.write_waypoint(wpt)
99
+ @subject.write_waypoint(wpt)
100
+ end
101
+
102
+ def test_each_waypoint
103
+ @subject.expects(:read_waypoint).times(4)
104
+ .returns(:foo)
105
+ .then.returns(:bar)
106
+ .then.returns(:baz)
107
+ .then.raises(EOFError)
108
+
109
+ assert_equal [:foo, :bar, :baz], @subject.each_waypoint.to_a
110
+ end
111
+
112
+ def test_read_properties
113
+ @sio.write("OziExplorer Waypoint File Version 1.0\n")
114
+ @sio.write("Norsk\n")
115
+ @sio.write("Reserved 2\n")
116
+ @sio.write("garmin\n")
117
+ @sio.rewind
118
+
119
+ properties = @subject.read_properties
120
+ assert_equal "1.0", properties.version
121
+ assert_equal "Norsk", properties.datum
122
+ end
123
+
124
+ def test_read_properties_with_bad_file_pos
125
+ @sio.write("foo")
126
+
127
+ assert_raises(RuntimeError) {
128
+ @subject.read_properties
129
+ }
130
+ end
131
+
132
+ def test_read_waypoint
133
+ @sio.write("foo\n")
134
+ @sio.write("bar\n")
135
+ @sio.rewind
136
+
137
+ @subject.expects(:read_properties).once
138
+
139
+ def @subject.parse_waypoint(x)
140
+ return "parsed: #{x.strip}"
141
+ end
142
+
143
+ assert_equal "parsed: foo", @subject.read_waypoint
144
+ assert_equal "parsed: bar", @subject.read_waypoint
145
+ end
146
+
147
+ def test_parse_waypoint_file_properties
148
+ expected_output = {
149
+ version: "1.0",
150
+ datum: "Norsk"
151
+ }
152
+
153
+ text = (
154
+ "OziExplorer Waypoint File Version 1.0\n" +
155
+ "Norsk\n" +
156
+ "Reserved 2\n" +
157
+ "garmin\n"
158
+ )
159
+
160
+ properties = @subject.send(:parse_waypoint_file_properties, text)
161
+
162
+ assert_equal expected_output, properties.to_h
163
+ end
164
+
165
+ def test_parse_waypoint
166
+ expected_output = {
167
+ number: 1,
168
+ name: "Grorud",
169
+ latitude: 59.960742,
170
+ longitude: 10.881999,
171
+ date: 41977.3865272,
172
+ symbol: 0,
173
+ display_format: 1,
174
+ fg_color: 0,
175
+ bg_color: 15441496,
176
+ description: "Description, with comma",
177
+ pointer_direction: 0,
178
+ altitude: 404,
179
+ font_size: 6,
180
+ font_style: 0,
181
+ symbol_size: 15
182
+ }
183
+
184
+ text = (
185
+ "1,Grorud, 59.960742, 10.881999,41977.3865272, 0, 0, 1, 0," +
186
+ " 15441496,DescriptionÑ with comma, 0, 0, 0, 404, 6, 0,15,0,10" +
187
+ ".0,2,,,,60\n"
188
+ )
189
+
190
+ waypoint = @subject.send(:parse_waypoint, text)
191
+
192
+ assert_equal expected_output, waypoint.to_h
193
+ end
194
+
195
+ def test_parse_waypoint_2
196
+ expected_output = {
197
+ number: 2,
198
+ name: "Lillestrøm",
199
+ latitude: 59.956788,
200
+ longitude: 11.051257,
201
+ date: 41977.3935379,
202
+ symbol: 7,
203
+ display_format: 4,
204
+ fg_color: 16777215,
205
+ bg_color: 5450740,
206
+ description: "Description, with comma",
207
+ pointer_direction: 0,
208
+ altitude: -777,
209
+ font_size: 6,
210
+ font_style: 0,
211
+ symbol_size: 20
212
+ }
213
+
214
+ text = (
215
+ "2,Lillestrøm, 59.956788, 11.051257,41977.3935379, 7, 0, 4, 16777" +
216
+ "215, 5450740,DescriptionÑ with comma, 0, 0, 0, -777, 6, 0,20," +
217
+ "0,10.0,2,,,,60"
218
+ )
219
+
220
+ waypoint = @subject.send(:parse_waypoint, text)
221
+
222
+ assert_equal expected_output, waypoint.to_h
223
+ end
224
+
225
+ def test_serialize_waypoint_file_properties
226
+ m = Rozi::WaypointFileProperties.new
227
+
228
+ assert_equal(
229
+ "OziExplorer Waypoint File Version 1.1\n" +
230
+ "WGS 84\n" +
231
+ "Reserved 2\n",
232
+ @subject.send(:serialize_waypoint_file_properties, m)
233
+ )
234
+
235
+ m = Rozi::WaypointFileProperties.new("Norsk", "1.2")
236
+
237
+ assert_equal(
238
+ "OziExplorer Waypoint File Version 1.2\n" +
239
+ "Norsk\n" +
240
+ "Reserved 2\n",
241
+ @subject.send(:serialize_waypoint_file_properties, m)
242
+ )
243
+ end
244
+
245
+ def test_serialize_waypoint
246
+ wpt = Rozi::Waypoint.new(name: "test")
247
+
248
+ assert_equal(
249
+ "-1,test,0.000000,0.000000,,0,1,3,0,65535,,0,,,-777,6,0,17",
250
+ @subject.send(:serialize_waypoint, wpt)
251
+ )
252
+
253
+ wpt = Rozi::Waypoint.new(name: "test", symbol: 4)
254
+
255
+ assert_equal(
256
+ "-1,test,0.000000,0.000000,,4,1,3,0,65535,,0,,,-777,6,0,17",
257
+ @subject.send(:serialize_waypoint, wpt)
258
+ )
259
+
260
+ wpt = Rozi::Waypoint.new(name: "test", description: "æøå, ÆØÅ")
261
+
262
+ assert_equal(
263
+ "-1,test,0.000000,0.000000,,0,1,3,0,65535,æøåÑ ÆØÅ,0,,,-777,6,0,17",
264
+ @subject.send(:serialize_waypoint, wpt)
265
+ )
266
+ end
267
+ end
268
+ end
@@ -0,0 +1,6 @@
1
+ ;Rozi test suite
2
+ #1,,
3
+ #2,WGS 84
4
+ Oslo,,,59.913309,10.753188
5
+ Bergen,,,60.389966,5.323434
6
+ Trondheim,,,63.429949,10.395332
@@ -1,9 +1,9 @@
1
- OziExplorer Track Point File Version 2.1
2
- WGS 84
3
- Altitude is in Feet
4
- Reserved 3
5
- 0,2,255,,1,0,0,0
6
- 3
7
- 59.912730,10.746090,0,-777.0,0.0000000,,
8
- 60.393580,5.324760,0,-777.0,0.0000000,,
9
- 62.567490,7.687090,0,-777.0,0.0000000,,
1
+ OziExplorer Track Point File Version 2.1
2
+ WGS 84
3
+ Altitude is in Feet
4
+ Reserved 3
5
+ 0,2,255,fooÑ bar,1,0,0,0
6
+ 0
7
+ 59.912730,10.746090,0,-777.0,0.0000000,,
8
+ 60.393580,5.324760,0,-777.0,0.0000000,,
9
+ 62.567490,7.687090,0,-777.0,0.0000000,,
@@ -1,7 +1,7 @@
1
- OziExplorer Waypoint File Version 1.1
2
- WGS 84
3
- Reserved 2
4
-
5
- -1,OSLO,59.912730,10.746090,,0,1,3,0,65535,,0,,,-777,6,0,17
6
- -1,BERGEN,60.393580,5.324760,,0,1,3,0,65535,,0,,,-777,6,0,17
7
- -1,�NDALSNES,62.567490,7.687090,,0,1,3,0,65535,,0,,,-777,6,0,17
1
+ OziExplorer Waypoint File Version 1.1
2
+ WGS 84
3
+ Reserved 2
4
+
5
+ -1,OSLO,59.912730,10.746090,,0,1,3,0,65535,,0,,,-777,6,0,17
6
+ -1,BERGEN,60.393580,5.324760,,0,1,3,0,65535,,0,,,-777,6,0,17
7
+ -1NDALSNES,62.567490,7.687090,,0,1,3,0,65535,,0,,,-777,6,0,17
@@ -0,0 +1,6 @@
1
+ OziExplorer Waypoint File Version 1.1
2
+ WGS 84
3
+ Reserved 2
4
+ garmin
5
+ 1,Grorud, 59.960742, 10.881999,41977.3865272, 0, 0, 1, 0, 15441496,DescriptionÑ with comma, 0, 0, 0, 404, 6, 0,15,0,10.0,2,,,,60
6
+ 2,Lillestrøm, 59.956788, 11.051257,41977.3935379, 7, 0, 4, 16777215, 5450740,DescriptionÑ with comma, 0, 0, 0, -777, 6, 0,20,0,10.0,2,,,,60
metadata CHANGED
@@ -1,48 +1,144 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rozi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Sandven
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-07 00:00:00.000000000 Z
12
- dependencies: []
13
- description: A gem for working with several Ozi Explorer file formats
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: datastruct
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mocha
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: redcarpet
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: '3'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '3'
111
+ description: |2
112
+ Rozi makes it easy to create Ozi Explorer waypoint files, track files and
113
+ name search files. It also lets you read waypoint files. Check the docs for
114
+ a tutorial with examples.
14
115
  email: tomas191191@gmail.com
15
116
  executables: []
16
117
  extensions: []
17
118
  extra_rdoc_files: []
18
119
  files:
19
120
  - LICENSE.txt
20
- - README.rdoc
121
+ - README.md
21
122
  - lib/rozi.rb
22
123
  - lib/rozi/datums.rb
124
+ - lib/rozi/file_wrapper_base.rb
23
125
  - lib/rozi/module_functions.rb
24
- - lib/rozi/name.rb
25
- - lib/rozi/name_search_text.rb
26
- - lib/rozi/name_search_text_writer.rb
27
- - lib/rozi/ozi_functions.rb
28
- - lib/rozi/track.rb
29
- - lib/rozi/track_point.rb
30
- - lib/rozi/track_writer.rb
126
+ - lib/rozi/name_search.rb
127
+ - lib/rozi/shared.rb
128
+ - lib/rozi/tracks.rb
31
129
  - lib/rozi/version.rb
32
- - lib/rozi/waypoint.rb
33
- - lib/rozi/waypoint_writer.rb
130
+ - lib/rozi/waypoints.rb
131
+ - test/rozi/file_wrapper_base_test.rb
34
132
  - test/rozi/module_functions_test.rb
35
- - test/rozi/name_search_text_test.rb
36
- - test/rozi/name_search_text_writer_test.rb
37
- - test/rozi/ozi_functions_test.rb
38
- - test/rozi/track_point_test.rb
39
- - test/rozi/track_test.rb
40
- - test/rozi/track_writer_test.rb
41
- - test/rozi/waypoint_test.rb
42
- - test/rozi/waypoint_writer_test.rb
43
- - test_data/expected_output_1.plt
44
- - test_data/expected_output_1.wpt
45
- homepage: https://github.com/Codemonkey1991/rozi
133
+ - test/rozi/name_search_test.rb
134
+ - test/rozi/shared_test.rb
135
+ - test/rozi/tracks_test.rb
136
+ - test/rozi/waypoints_test.rb
137
+ - test/test_data/expected_output_1.nst
138
+ - test/test_data/expected_output_1.plt
139
+ - test/test_data/expected_output_1.wpt
140
+ - test/test_data/input_1.wpt
141
+ homepage: https://github.com/Hubro/rozi
46
142
  licenses:
47
143
  - GPL
48
144
  metadata: {}
@@ -54,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
54
150
  requirements:
55
151
  - - '>='
56
152
  - !ruby/object:Gem::Version
57
- version: '0'
153
+ version: 2.0.0
58
154
  required_rubygems_version: !ruby/object:Gem::Requirement
59
155
  requirements:
60
156
  - - '>='
@@ -67,12 +163,10 @@ signing_key:
67
163
  specification_version: 4
68
164
  summary: A gem for working with several Ozi Explorer file formats
69
165
  test_files:
70
- - test/rozi/track_writer_test.rb
71
- - test/rozi/track_test.rb
72
166
  - test/rozi/module_functions_test.rb
73
- - test/rozi/ozi_functions_test.rb
74
- - test/rozi/waypoint_test.rb
75
- - test/rozi/name_search_text_writer_test.rb
76
- - test/rozi/track_point_test.rb
77
- - test/rozi/name_search_text_test.rb
78
- - test/rozi/waypoint_writer_test.rb
167
+ - test/rozi/tracks_test.rb
168
+ - test/rozi/waypoints_test.rb
169
+ - test/rozi/file_wrapper_base_test.rb
170
+ - test/rozi/name_search_test.rb
171
+ - test/rozi/shared_test.rb
172
+ has_rdoc: