Skip to content

Commit f2825a2

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

File tree

2 files changed

+62
-7
lines changed

2 files changed

+62
-7
lines changed

TestFoundation/TestCalendar.swift

Lines changed: 25 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,30 @@ class TestCalendar: XCTestCase {
131132
XCTAssertEqual(components.day, 18)
132133

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

135160
func test_ampmSymbols() {
136161
let calendar = Calendar(identifier: .gregorian)

TestFoundation/TestDateFormatter.swift

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -432,15 +432,45 @@ 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+
}
458+
459+
// Test for new Japanese era and 元年 representaion of 1st year
460+
// This block needs ICU 64.2
441461

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")
462+
// Disabled until the ICU is updated.
463+
// do {
464+
// // parse test
465+
// let parsed = formatter.date(from: "令和元年5月1日 23:10")
466+
// XCTAssertEqual(parsed?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
467+
//
468+
// let parsedAlt = formatter.date(from: "令和1年5月1日 23:10")
469+
// XCTAssertEqual(parsedAlt?.timeIntervalSince1970, 1556719800) // May 1st, 2019, 11:10 PM (JST)
470+
//
471+
// // format test
472+
// let dateString = formatter.string(from: Date(timeIntervalSince1970: 1556719800)) // May 1st, 2019, 11:10 PM (JST)
473+
// XCTAssertEqual(dateString, "令和元年5月1日 23:10")
474+
// }
445475
}
446476
}

0 commit comments

Comments
 (0)