Skip to content

Commit 57592c0

Browse files
committed
Remove equal periods duration after inserting period into TimePeriodChain
1 parent 8cfed3b commit 57592c0

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

Sources/SwiftDate/TimePeriod/Groups/TimePeriodChain.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ open class TimePeriodChain: TimePeriodGroup {
9494
//Shift all periods after inserted period
9595
for i in 0..<periods.count {
9696
if i > index && i > 0 {
97-
let currentPeriod = TimePeriod(start: period.start, end: period.end)
97+
let duration = periods[i].duration
9898
periods[i].start = periods[i - 1].end
99-
periods[i].end = periods[i].start!.addingTimeInterval(currentPeriod.duration)
99+
periods[i].end = periods[i].start!.addingTimeInterval(duration)
100100
}
101101
}
102102

Tests/SwiftDateTests/TestTimePeriodChain.swift

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// Copyright © 2019 Daniele Margutti. Licensed under MIT License.
99
//
1010

11-
import SwiftDate
11+
@testable import SwiftDate
1212
import XCTest
1313

1414
class TestTimePeriodChain: XCTestCase {
@@ -25,5 +25,22 @@ class TestTimePeriodChain: XCTestCase {
2525
XCTAssert(chain.start == periods.first!.start, "TimePeriodChain initial start not equals to source period start")
2626
XCTAssert(chain.end == periods.last!.end, "TimePeriodChain initial end not equals to source period end")
2727
}
28-
28+
29+
func testInsert () {
30+
let chain = TimePeriodChain(periods)
31+
let period = TimePeriod(start: .init(year: 2020, month: 1, day: 1), end: .init(year: 2020, month: 1, day: 20))
32+
33+
let originalDuration_0 = chain.periods[0].duration
34+
let originalDuration_1 = chain.periods[1].duration
35+
let originalDuration_2 = chain.periods[2].duration
36+
let originalDuration_3 = chain.periods[3].duration
37+
38+
chain.insert(period, at: 2)
39+
40+
XCTAssert(chain.periods[0].duration == originalDuration_0, "Unexpected duration of 0 period– Actual: \(chain.periods[0].duration) – Expected: \(originalDuration_0)")
41+
XCTAssert(chain.periods[1].duration == originalDuration_1, "Unexpected duration of 1 period – Actual: \(chain.periods[1].duration) – Expected: \(originalDuration_1)")
42+
XCTAssert(chain.periods[2].duration == period.duration, "Unexpected duration of 2 period – Actual: \(chain.periods[2].duration) – Expected: \(period.duration)")
43+
XCTAssert(chain.periods[3].duration == originalDuration_2, "Unexpected duration of 3 period – Actual: \(chain.periods[3].duration) – Expected: \(originalDuration_2)")
44+
XCTAssert(chain.periods[4].duration == originalDuration_3, "Unexpected duration of 4 period – Actual: \(chain.periods[4].duration) – Expected: \(originalDuration_3)")
45+
}
2946
}

0 commit comments

Comments
 (0)