@@ -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) ,
@@ -131,6 +132,31 @@ class TestCalendar: XCTestCase {
131
132
XCTAssertEqual ( components. day, 18 )
132
133
133
134
}
135
+
136
+ func test_gettingDatesOnJapaneseCalendar( ) throws {
137
+ var calendar = Calendar ( identifier: . japanese)
138
+ calendar. timeZone = try TimeZone ( identifier: " UTC " ) . unwrapped ( )
139
+ calendar. locale = Locale ( identifier: " en_US_POSIX " )
140
+
141
+ do {
142
+ let date = Date ( timeIntervalSince1970: 1556633400 ) // April 30, 2019
143
+ let components = calendar. dateComponents ( [ . era, . year, . month, . day] , from: date)
144
+ XCTAssertEqual ( calendar. eraSymbols [ try components. era. unwrapped ( ) ] , " Heisei " )
145
+ XCTAssertEqual ( components. year, 31 )
146
+ XCTAssertEqual ( components. month, 4 )
147
+ XCTAssertEqual ( components. day, 30 )
148
+ }
149
+
150
+ // Test for new Japanese calendar era (starting from May 1, 2019)
151
+ do {
152
+ let date = Date ( timeIntervalSince1970: 1556719800 ) // May 1, 2019
153
+ let components = calendar. dateComponents ( [ . era, . year, . month, . day] , from: date)
154
+ XCTAssertEqual ( calendar. eraSymbols [ try components. era. unwrapped ( ) ] , " Reiwa " )
155
+ XCTAssertEqual ( components. year, 1 )
156
+ XCTAssertEqual ( components. month, 5 )
157
+ XCTAssertEqual ( components. day, 1 )
158
+ }
159
+ }
134
160
135
161
func test_ampmSymbols( ) {
136
162
let calendar = Calendar ( identifier: . gregorian)
0 commit comments