123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- using System;
- using Masuit.Tools.DateTimeExt;
- using Xunit;
- namespace Masuit.Tools.Abstractions.Test.DateTimeExt;
- public class ChineseCalendarTest
- {
- [Fact]
- public void Can_Test()
- {
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).AnimalString, "龙");
- Assert.Equal(new ChineseCalendar(new DateTime(2025, 1, 29)).ChineseCalendarHoliday, "春节");
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).ChineseConstellation, "毕月乌");
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).ChineseDateString, "二零二三年冬月二十");
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).ChineseHour, "甲子");
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 12, 21)).ChineseTwentyFourDay, "冬至");
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 12, 21)).ChineseTwentyFourNextDay, new ChineseCalendar(new DateTime(2025, 1, 5)));
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 12, 21)).ChineseTwentyFourPrevDay, new ChineseCalendar(new DateTime(2024, 12, 6)));
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).ChineseYear, 2023);
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).DateHoliday, "元旦");
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).DateString, "公元2024年1月1日");
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).GanZhiDateString, "癸卯年甲子月甲子日");
- Assert.True(new ChineseCalendar(new DateTime(2024, 1, 1)).IsChineseLeapYear);
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).NextDay, new ChineseCalendar(new DateTime(2024, 1, 2)));
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).PrevDay, new ChineseCalendar(new DateTime(2023, 12, 31)));
- Assert.Equal(new ChineseCalendar(new DateTime(2024, 1, 1)).WeekDay, DayOfWeek.Monday);
- }
- [Fact]
- public void Constructor_ShouldInitializeWithGregorianDate()
- {
- // Arrange
- var date = new DateTime(2023, 10, 1);
- // Act
- var calendar = new ChineseCalendar(date);
- // Assert
- Assert.Equal(date, calendar.Date);
- }
- [Fact]
- public void Constructor_ShouldInitializeWithLunarDate()
- {
- // Arrange
- var year = 2023;
- var month = 8;
- var day = 15;
- // Act
- var calendar = new ChineseCalendar(year, month, day);
- // Assert
- Assert.Equal(year, calendar.ChineseYear);
- Assert.Equal(month, calendar.ChineseMonth);
- Assert.Equal(day, calendar.ChineseDay);
- }
- [Fact]
- public void IsHoliday_ShouldReturnTrueForHoliday()
- {
- // Arrange
- var date = new DateTime(2023, 10, 1); // 国庆节
- var calendar = new ChineseCalendar(date);
- // Act
- var isHoliday = calendar.IsHoliday;
- // Assert
- Assert.True(isHoliday);
- }
- [Fact]
- public void IsWorkDay_ShouldReturnFalseForHoliday()
- {
- // Arrange
- var date = new DateTime(2023, 10, 1); // 国庆节
- var calendar = new ChineseCalendar(date);
- // Act
- var isWorkDay = calendar.IsWorkDay;
- // Assert
- Assert.False(isWorkDay);
- }
- [Fact]
- public void IsWorkDay_ShouldReturnTrueForWorkDay()
- {
- // Arrange
- var date = new DateTime(2023, 10, 9); // 普通工作日
- var calendar = new ChineseCalendar(date);
- // Act
- var isWorkDay = calendar.IsWorkDay;
- // Assert
- Assert.True(isWorkDay);
- }
- [Fact]
- public void AddDays_ShouldReturnCorrectDate()
- {
- // Arrange
- var date = new DateTime(2023, 10, 1);
- var calendar = new ChineseCalendar(date);
- // Act
- var newCalendar = calendar.AddDays(10);
- // Assert
- Assert.Equal(new DateTime(2023, 10, 11), newCalendar.Date);
- }
- [Fact]
- public void AddMonths_ShouldReturnCorrectDate()
- {
- // Arrange
- var date = new DateTime(2023, 10, 1);
- var calendar = new ChineseCalendar(date);
- // Act
- var newCalendar = calendar.AddMonths(2);
- // Assert
- Assert.Equal(new DateTime(2023, 12, 1), newCalendar.Date);
- }
- [Fact]
- public void Equals_ShouldReturnTrueForSameDate()
- {
- // Arrange
- var date = new DateTime(2023, 10, 1);
- var calendar1 = new ChineseCalendar(date);
- var calendar2 = new ChineseCalendar(date);
- // Act
- var isEqual = calendar1.Equals(calendar2);
- // Assert
- Assert.True(isEqual);
- }
- [Fact]
- public void Equals_ShouldReturnFalseForDifferentDate()
- {
- // Arrange
- var calendar1 = new ChineseCalendar(new DateTime(2023, 10, 1));
- var calendar2 = new ChineseCalendar(new DateTime(2023, 10, 2));
- // Act
- var isEqual = calendar1.Equals(calendar2);
- // Assert
- Assert.False(isEqual);
- }
- [Fact]
- public void ChineseCalendarHoliday_ShouldReturnCorrectHoliday()
- {
- // Arrange
- var date = new DateTime(2023, 1, 22); // 农历春节
- var calendar = new ChineseCalendar(date);
- // Act
- var holiday = calendar.ChineseCalendarHoliday;
- // Assert
- Assert.Equal("春节", holiday);
- }
- [Fact]
- public void WeekDayHoliday_ShouldReturnCorrectHoliday()
- {
- // Arrange
- var date = new DateTime(2023, 5, 14); // 母亲节
- var calendar = new ChineseCalendar(date);
- // Act
- var holiday = calendar.WeekDayHoliday;
- // Assert
- Assert.Equal("母亲节", holiday);
- }
- [Fact]
- public void DateHoliday_ShouldReturnCorrectHoliday()
- {
- // Arrange
- var date = new DateTime(2023, 10, 1); // 国庆节
- var calendar = new ChineseCalendar(date);
- // Act
- var holiday = calendar.DateHoliday;
- // Assert
- Assert.True(holiday.Contains("国庆节"));
- }
- [Fact]
- public void Constellation_ShouldReturnCorrectConstellation()
- {
- // Arrange
- var date = new DateTime(2023, 4, 20); // 金牛座
- var calendar = new ChineseCalendar(date);
- // Act
- var constellation = calendar.Constellation;
- // Assert
- Assert.Equal("金牛座", constellation);
- }
- [Fact]
- public void AnimalString_ShouldReturnCorrectAnimal()
- {
- // Arrange
- var date = new DateTime(2023, 1, 22); // 兔年
- var calendar = new ChineseCalendar(date);
- // Act
- var animal = calendar.AnimalString;
- // Assert
- Assert.Equal("兔", animal);
- }
- [Fact]
- public void GanZhiYearString_ShouldReturnCorrectGanZhiYear()
- {
- // Arrange
- var date = new DateTime(2023, 1, 22); // 癸卯年
- var calendar = new ChineseCalendar(date);
- // Act
- var ganZhiYear = calendar.GanZhiYearString;
- // Assert
- Assert.Equal("癸卯年", ganZhiYear);
- }
- [Fact]
- public void GanZhiMonthString_ShouldReturnCorrectGanZhiMonth()
- {
- // Arrange
- var date = new DateTime(2023, 1, 22); // 甲寅月
- var calendar = new ChineseCalendar(date);
- // Act
- var ganZhiMonth = calendar.GanZhiMonthString;
- // Assert
- Assert.Equal("甲寅月", ganZhiMonth);
- }
- [Fact]
- public void GanZhiDayString_ShouldReturnCorrectGanZhiDay()
- {
- // Arrange
- var date = new DateTime(2023, 1, 22);
- var calendar = new ChineseCalendar(date);
- // Act
- var ganZhiDay = calendar.GanZhiDayString;
- // Assert
- Assert.Equal("庚辰日", ganZhiDay);
- }
- }
|