|
11 | 11 | //! let chinese_date = Date::try_new_chinese_with_calendar(2023, 6, 6, chinese)
|
12 | 12 | //! .expect("Failed to initialize Chinese Date instance.");
|
13 | 13 | //!
|
14 |
| -//! assert_eq!(chinese_date.year().era_year_or_related_iso(), 2023); |
15 |
| -//! assert_eq!(chinese_date.year().cyclic().unwrap().get(), 40); |
| 14 | +//! assert_eq!(chinese_date.cyclic_year().related_iso, 2023); |
| 15 | +//! assert_eq!(chinese_date.cyclic_year().year.get(), 40); |
16 | 16 | //! assert_eq!(chinese_date.month().ordinal, 6);
|
17 | 17 | //! assert_eq!(chinese_date.day_of_month().0, 6);
|
18 | 18 | //! ```
|
@@ -159,6 +159,7 @@ impl Chinese {
|
159 | 159 |
|
160 | 160 | impl Calendar for Chinese {
|
161 | 161 | type DateInner = ChineseDateInner;
|
| 162 | + type Year = types::CyclicYear; |
162 | 163 |
|
163 | 164 | // Construct a date from era/month codes and fields
|
164 | 165 | fn from_codes(
|
@@ -242,15 +243,18 @@ impl Calendar for Chinese {
|
242 | 243 | Self::DEBUG_NAME
|
243 | 244 | }
|
244 | 245 |
|
245 |
| - fn year(&self, date: &Self::DateInner) -> types::YearInfo { |
| 246 | + fn year_info(&self, date: &Self::DateInner) -> Self::Year { |
246 | 247 | let year = date.0 .0.year;
|
247 | 248 | let cyclic = (year.related_iso - 4).rem_euclid(60) as u8;
|
248 | 249 | let cyclic = NonZeroU8::new(cyclic + 1).unwrap_or(NonZeroU8::MIN); // 1-indexed
|
249 |
| - types::YearInfo::new_cyclic( |
250 |
| - chinese_based::Chinese::extended_from_iso(year.related_iso), |
251 |
| - cyclic, |
252 |
| - year.related_iso, |
253 |
| - ) |
| 250 | + types::CyclicYear { |
| 251 | + year: cyclic, |
| 252 | + related_iso: year.related_iso, |
| 253 | + } |
| 254 | + } |
| 255 | + |
| 256 | + fn extended_year(&self, date: &Self::DateInner) -> i32 { |
| 257 | + chinese_based::Chinese::extended_from_iso(date.0 .0.year.related_iso) |
254 | 258 | }
|
255 | 259 |
|
256 | 260 | fn is_in_leap_year(&self, date: &Self::DateInner) -> bool {
|
@@ -302,9 +306,8 @@ impl<A: AsCalendar<Calendar = Chinese>> Date<A> {
|
302 | 306 | /// Date::try_new_chinese_with_calendar(2023, 6, 11, chinese)
|
303 | 307 | /// .expect("Failed to initialize Chinese Date instance.");
|
304 | 308 | ///
|
305 |
| - /// assert_eq!(date_chinese.year().era_year_or_related_iso(), 2023); |
306 |
| - /// assert_eq!(date_chinese.year().cyclic().unwrap().get(), 40); |
307 |
| - /// assert_eq!(date_chinese.year().related_iso(), Some(2023)); |
| 309 | + /// assert_eq!(date_chinese.cyclic_year().related_iso, 2023); |
| 310 | + /// assert_eq!(date_chinese.cyclic_year().year.get(), 40); |
308 | 311 | /// assert_eq!(date_chinese.month().ordinal, 6);
|
309 | 312 | /// assert_eq!(date_chinese.day_of_month().0, 11);
|
310 | 313 | /// ```
|
@@ -460,7 +463,7 @@ mod test {
|
460 | 463 | let chinese = Date::from_rata_die(rata_die, chinese);
|
461 | 464 | assert_eq!(
|
462 | 465 | case.expected_year,
|
463 |
| - chinese.year().extended_year, |
| 466 | + chinese.extended_year(), |
464 | 467 | "[{calendar_type}] Chinese from RD failed, case: {case:?}"
|
465 | 468 | );
|
466 | 469 | assert_eq!(
|
@@ -560,12 +563,12 @@ mod test {
|
560 | 563 | |chinese, _calendar_type| {
|
561 | 564 | let chinese = iso.to_calendar(chinese);
|
562 | 565 |
|
563 |
| - assert_eq!(chinese.year().era_year_or_related_iso(), -2636); |
| 566 | + assert_eq!(chinese.cyclic_year().related_iso, -2636); |
564 | 567 | assert_eq!(chinese.month().ordinal, 1);
|
565 | 568 | assert_eq!(chinese.month().standard_code.0, "M01");
|
566 | 569 | assert_eq!(chinese.day_of_month().0, 1);
|
567 |
| - assert_eq!(chinese.year().cyclic().unwrap().get(), 1); |
568 |
| - assert_eq!(chinese.year().related_iso(), Some(-2636)); |
| 570 | + assert_eq!(chinese.cyclic_year().year.get(), 1); |
| 571 | + assert_eq!(chinese.cyclic_year().related_iso, -2636); |
569 | 572 | },
|
570 | 573 | )
|
571 | 574 | }
|
@@ -613,7 +616,7 @@ mod test {
|
613 | 616 | let chinese = iso.to_calendar(chinese);
|
614 | 617 | assert_eq!(
|
615 | 618 | case.expected_year,
|
616 |
| - chinese.year().era_year_or_related_iso(), |
| 619 | + chinese.cyclic_year().related_iso, |
617 | 620 | "[{calendar_type}] ISO to Chinese failed for case: {case:?}"
|
618 | 621 | );
|
619 | 622 | assert_eq!(
|
@@ -1010,18 +1013,17 @@ mod test {
|
1010 | 1013 | &chinese_cached,
|
1011 | 1014 | |chinese, calendar_type| {
|
1012 | 1015 | let chinese = iso.to_calendar(chinese);
|
1013 |
| - let chinese_rel_iso = chinese.year().related_iso(); |
1014 |
| - let chinese_cyclic = chinese.year().cyclic(); |
| 1016 | + let chinese_rel_iso = chinese.cyclic_year().related_iso; |
| 1017 | + let chinese_cyclic = chinese.cyclic_year().year; |
1015 | 1018 | let chinese_month = chinese.month().ordinal;
|
1016 | 1019 | let chinese_day = chinese.day_of_month().0;
|
1017 | 1020 |
|
1018 | 1021 | assert_eq!(
|
1019 |
| - chinese_rel_iso, |
1020 |
| - Some(case.expected_rel_iso), |
| 1022 | + chinese_rel_iso, case.expected_rel_iso, |
1021 | 1023 | "[{calendar_type}] Related ISO failed for test case: {case:?}"
|
1022 | 1024 | );
|
1023 | 1025 | assert_eq!(
|
1024 |
| - chinese_cyclic.unwrap().get(), |
| 1026 | + chinese_cyclic.get(), |
1025 | 1027 | case.expected_cyclic,
|
1026 | 1028 | "[{calendar_type}] Cyclic year failed for test case: {case:?}"
|
1027 | 1029 | );
|
|
0 commit comments