Skip to content

Commit 0bfcda9

Browse files
committed
Add tests for new Japanese calendar era name
- Add Calendar test - Add DateFormatter test
1 parent 9b11867 commit 0bfcda9

File tree

2 files changed

+50
-7
lines changed

2 files changed

+50
-7
lines changed

Tests/Foundation/Tests/TestCalendar.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,31 @@ class TestCalendar: XCTestCase {
111111
XCTAssertEqual(components.day, 18)
112112

113113
}
114+
115+
func test_gettingDatesOnJapaneseCalendar() throws {
116+
var calendar = Calendar(identifier: .japanese)
117+
calendar.timeZone = try XCTUnwrap( TimeZone(identifier: "UTC") )
118+
calendar.locale = Locale(identifier: "en_US_POSIX")
119+
120+
do {
121+
let date = Date(timeIntervalSince1970: 1556633400) // April 30, 2019
122+
let components = calendar.dateComponents([.era, .year, .month, .day], from: date)
123+
XCTAssertEqual(calendar.eraSymbols[try XCTUnwrap(components.era)], "Heisei")
124+
XCTAssertEqual(components.year, 31)
125+
XCTAssertEqual(components.month, 4)
126+
XCTAssertEqual(components.day, 30)
127+
}
128+
129+
// Test for new Japanese calendar era (starting from May 1, 2019)
130+
do {
131+
let date = Date(timeIntervalSince1970: 1556719800) // May 1, 2019
132+
let components = calendar.dateComponents([.era, .year, .month, .day], from: date)
133+
XCTAssertEqual(calendar.eraSymbols[try XCTUnwrap(components.era)], "Reiwa")
134+
XCTAssertEqual(components.year, 1)
135+
XCTAssertEqual(components.month, 5)
136+
XCTAssertEqual(components.day, 1)
137+
}
138+
}
114139

115140
func test_ampmSymbols() {
116141
let calendar = Calendar(identifier: .gregorian)
@@ -249,6 +274,7 @@ class TestCalendar: XCTestCase {
249274
("test_gettingDatesOnChineseCalendar", test_gettingDatesOnChineseCalendar),
250275
("test_gettingDatesOnISO8601Calendar", test_gettingDatesOnISO8601Calendar),
251276
("test_gettingDatesOnPersianCalendar", test_gettingDatesOnPersianCalendar),
277+
("test_gettingDatesOnJapaneseCalendar", test_gettingDatesOnJapaneseCalendar),
252278
("test_copy",test_copy),
253279
("test_addingDates", test_addingDates),
254280
("test_datesNotOnWeekend", test_datesNotOnWeekend),

Tests/Foundation/Tests/TestDateFormatter.swift

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -430,16 +430,33 @@ class TestDateFormatter: XCTestCase {
430430

431431
formatter.locale = Locale(identifier: "ja_JP")
432432
formatter.calendar = Calendar(identifier: .japanese)
433-
formatter.dateFormat = "Gy年M月dd日 HH:mm"
433+
formatter.dateFormat = "Gy年M月d日 HH:mm"
434434
formatter.timeZone = TimeZone(abbreviation: "JST")
435435

436-
// parse test
437-
let parsed = formatter.date(from: "平成31年4月30日 23:10")
438-
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556633400) // April 30, 2019, 11:10 PM (JST)
436+
do {
437+
// Parse test
438+
let parsed = formatter.date(from: "平成31年4月30日 23:10")
439+
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556633400) // April 30, 2019, 11:10 PM (JST)
440+
441+
// Format test
442+
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556633400)) // April 30, 2019, 11:10 PM (JST)
443+
XCTAssertEqual(dateString, "平成31年4月30日 23:10")
444+
}
439445

440-
// format test
441-
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556633400)) // April 30, 2019, 11:10 PM (JST)
442-
XCTAssertEqual(dateString, "平成31年4月30日 23:10")
446+
// Test for new Japanese era (starting from May 1, 2019)
447+
do {
448+
// Parse test
449+
let parsed = formatter.date(from: "令和1年5月1日 23:10")
450+
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
451+
452+
// Test for 元年(Gannen) representaion of 1st year
453+
let parsedAlt = formatter.date(from: "令和元年5月1日 23:10")
454+
XCTAssertEqual(parsedAlt?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
455+
456+
// Format test
457+
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556719800)) // May 1st, 2019, 11:10 PM (JST)
458+
XCTAssertEqual(dateString, "令和元年5月1日 23:10")
459+
}
443460
}
444461

445462
func test_orderOfPropertySetters() throws {

0 commit comments

Comments
 (0)