aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/tom_tom/matrix.rb16
-rw-r--r--lib/tom_tom/matrix/point.rb24
-rw-r--r--spec/lib/tom_tom/matrix_spec.rb21
3 files changed, 54 insertions, 7 deletions
diff --git a/lib/tom_tom/matrix.rb b/lib/tom_tom/matrix.rb
index 985055dae..4ef620f99 100644
--- a/lib/tom_tom/matrix.rb
+++ b/lib/tom_tom/matrix.rb
@@ -32,8 +32,20 @@ module TomTom
points = Set.new
way_costs.each do |way_cost|
- points.add(way_cost.departure)
- points.add(way_cost.arrival)
+ ids = way_cost.id.split('-')
+
+ points.add(
+ TomTom::Matrix::Point.new(
+ way_cost.departure,
+ ids[0]
+ )
+ )
+ points.add(
+ TomTom::Matrix::Point.new(
+ way_cost.arrival,
+ ids[1]
+ )
+ )
end
points
diff --git a/lib/tom_tom/matrix/point.rb b/lib/tom_tom/matrix/point.rb
new file mode 100644
index 000000000..4e9d11e68
--- /dev/null
+++ b/lib/tom_tom/matrix/point.rb
@@ -0,0 +1,24 @@
+module TomTom
+ class Matrix
+ class Point
+ attr_reader :coordinates, :id
+
+ def initialize(coordinates, id)
+ @coordinates = coordinates
+ @id = id
+ end
+
+ def ==(other)
+ other.is_a?(self.class) &&
+ @coordinates == other.coordinates &&
+ @id == other.id
+ end
+
+ alias :eql? :==
+
+ def hash
+ @coordinates.hash + @id.hash
+ end
+ end
+ end
+end
diff --git a/spec/lib/tom_tom/matrix_spec.rb b/spec/lib/tom_tom/matrix_spec.rb
index 257bbd5fd..1cb47752d 100644
--- a/spec/lib/tom_tom/matrix_spec.rb
+++ b/spec/lib/tom_tom/matrix_spec.rb
@@ -6,20 +6,31 @@ RSpec.describe TomTom::Matrix do
way_costs = [
WayCost.new(
departure: Geokit::LatLng.new(48.85086, 2.36143),
- arrival: Geokit::LatLng.new(47.91231, 1.87606)
+ arrival: Geokit::LatLng.new(47.91231, 1.87606),
+ id: '44-77'
),
WayCost.new(
departure: Geokit::LatLng.new(47.91231, 1.87606),
- arrival: Geokit::LatLng.new(52.50867, 13.42879)
+ arrival: Geokit::LatLng.new(52.50867, 13.42879),
+ id: '77-88'
)
]
expect(
matrix.points_from_way_costs(way_costs)
).to eq(Set.new([
- Geokit::LatLng.new(48.85086, 2.36143),
- Geokit::LatLng.new(47.91231, 1.87606),
- Geokit::LatLng.new(52.50867, 13.42879)
+ TomTom::Matrix::Point.new(
+ Geokit::LatLng.new(48.85086, 2.36143),
+ '44'
+ ),
+ TomTom::Matrix::Point.new(
+ Geokit::LatLng.new(47.91231, 1.87606),
+ '77'
+ ),
+ TomTom::Matrix::Point.new(
+ Geokit::LatLng.new(52.50867, 13.42879),
+ '88'
+ )
]))
end
end