aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-04-26 14:53:35 +0200
committerZog2018-04-26 14:53:35 +0200
commit138764710a09bc551b64c1f70dd345663cc39ffd (patch)
tree940749218ca9d555aac0b529f74be5d118b46c04
parente69dfa80737402286adbfe6f29edae2efca36fd8 (diff)
downloadchouette-core-138764710a09bc551b64c1f70dd345663cc39ffd.tar.bz2
Refs #6826; Fix times interpolation with day offsets6826-fix-times-interpolation
-rw-r--r--app/models/chouette/vehicle_journey.rb7
-rw-r--r--spec/models/chouette/vehicle_journey_spec.rb20
2 files changed, 26 insertions, 1 deletions
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb
index 8a29057e2..8b5354863 100644
--- a/app/models/chouette/vehicle_journey.rb
+++ b/app/models/chouette/vehicle_journey.rb
@@ -369,10 +369,15 @@ module Chouette
if before_cost && before_cost[:distance] && after_cost && after_cost[:distance]
before_distance = before_cost[:distance].to_f
after_distance = after_cost[:distance].to_f
- time = previous_stop.departure_time + before_distance / (before_distance+after_distance) * (vjas.arrival_time - previous_stop.departure_time)
+ arrival_time = vjas.arrival_time + (vjas.arrival_day_offset - previous_stop.departure_day_offset)*24.hours
+ time = previous_stop.departure_time + before_distance / (before_distance+after_distance) * (arrival_time - previous_stop.departure_time)
+ day_offset = time.day - 1
+ time -= day_offset*24.hours
encountered_borders.each do |b|
b.update_attribute :arrival_time, time
+ b.update_attribute :arrival_day_offset, previous_stop.arrival_day_offset + day_offset
b.update_attribute :departure_time, time
+ b.update_attribute :departure_day_offset, previous_stop.departure_day_offset + day_offset
end
end
encountered_borders = []
diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb
index 9cc695c3c..ce93588b0 100644
--- a/spec/models/chouette/vehicle_journey_spec.rb
+++ b/spec/models/chouette/vehicle_journey_spec.rb
@@ -966,5 +966,25 @@ describe Chouette::VehicleJourney, :type => :model do
expect(@target_3.departure_time).to eq @target_3.arrival_time
expect(@target_4.departure_time).to eq @target_3.arrival_time
end
+
+ context "with a day offset" do
+ before do
+ @end.update arrival_time: @middle.departure_time - 4.hours, departure_time: @middle.departure_time - 4.hours, departure_day_offset: 1, arrival_day_offset: 1
+ end
+
+ it "should compute passing time" do
+ @journey.reload.fill_passing_time_at_borders
+ expect(@target.reload.arrival_time.to_i).to eq (@start.reload.departure_time + 1.0/3 * (@middle.reload.arrival_time - @start.departure_time)).to_i
+ expect(@target_2.reload.arrival_time).to eq @target.arrival_time
+ expect(@target.departure_time).to eq @target.arrival_time
+ expect(@target_2.departure_time).to eq @target.arrival_time
+ expect(@target_3.reload.arrival_time.to_i).to eq (@middle.reload.departure_time - 14.hours).to_i
+ expect(@target_3.arrival_day_offset).to eq 1
+ expect(@target_3.departure_day_offset).to eq 1
+ expect(@target_4.reload.arrival_time).to eq @target_3.arrival_time
+ expect(@target_3.departure_time).to eq @target_3.arrival_time
+ expect(@target_4.departure_time).to eq @target_3.arrival_time
+ end
+ end
end
end