Skip to content

Commit e0cc72e

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

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
@@ -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),
@@ -132,6 +133,31 @@ class TestCalendar: XCTestCase {
132133
XCTAssertEqual(components.day, 18)
133134

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

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

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)