Skip to content

Commit 18b19a5

Browse files
authored
[DateInterval] Fix func contains(_:) -> Bool. (#4591)
* [DateInterval] Modify tests to confirm that #4588 is resolved. * [DateInterval] Fix `func contains(_:) -> Bool`. Resolves #4588
1 parent c0e1381 commit 18b19a5

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

Sources/Foundation/DateInterval.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,7 @@ public struct DateInterval : ReferenceConvertible, Comparable, Hashable {
141141

142142
/// Returns `true` if `self` contains `date`.
143143
public func contains(_ date: Date) -> Bool {
144-
let timeIntervalForGivenDate = abs(date.timeIntervalSinceReferenceDate)
145-
let timeIntervalForSelfStart = abs(start.timeIntervalSinceReferenceDate)
146-
let timeIntervalForSelfEnd = abs(end.timeIntervalSinceReferenceDate)
147-
if (timeIntervalForGivenDate >= timeIntervalForSelfStart) && (timeIntervalForGivenDate <= timeIntervalForSelfEnd) {
148-
return true
149-
}
150-
return false
144+
return (start...end).contains(date)
151145
}
152146

153147
public func hash(into hasher: inout Hasher) {

Tests/Foundation/Tests/TestDateInterval.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,20 @@ class TestDateInterval: XCTestCase {
118118
}
119119

120120
func test_contains() {
121+
let date0 = dateWithString("1964-10-01 06:00:00 +0900")
121122
let date1 = dateWithString("2019-04-04 17:00:00 -0700")
122123
let date2 = dateWithString("2019-04-04 17:30:00 -0700")
123124
let date3 = dateWithString("2019-04-04 17:45:00 -0700")
124125
let date4 = dateWithString("2019-04-04 17:50:00 -0700")
125-
let dateInterval = DateInterval(start: date1, duration: 60 * 45)
126-
XCTAssertTrue(dateInterval.contains(date2))
127-
XCTAssertTrue(dateInterval.contains(date3))
128-
XCTAssertFalse(dateInterval.contains(date4))
126+
127+
XCTAssertTrue(DateInterval(start: .distantPast, end: .distantFuture).contains(date0))
128+
XCTAssertTrue(DateInterval(start: .distantPast, end: date1).contains(date0))
129+
XCTAssertFalse(DateInterval(start: .distantPast, end: date1).contains(date2))
130+
XCTAssertTrue(DateInterval(start: date0, end: date4).contains(date2))
131+
XCTAssertTrue(DateInterval(start: date1, duration: 60 * 45).contains(date3))
132+
XCTAssertFalse(DateInterval(start: date1, duration: 60 * 45).contains(date4))
133+
XCTAssertTrue(DateInterval(start: date2, end: .distantFuture).contains(date2))
134+
XCTAssertFalse(DateInterval(start: date2, end: .distantFuture).contains(date0))
129135
}
130136

131137
func test_hashing() {

0 commit comments

Comments
 (0)