using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace Falcon.SugarApi.Test
{
///
/// 日期时间扩展方法测试
///
[TestClass]
public class DateTimeExtendTest
{
///
/// 测试过程
///
[TestMethod]
public void TestFunction() {
var dt = DateTime.Now;
Console.WriteLine($"当前时间:{dt:yyyy-MM-dd}");
DateTime r;
int y = dt.Year, m = dt.Month, d = dt.Day;
r = dt.GetFirstDayOfTheWeek();
Console.WriteLine($"本周第一天(默认礼拜一):{r:yyyy-MM-dd}");
Assert.IsTrue(r.DayOfWeek == DayOfWeek.Monday, "默认星期一为第一天");
Assert.IsTrue(r.Year == y);
Assert.IsTrue(r.Month == m);
Assert.IsTrue(r.Hour == 0);
Assert.IsTrue(r.Minute == 0);
Assert.IsTrue(r.Second == 0);
r = dt.GetFirstDayOfTheWeek(DayOfWeek.Sunday);
Console.WriteLine($"本周第一天(礼拜天):{r:yyyy-MM-dd}");
Assert.IsTrue(r.DayOfWeek == DayOfWeek.Sunday, "默认星期天为第一天");
Assert.IsTrue(r.Year == y);
Assert.IsTrue(r.Month == m);
r = new DateTime(2022, 1, 1);
Assert.IsTrue(r.GetWeekOfTheYear() == 1);
r = new DateTime(2022, 1, 5);
Assert.IsTrue(r.GetWeekOfTheYear() == 2);
Assert.IsTrue(r.Hour == 0);
Assert.IsTrue(r.Minute == 0);
Assert.IsTrue(r.Second == 0);
r = dt.GetFirstDayOfTheYear();
Console.WriteLine($"当年的第一天{r:yyyy-MM-dd}");
Assert.IsTrue(r.Year == dt.Year);
Assert.IsTrue(r.Month == 1);
Assert.IsTrue(r.Day == 1);
Assert.IsTrue(r.Hour == 0);
Assert.IsTrue(r.Minute == 0);
Assert.IsTrue(r.Second == 0);
r = dt.GetDay(new DateOption {
DateRangeType = DateRangeType.Monthly, DateType = DateType.FirstDay, RetentionTime = true,
});
Console.WriteLine($"当月的第一天保持时间{r:yyyy-MM-dd HH:mm:ss}");
Assert.IsTrue(r.Year == dt.Year);
Assert.IsTrue(r.Month == dt.Month);
Assert.IsTrue(r.Day == 1);
Assert.IsTrue(r.Hour == dt.Hour);
Assert.IsTrue(r.Minute == dt.Minute);
Assert.IsTrue(r.Second == dt.Second);
r = dt.GetFirstDayOfTheMonth();
Console.WriteLine($"当月的第一天{r:yyyy-MM-dd HH:mm:ss}");
Assert.IsTrue(r.Year == dt.Year);
Assert.IsTrue(r.Month == dt.Month);
Assert.IsTrue(r.Day == 1);
Assert.IsTrue(r.Hour == 0);
Assert.IsTrue(r.Minute == 0);
Assert.IsTrue(r.Second == 0);
r = dt.GetDay(new DateOption { DateType = DateType.LastDay });
Console.WriteLine($"当月的最后一天{r:yyyy-MM-dd HH:mm:ss}");
Assert.IsTrue(r.Year == dt.Year);
Assert.IsTrue(r.Month == dt.Month);
Assert.IsTrue(r.Day == 29 || r.Day == 30 || r.Day == 31 );
Assert.IsTrue(r.Hour == 0);
Assert.IsTrue(r.Minute == 0);
Assert.IsTrue(r.Second == 0);
}
}
}