Skip to content

Commit ddeeecb

Browse files
committed
Add tests for new Japanese calendar era name
- Add Calendar test - Add DateFormatter test
1 parent cb63536 commit ddeeecb

File tree

2 files changed

+50
-7
lines changed

2 files changed

+50
-7
lines changed

TestFoundation/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),

TestFoundation/TestDateFormatter.swift

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

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

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)
439+
do {
440+
// Parse test
441+
let parsed = formatter.date(from: "平成31年4月30日 23:10")
442+
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556633400) // April 30, 2019, 11:10 PM (JST)
443+
444+
// Format test
445+
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556633400)) // April 30, 2019, 11:10 PM (JST)
446+
XCTAssertEqual(dateString, "平成31年4月30日 23:10")
447+
}
442448

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")
449+
// Test for new Japanese era (starting from May 1, 2019)
450+
do {
451+
// Parse test
452+
let parsed = formatter.date(from: "令和1年5月1日 23:10")
453+
XCTAssertEqual(parsed?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
454+
455+
// Test for 元年(Gannen) representaion of 1st year
456+
let parsedAlt = formatter.date(from: "令和元年5月1日 23:10")
457+
XCTAssertEqual(parsedAlt?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
458+
459+
// Format test
460+
let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556719800)) // May 1st, 2019, 11:10 PM (JST)
461+
XCTAssertEqual(dateString, "令和元年5月1日 23:10")
462+
}
446463
}
447464

448465
func test_orderOfPropertySetters() throws {

0 commit comments

Comments
 (0)