@@ -17,6 +17,7 @@ class TestCalendar: XCTestCase {
17
17
( " test_gettingDatesOnChineseCalendar " , test_gettingDatesOnChineseCalendar) ,
18
18
( " test_gettingDatesOnISO8601Calendar " , test_gettingDatesOnISO8601Calendar) ,
19
19
( " test_gettingDatesOnPersianCalendar " , test_gettingDatesOnPersianCalendar) ,
20
+ ( " test_gettingDatesOnJapaneseCalendar " , test_gettingDatesOnJapaneseCalendar) ,
20
21
( " test_copy " , test_copy) ,
21
22
( " test_addingDates " , test_addingDates) ,
22
23
( " test_datesNotOnWeekend " , test_datesNotOnWeekend) ,
@@ -132,6 +133,31 @@ class TestCalendar: XCTestCase {
132
133
XCTAssertEqual ( components. day, 18 )
133
134
134
135
}
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
+ }
135
161
136
162
func test_ampmSymbols( ) {
137
163
let calendar = Calendar ( identifier: . gregorian)
0 commit comments