Skip to content

Commit

Permalink
Merge pull request #2067 from spevans/pr_sr_10333
Browse files Browse the repository at this point in the history
  • Loading branch information
swift-ci committed Apr 16, 2019
2 parents aa34ba0 + e8c5f7a commit 87f86c6
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
6 changes: 5 additions & 1 deletion Foundation/NSCalendar.swift
Expand Up @@ -1242,7 +1242,11 @@ internal class _NSCopyOnWriteCalendar: NSCalendar {
private let lock = NSLock()
private var needsLocking_isMutated: Bool
private var needsLocking_backingCalendar: NSCalendar

override var _cfObject: CFCalendar {
copyBackingCalendarIfNeededWithMutation { _ in }
return self.backingCalendar._cfObject
}

var backingCalendar: NSCalendar {
lock.lock()
let it = needsLocking_backingCalendar
Expand Down
24 changes: 21 additions & 3 deletions TestFoundation/TestCalendar.swift
Expand Up @@ -16,8 +16,7 @@ class TestCalendar: XCTestCase {
("test_gettingDatesOnHebrewCalendar", test_gettingDatesOnHebrewCalendar ),
("test_gettingDatesOnChineseCalendar", test_gettingDatesOnChineseCalendar),
("test_gettingDatesOnISO8601Calendar", test_gettingDatesOnISO8601Calendar),
("test_gettingDatesOnPersianCalendar",
test_gettingDatesOnPersianCalendar),
("test_gettingDatesOnPersianCalendar", test_gettingDatesOnPersianCalendar),
("test_copy",test_copy),
("test_addingDates", test_addingDates),
("test_datesNotOnWeekend", test_datesNotOnWeekend),
Expand Down Expand Up @@ -157,7 +156,9 @@ class TestCalendar: XCTestCase {
let copy = calendar
XCTAssertTrue(copy == calendar)

//verify firstWeekday and minimumDaysInFirstWeek of 'copy'.
//verify firstWeekday and minimumDaysInFirstWeek of 'copy'.
calendar.firstWeekday = 3
calendar.minimumDaysInFirstWeek = 3
XCTAssertEqual(copy.firstWeekday, 2)
XCTAssertEqual(copy.minimumDaysInFirstWeek, 2)
}
Expand Down Expand Up @@ -216,6 +217,7 @@ class TestNSDateComponents: XCTestCase {
("test_copyNSDateComponents", test_copyNSDateComponents),
("test_dateDifferenceComponents", test_dateDifferenceComponents),
("test_nanoseconds", test_nanoseconds),
("test_currentCalendar", test_currentCalendar),
]
}

Expand Down Expand Up @@ -462,4 +464,20 @@ class TestNSDateComponents: XCTestCase {
XCTAssertEqual(diff4.second, -40)
XCTAssertEqual(diff4.nanosecond, -455549950)
}

func test_currentCalendar() {
let month = Calendar.current.dateComponents([.month], from: Date(timeIntervalSince1970: 1554678000)).month // 2019-04-07 23:00:00.000 Sunday
XCTAssertEqual(month, 4)

let components = Calendar.current.dateComponents(in: TimeZone(secondsFromGMT: 0)!, from: Date(timeIntervalSince1970: 1554678000))
XCTAssertEqual(components.year, 2019)
XCTAssertEqual(components.month, 4)
XCTAssertEqual(components.hour, 23)

let d1 = Date.init(timeIntervalSince1970: 1529431200.0) // 2018-06-19 18:00:00 +0000
let d2 = Date.init(timeIntervalSince1970: 1529604000.0) // 2018-06-21 18:00:00 +0000
XCTAssertEqual(Calendar.current.compare(d1, to: d2, toGranularity: .month), .orderedSame)
XCTAssertEqual(Calendar.current.compare(d1, to: d2, toGranularity: .weekday), .orderedAscending)
XCTAssertEqual(Calendar.current.compare(d2, to: d1, toGranularity: .weekday), .orderedDescending)
}
}

0 comments on commit 87f86c6

Please sign in to comment.