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 | 
