rozi 0.0.7 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +255 -0
- data/lib/rozi.rb +6 -3
- data/lib/rozi/file_wrapper_base.rb +52 -0
- data/lib/rozi/module_functions.rb +19 -69
- data/lib/rozi/name_search.rb +176 -0
- data/lib/rozi/{ozi_functions.rb → shared.rb} +36 -9
- data/lib/rozi/tracks.rb +170 -0
- data/lib/rozi/version.rb +1 -1
- data/lib/rozi/waypoints.rb +315 -0
- data/test/rozi/file_wrapper_base_test.rb +29 -0
- data/test/rozi/module_functions_test.rb +11 -72
- data/test/rozi/name_search_test.rb +248 -0
- data/test/rozi/{ozi_functions_test.rb → shared_test.rb} +25 -5
- data/test/rozi/tracks_test.rb +105 -0
- data/test/rozi/waypoints_test.rb +268 -0
- data/test/test_data/expected_output_1.nst +6 -0
- data/{test_data → test/test_data}/expected_output_1.plt +9 -9
- data/{test_data → test/test_data}/expected_output_1.wpt +7 -7
- data/test/test_data/input_1.wpt +6 -0
- metadata +128 -34
- data/README.rdoc +0 -127
- data/lib/rozi/name.rb +0 -23
- data/lib/rozi/name_search_text.rb +0 -43
- data/lib/rozi/name_search_text_writer.rb +0 -71
- data/lib/rozi/track.rb +0 -67
- data/lib/rozi/track_point.rb +0 -39
- data/lib/rozi/track_writer.rb +0 -50
- data/lib/rozi/waypoint.rb +0 -90
- data/lib/rozi/waypoint_writer.rb +0 -38
- data/test/rozi/name_search_text_test.rb +0 -28
- data/test/rozi/name_search_text_writer_test.rb +0 -114
- data/test/rozi/track_point_test.rb +0 -32
- data/test/rozi/track_test.rb +0 -25
- data/test/rozi/track_writer_test.rb +0 -62
- data/test/rozi/waypoint_test.rb +0 -31
- data/test/rozi/waypoint_writer_test.rb +0 -60
data/lib/rozi/waypoint_writer.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
|
2
|
-
require "rozi/ozi_functions"
|
3
|
-
|
4
|
-
module Rozi
|
5
|
-
|
6
|
-
##
|
7
|
-
# This class writes a list of waypoints to a ".wpt" file that can be opened
|
8
|
-
# by Ozi Explorer.
|
9
|
-
#
|
10
|
-
class WaypointWriter
|
11
|
-
|
12
|
-
include OziFunctions
|
13
|
-
|
14
|
-
def write(waypoints, file)
|
15
|
-
file.write <<-TEXT.gsub(/^[ ]{8}/, "")
|
16
|
-
OziExplorer Waypoint File Version 1.1
|
17
|
-
WGS 84
|
18
|
-
Reserved 2
|
19
|
-
|
20
|
-
TEXT
|
21
|
-
|
22
|
-
waypoints.each { |wpt|
|
23
|
-
file.write(waypoint_to_text(wpt))
|
24
|
-
file.write("\n")
|
25
|
-
}
|
26
|
-
end
|
27
|
-
|
28
|
-
def waypoint_to_text(waypoint)
|
29
|
-
wpt = waypoint.to_a()
|
30
|
-
wpt.map! { |item| item.is_a?(String) ? escape_text(item) : item }
|
31
|
-
wpt.map! { |item| item.nil? ? "" : item }
|
32
|
-
wpt.map! { |item| item.is_a?(Float) ? item.round(6) : item }
|
33
|
-
|
34
|
-
"%d,%s,%f,%f,%s,%d,1,%d,%d,%d,%s,%d,,,%d,%d,%d,%d" % wpt
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rozi
|
3
|
-
|
4
|
-
class NameSearchTextTest < Minitest::Test
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@subject = NameSearchText.new
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_add_name
|
11
|
-
@subject << :foo
|
12
|
-
@subject << :bar
|
13
|
-
|
14
|
-
assert_equal [:foo, :bar], @subject.names
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_set_datum
|
18
|
-
@subject.datum = "WGS 84"
|
19
|
-
@subject.datum = "Adindan"
|
20
|
-
|
21
|
-
assert_raises(ArgumentError) {
|
22
|
-
@subject.datum = "Foo bar"
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,114 +0,0 @@
|
|
1
|
-
|
2
|
-
require "stringio"
|
3
|
-
|
4
|
-
module Rozi
|
5
|
-
|
6
|
-
class NameSearchTextWriterTest < Minitest::Test
|
7
|
-
|
8
|
-
def setup
|
9
|
-
@subject = NameSearchTextWriter.new
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_write_wgs_84
|
13
|
-
expected_output = <<-NST.gsub(/ {8}/, "")
|
14
|
-
;Foo
|
15
|
-
;Bar
|
16
|
-
;Baz
|
17
|
-
#1,,
|
18
|
-
#2,WGS 84
|
19
|
-
Oslo,Cities,,12.34,56.78
|
20
|
-
Bergen,Cities,,23.45,67.89
|
21
|
-
NST
|
22
|
-
|
23
|
-
nst = NameSearchText.new
|
24
|
-
nst.comment = "Foo\nBar\nBaz"
|
25
|
-
nst << Name.new("Oslo", "Cities", nil, 12.34, 56.78)
|
26
|
-
nst << Name.new("Bergen", "Cities", nil, 23.45, 67.89)
|
27
|
-
|
28
|
-
output = write_to_string nst
|
29
|
-
|
30
|
-
assert_equal expected_output, output
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_write_wgs_utm
|
34
|
-
expected_output = <<-NST.gsub(/ {8}/, "")
|
35
|
-
#1,UTM,32V,N
|
36
|
-
#2,Norsk
|
37
|
-
Oslo,Cities,,12.34,56.78
|
38
|
-
Bergen,Cities,33,23.45,67.89
|
39
|
-
NST
|
40
|
-
|
41
|
-
nst = NameSearchText.new
|
42
|
-
nst.utm = true
|
43
|
-
nst.utm_zone = "32V"
|
44
|
-
nst.hemisphere = "N"
|
45
|
-
nst.datum = "Norsk"
|
46
|
-
|
47
|
-
nst << Name.new("Oslo", "Cities", nil, 12.34, 56.78)
|
48
|
-
nst << Name.new("Bergen", "Cities", "33", 23.45, 67.89)
|
49
|
-
|
50
|
-
output = write_to_string nst
|
51
|
-
|
52
|
-
assert_equal expected_output, output
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_construct_first_line_latlng
|
56
|
-
nst = NameSearchText.new
|
57
|
-
nst.utm = false
|
58
|
-
|
59
|
-
assert_equal "#1,,", @subject.send(:construct_first_line, nst)
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_construct_first_line_utm
|
63
|
-
nst = NameSearchText.new
|
64
|
-
nst.utm = true
|
65
|
-
nst.utm_zone = "32"
|
66
|
-
nst.hemisphere = "N"
|
67
|
-
|
68
|
-
assert_equal "#1,UTM,32,N", @subject.send(:construct_first_line, nst)
|
69
|
-
|
70
|
-
nst.hemisphere = nil
|
71
|
-
|
72
|
-
assert_equal "#1,UTM,32", @subject.send(:construct_first_line, nst)
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_construct_second_line
|
76
|
-
nst = NameSearchText.new
|
77
|
-
nst.datum = "Egypt"
|
78
|
-
|
79
|
-
assert_equal "#2,Egypt", @subject.send(:construct_second_line, nst)
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_name_to_line
|
83
|
-
name = Rozi::Name.new "Foo", "Bar", nil, 12.34, 56.78
|
84
|
-
|
85
|
-
expected_output = "Foo,Bar,,12.34,56.78"
|
86
|
-
output = @subject.send :name_to_line, name
|
87
|
-
|
88
|
-
assert_equal expected_output, output
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_name_to_line_missing_components
|
92
|
-
name1 = Rozi::Name.new nil, "Bar", nil, 12.34, 56.78
|
93
|
-
name2 = Rozi::Name.new "Foo", "Bar", nil, nil, nil
|
94
|
-
name3 = Rozi::Name.new nil, "Bar", nil, nil, nil
|
95
|
-
|
96
|
-
[name1, name2, name3].each { |name|
|
97
|
-
assert_raises(RuntimeError) {
|
98
|
-
@subject.send(:name_to_line, name)
|
99
|
-
}
|
100
|
-
}
|
101
|
-
end
|
102
|
-
|
103
|
-
def write_to_string(nst)
|
104
|
-
file = StringIO.new
|
105
|
-
|
106
|
-
@subject.write(nst, file)
|
107
|
-
|
108
|
-
file.rewind
|
109
|
-
return file.read
|
110
|
-
end
|
111
|
-
|
112
|
-
end
|
113
|
-
|
114
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rozi
|
3
|
-
|
4
|
-
class TrackPointTest < Minitest::Test
|
5
|
-
def test_initialize_defaults
|
6
|
-
point = TrackPoint.new()
|
7
|
-
|
8
|
-
TrackPoint::DEFAULTS.each_pair { |key, value|
|
9
|
-
assert_equal value, point.send(key)
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_initialize_with_args
|
14
|
-
attrs = {latitude: 123.45, longitude: 567.89, break: 1}
|
15
|
-
point = TrackPoint.new(attrs)
|
16
|
-
|
17
|
-
attrs.each_pair { |key, value|
|
18
|
-
assert_equal value, point.send(key)
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_to_a
|
23
|
-
point = TrackPoint.new(latitude: 123.45, longitude: 234.56)
|
24
|
-
|
25
|
-
assert_equal(
|
26
|
-
[123.45, 234.56, 0, -777, 0, "", ""],
|
27
|
-
point.to_a()
|
28
|
-
)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
data/test/rozi/track_test.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rozi
|
3
|
-
|
4
|
-
class TrackTest < Minitest::Test
|
5
|
-
def test_initialize_defaults
|
6
|
-
t = Track.new()
|
7
|
-
|
8
|
-
Track::DEFAULTS.each_pair { |key, value|
|
9
|
-
assert_equal value, t.send(key)
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_initialize_with_args
|
14
|
-
points = [:foo, :bar]
|
15
|
-
attrs = {points: points, line_width: 2, type: 10}
|
16
|
-
|
17
|
-
t = Track.new(attrs)
|
18
|
-
|
19
|
-
attrs.each_pair { |key, value|
|
20
|
-
assert_equal value, t.send(key)
|
21
|
-
}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
|
2
|
-
require "stringio"
|
3
|
-
|
4
|
-
module Rozi
|
5
|
-
|
6
|
-
class TrackWriterTest < Minitest::Test
|
7
|
-
def test_write
|
8
|
-
point1 = mock()
|
9
|
-
point1.expects(:to_a).returns([12.34, 56.78, 0, -777, 0, "", ""])
|
10
|
-
|
11
|
-
point2 = mock()
|
12
|
-
point2.expects(:to_a).returns([23.45, 67.89, 0, -777, 0, "", ""])
|
13
|
-
|
14
|
-
track = mock()
|
15
|
-
track.expects(:attributes).returns([2, 255, "foo, bar", 1, 0, 0, 0])
|
16
|
-
track.expects(:points).twice.returns([point1, point2])
|
17
|
-
|
18
|
-
file = StringIO.new()
|
19
|
-
|
20
|
-
subject = TrackWriter.new()
|
21
|
-
subject.write(track, file)
|
22
|
-
|
23
|
-
file.rewind()
|
24
|
-
|
25
|
-
assert_equal(<<-TRACK, file.read())
|
26
|
-
OziExplorer Track Point File Version 2.1
|
27
|
-
WGS 84
|
28
|
-
Altitude is in Feet
|
29
|
-
Reserved 3
|
30
|
-
0,2,255,fooÑ bar,1,0,0,0
|
31
|
-
2
|
32
|
-
12.340000,56.780000,0,-777.0,0.0000000,,
|
33
|
-
23.450000,67.890000,0,-777.0,0.0000000,,
|
34
|
-
TRACK
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_track_attributes_to_text
|
38
|
-
subject = TrackWriter.new()
|
39
|
-
|
40
|
-
track = mock()
|
41
|
-
track.expects(:attributes).returns([2, 0, "foo, bar", 1, 0, 0, 0])
|
42
|
-
|
43
|
-
assert_equal(
|
44
|
-
"0,2,0,fooÑ bar,1,0,0,0",
|
45
|
-
subject.track_attributes_to_text(track)
|
46
|
-
)
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_track_point_to_text
|
50
|
-
subject = TrackWriter.new()
|
51
|
-
|
52
|
-
point = mock()
|
53
|
-
point.expects(:to_a).returns([12.34, 56.78, 0, -777, 0, "", ""])
|
54
|
-
|
55
|
-
assert_equal(
|
56
|
-
" 12.340000,56.780000,0,-777.0,0.0000000,,",
|
57
|
-
subject.track_point_to_text(point)
|
58
|
-
)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
data/test/rozi/waypoint_test.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rozi
|
3
|
-
|
4
|
-
class WaypointTest < Minitest::Test
|
5
|
-
def test_initialize
|
6
|
-
wp = Waypoint.new(number: 5, name: "Test point")
|
7
|
-
|
8
|
-
assert_equal "Test point", wp.name
|
9
|
-
assert_equal 5, wp.number
|
10
|
-
|
11
|
-
assert_raises(ArgumentError) {
|
12
|
-
# Invalid attribute "foo".
|
13
|
-
wp = Waypoint.new(foo: 123)
|
14
|
-
}
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_colors
|
18
|
-
wp = Waypoint.new()
|
19
|
-
|
20
|
-
wp.fg_color = "000000"
|
21
|
-
assert_equal 0, wp.fg_color
|
22
|
-
|
23
|
-
wp.fg_color = "ABCDEF"
|
24
|
-
assert_equal 15715755, wp.fg_color
|
25
|
-
|
26
|
-
wp.fg_color = 128
|
27
|
-
assert_equal 128, wp.fg_color
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
|
2
|
-
module Rozi
|
3
|
-
|
4
|
-
class WaypointWriterTest < Minitest::Test
|
5
|
-
def setup
|
6
|
-
@subject = WaypointWriter.new()
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_write
|
10
|
-
waypoints = []
|
11
|
-
waypoints << Waypoint.new(
|
12
|
-
name: "Test", latitude: 60.872030, longitude: 12.049732
|
13
|
-
)
|
14
|
-
waypoints << Waypoint.new(
|
15
|
-
name: "Test 2", latitude: 61.872030, longitude: 12.049732
|
16
|
-
)
|
17
|
-
waypoints << Waypoint.new(
|
18
|
-
name: "Test 3", latitude: 60.872030, longitude: 13.049732
|
19
|
-
)
|
20
|
-
|
21
|
-
file = StringIO.new()
|
22
|
-
|
23
|
-
@subject.write(waypoints, file)
|
24
|
-
|
25
|
-
expected_output = <<-TEXT.chomp
|
26
|
-
OziExplorer Waypoint File Version 1.1
|
27
|
-
WGS 84
|
28
|
-
Reserved 2
|
29
|
-
|
30
|
-
-1,Test,60.872030,12.049732,,3,1,4,0,65535,,0,,,-777,6,0,17
|
31
|
-
-1,Test 2,61.872030,12.049732,,3,1,4,0,65535,,0,,,-777,6,0,17
|
32
|
-
-1,Test 3,60.872030,13.049732,,3,1,4,0,65535,,0,,,-777,6,0,17
|
33
|
-
TEXT
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_waypoint_to_text
|
37
|
-
wpt = Waypoint.new(name: "test")
|
38
|
-
|
39
|
-
assert_equal(
|
40
|
-
"-1,test,0.000000,0.000000,,0,1,3,0,65535,,0,,,-777,6,0,17",
|
41
|
-
@subject.waypoint_to_text(wpt)
|
42
|
-
)
|
43
|
-
|
44
|
-
wpt = Waypoint.new(name: "test", symbol: 4)
|
45
|
-
|
46
|
-
assert_equal(
|
47
|
-
"-1,test,0.000000,0.000000,,4,1,3,0,65535,,0,,,-777,6,0,17",
|
48
|
-
@subject.waypoint_to_text(wpt)
|
49
|
-
)
|
50
|
-
|
51
|
-
wpt = Waypoint.new(name: "test", description: "æøå, ÆØÅ")
|
52
|
-
|
53
|
-
assert_equal(
|
54
|
-
"-1,test,0.000000,0.000000,,0,1,3,0,65535,æøåÑ ÆØÅ,0,,,-777,6,0,17",
|
55
|
-
@subject.waypoint_to_text(wpt)
|
56
|
-
)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|