Skip to content

Commit 70d8d97

Browse files
committed
Add tests for new Japanese calendar era name
- Add Calendar test - Add DateFormatter test
1 parent 3cd1f79 commit 70d8d97

File tree

2 files changed

+60
-7
lines changed

2 files changed

+60
-7
lines changed

TestFoundation/TestCalendar.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class TestCalendar: XCTestCase {
1717
("test_gettingDatesOnChineseCalendar", test_gettingDatesOnChineseCalendar),
1818
("test_gettingDatesOnISO8601Calendar", test_gettingDatesOnISO8601Calendar),
1919
("test_gettingDatesOnPersianCalendar", test_gettingDatesOnPersianCalendar),
20+
("test_gettingDatesOnJapaneseCalendar", test_gettingDatesOnJapaneseCalendar),
2021
("test_copy",test_copy),
2122
("test_addingDates", test_addingDates),
2223
("test_datesNotOnWeekend", test_datesNotOnWeekend),
@@ -131,6 +132,31 @@ class TestCalendar: XCTestCase {
131132
XCTAssertEqual(components.day, 18)
132133

133134
}
135+
136+
func test_gettingDatesOnJapaneseCalendar() throws {
137+
var calendar = Calendar(identifier: .japanese)
138+
calendar.timeZone = try TimeZone(identifier: "UTC").unwrapped()
139+
calendar.locale = Locale(identifier: "en_US_POSIX")
140+
141+
do {
142+
let date = Date(timeIntervalSince1970: 1556633400) // April 30, 2019
143+
let components = calendar.dateComponents([.era, .year, .month, .day], from: date)
144+
XCTAssertEqual(calendar.eraSymbols[try components.era.unwrapped()], "Heisei")
145+
XCTAssertEqual(components.year, 31)
146+
XCTAssertEqual(components.month, 4)
147+
XCTAssertEqual(components.day, 30)
148+
}
149+
150+
// Test for new Japanese calendar era (starting from May 1, 2019)
151+
do {
152+
let date = Date(timeIntervalSince1970: 1556719800) // May 1, 2019
153+
let components = calendar.dateComponents([.era, .year, .month, .day], from: date)
154+
XCTAssertEqual(calendar.eraSymbols[try components.era.unwrapped()], "Reiwa")
155+
XCTAssertEqual(components.year, 1)
156+
XCTAssertEqual(components.month, 5)
157+
XCTAssertEqual(components.day, 1)
158+
}
159+
}
134160

135161
func test_ampmSymbols() {
136162
let calendar = Calendar(identifier: .gregorian)

TestFoundation/TestDateFormatter.swift

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -432,15 +432,42 @@ class TestDateFormatter: XCTestCase {
432432

433433
formatter.locale = Locale(identifier: "ja_JP")
434434
formatter.calendar = Calendar(identifier: .japanese)
435-
formatter.dateFormat = "Gy年M月dd日 HH:mm"
435+
formatter.dateFormat = "Gy年M月d日 HH:mm"
436436
formatter.timeZone = TimeZone(abbreviation: "JST")
437437

438-
// parse test
439-
let parsed = formatter.date(from: "平成31年4月30日 23:10")
440-
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556633400) // April 30, 2019, 11:10 PM (JST)
438+
do {
439+
// parse test
440+
let parsed = formatter.date(from: "平成31年4月30日 23:10")
441+
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556633400) // April 30, 2019, 11:10 PM (JST)
442+
443+
// format test
444+
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556633400)) // April 30, 2019, 11:10 PM (JST)
445+
XCTAssertEqual(dateString, "平成31年4月30日 23:10")
446+
}
447+
448+
// Test for new Japanese era (starting from May 1, 2019)
449+
do {
450+
// parse test
451+
let parsed = formatter.date(from: "令和1年5月1日 23:10")
452+
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
453+
454+
// format test
455+
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556719800)) // May 1st, 2019, 11:10 PM (JST)
456+
XCTAssertEqual(dateString, "令和1年5月1日 23:10")
457+
}
441458

442-
// format test
443-
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556633400)) // April 30, 2019, 11:10 PM (JST)
444-
XCTAssertEqual(dateString, "平成31年4月30日 23:10")
459+
// Test for new Japanese era and 元年(Gannen) representaion of 1st year
460+
if shouldAttemptXFailTests("These tests require ICU 64.2 or later. https://bugs.swift.org/browse/SR-10574") {
461+
// parse test
462+
let parsed = formatter.date(from: "令和元年5月1日 23:10")
463+
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
464+
465+
let parsedAlt = formatter.date(from: "令和1年5月1日 23:10")
466+
XCTAssertEqual(parsedAlt?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
467+
468+
// format test
469+
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556719800)) // May 1st, 2019, 11:10 PM (JST)
470+
XCTAssertEqual(dateString, "令和元年5月1日 23:10")
471+
}
445472
}
446473
}

0 commit comments

Comments
 (0)