diff options
| author | Alban Peignier | 2018-04-26 16:03:14 +0200 |
|---|---|---|
| committer | GitHub | 2018-04-26 16:03:14 +0200 |
| commit | c06e3d8791e84cee1277fee8bc66cfb6b372724c (patch) | |
| tree | 1591f4fcb3817a63f4b429d5dd5320dcbd2089d7 | |
| parent | d25c89b0be3f3de75f0f162aef9f314b1f876997 (diff) | |
| parent | 138764710a09bc551b64c1f70dd345663cc39ffd (diff) | |
| download | chouette-core-c06e3d8791e84cee1277fee8bc66cfb6b372724c.tar.bz2 | |
Merge pull request #533 from af83/6826-fix-times-interpolation
Fix times interpolation with day offsets. Fixes #6826
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 7 | ||||
| -rw-r--r-- | spec/models/chouette/vehicle_journey_spec.rb | 20 |
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 |
