@@ -111,6 +111,31 @@ class TestCalendar: XCTestCase {
111
111
XCTAssertEqual ( components. day, 18 )
112
112
113
113
}
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
+ }
114
139
115
140
func test_ampmSymbols( ) {
116
141
let calendar = Calendar ( identifier: . gregorian)
@@ -249,6 +274,7 @@ class TestCalendar: XCTestCase {
249
274
( " test_gettingDatesOnChineseCalendar " , test_gettingDatesOnChineseCalendar) ,
250
275
( " test_gettingDatesOnISO8601Calendar " , test_gettingDatesOnISO8601Calendar) ,
251
276
( " test_gettingDatesOnPersianCalendar " , test_gettingDatesOnPersianCalendar) ,
277
+ ( " test_gettingDatesOnJapaneseCalendar " , test_gettingDatesOnJapaneseCalendar) ,
252
278
( " test_copy " , test_copy) ,
253
279
( " test_addingDates " , test_addingDates) ,
254
280
( " test_datesNotOnWeekend " , test_datesNotOnWeekend) ,
0 commit comments