mormon 2.0.0 → 2.0.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.
- checksums.yaml +7 -0
- data/.gitignore +3 -1
- data/Gemfile.lock +1 -10
- data/README.md +31 -17
- data/lib/mormon/osm_distance_optimizer.rb +128 -0
- data/lib/mormon/osm_loader.rb +32 -44
- data/lib/mormon/osm_router.rb +22 -22
- data/lib/mormon/version.rb +1 -1
- data/lib/mormon/weight.rb +1 -0
- data/lib/mormon.rb +2 -0
- data/mormon.gemspec +4 -5
- data/spec/distance_optimizer_spec.rb +124 -0
- data/spec/map.osm +18216 -0
- metadata +24 -43
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'mormon'
|
3
|
+
|
4
|
+
def _spec_osm_file
|
5
|
+
File.join File.dirname(__FILE__), "map.osm"
|
6
|
+
end
|
7
|
+
|
8
|
+
describe Mormon::OSM::DistanceOptimizer do
|
9
|
+
def stops_for_test()
|
10
|
+
nodes = []
|
11
|
+
node1 = Mormon::OSM::StopNode.new()
|
12
|
+
node1.road = "Albanigade"
|
13
|
+
node1.house_number = "5"
|
14
|
+
node1.zip_code = "5000"
|
15
|
+
node1.node_id = 320168440
|
16
|
+
node1.distance = ""
|
17
|
+
nodes.push node1
|
18
|
+
|
19
|
+
node2 = Mormon::OSM::StopNode.new()
|
20
|
+
node2.road = "Nonnebakken"
|
21
|
+
node2.house_number = "8"
|
22
|
+
node2.zip_code = "5000"
|
23
|
+
node2.node_id = 1665865875
|
24
|
+
node2.distance = ""
|
25
|
+
nodes.push node2
|
26
|
+
|
27
|
+
node3 = Mormon::OSM::StopNode.new()
|
28
|
+
node3.road = "Kronprinsensgade"
|
29
|
+
node3.house_number = "12"
|
30
|
+
node3.zip_code = "5000"
|
31
|
+
node3.node_id = 87280124
|
32
|
+
node3.distance = ""
|
33
|
+
nodes.push node3
|
34
|
+
|
35
|
+
node4 = Mormon::OSM::StopNode.new()
|
36
|
+
node4.road = "Allegade"
|
37
|
+
node4.house_number = "58"
|
38
|
+
node4.zip_code = "5000"
|
39
|
+
node4.node_id = 275977555
|
40
|
+
node4.distance = ""
|
41
|
+
nodes.push node4
|
42
|
+
|
43
|
+
node5 = Mormon::OSM::StopNode.new()
|
44
|
+
node5.road = "Alexandragade"
|
45
|
+
node5.house_number = "13"
|
46
|
+
node5.zip_code = "5000"
|
47
|
+
node5.node_id = 266138285
|
48
|
+
node5.distance = ""
|
49
|
+
nodes.push node5
|
50
|
+
|
51
|
+
node6 = Mormon::OSM::StopNode.new()
|
52
|
+
node6.road = "Allegade"
|
53
|
+
node6.house_number = "34"
|
54
|
+
node6.zip_code = "5000"
|
55
|
+
node6.node_id = 275977558
|
56
|
+
node6.distance = ""
|
57
|
+
nodes.push node6
|
58
|
+
|
59
|
+
node7 = Mormon::OSM::StopNode.new()
|
60
|
+
node7.road = "Albanigade"
|
61
|
+
node7.house_number = "23"
|
62
|
+
node7.zip_code = "5000"
|
63
|
+
node7.node_id = 205071329
|
64
|
+
node7.distance = ""
|
65
|
+
nodes.push node7
|
66
|
+
|
67
|
+
node8 = Mormon::OSM::StopNode.new()
|
68
|
+
node8.road = "Benediktsgade"
|
69
|
+
node8.house_number = "44"
|
70
|
+
node8.zip_code = "5000"
|
71
|
+
node8.node_id = 112240951
|
72
|
+
node8.distance = ""
|
73
|
+
nodes.push node8
|
74
|
+
|
75
|
+
return nodes
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "Initializing test" do
|
79
|
+
|
80
|
+
it "Array correct length" do
|
81
|
+
stops = stops_for_test
|
82
|
+
stops.length.should eq 8
|
83
|
+
end
|
84
|
+
|
85
|
+
it "Should be sorted the initialized in correct order for sorting" do
|
86
|
+
stops = stops_for_test
|
87
|
+
stops[0].node_id.should eq 320168440
|
88
|
+
stops[1].node_id.should eq 1665865875
|
89
|
+
stops[2].node_id.should eq 87280124
|
90
|
+
stops[3].node_id.should eq 275977555
|
91
|
+
stops[4].node_id.should eq 266138285
|
92
|
+
stops[5].node_id.should eq 275977558
|
93
|
+
stops[6].node_id.should eq 205071329
|
94
|
+
stops[7].node_id.should eq 112240951
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "Final result" do
|
100
|
+
it "should have sorted the array and calculated the correct distances" do
|
101
|
+
loader = Mormon::OSM::Loader.new _spec_osm_file
|
102
|
+
stops = stops_for_test
|
103
|
+
route = Mormon::OSM::DistanceOptimizer.route_planer(stops, loader)
|
104
|
+
|
105
|
+
route[0].node_id.should eq 320168440
|
106
|
+
route[1].node_id.should eq 205071329
|
107
|
+
route[2].node_id.should eq 87280124
|
108
|
+
route[3].node_id.should eq 1665865875
|
109
|
+
route[4].node_id.should eq 266138285
|
110
|
+
route[5].node_id.should eq 112240951
|
111
|
+
route[6].node_id.should eq 275977558
|
112
|
+
route[7].node_id.should eq 275977555
|
113
|
+
|
114
|
+
route[0].distance.should eq 0.0
|
115
|
+
route[1].distance.should eq 322.04
|
116
|
+
route[2].distance.should eq 364.36
|
117
|
+
route[3].distance.should eq 690.44
|
118
|
+
route[4].distance.should eq 699.35
|
119
|
+
route[5].distance.should eq 785.7
|
120
|
+
route[6].distance.should eq 996.89
|
121
|
+
route[7].distance.should eq 1274.89
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|