rozi 0.0.7 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: