public void FloorDateTimeHardTest() { var sut = new DateTime(1966, 7, 14, 13, 46, 15, 316); { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Milliseconds, 250); var expected = new DateTime(1966, 7, 14, 13, 46, 15, 250); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Seconds, 5); var expected = new DateTime(1966, 7, 14, 13, 46, 15); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Minutes, 10); var expected = new DateTime(1966, 7, 14, 13, 40, 0); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Hours, 3); var expected = new DateTime(1966, 7, 14, 12, 0, 0); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Days, 7); var expected = new DateTime(1966, 7, 8, 0, 0, 0); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Months, 3); var expected = new DateTime(1966, 7, 1, 0, 0, 0); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Years, 10); var expected = new DateTime(1960, 1, 1, 0, 0, 0); Assert.AreEqual(expected, flooredDateTime); } { try { DateTimeUtilities.FloorDateTime(sut, DateTimePart.Weeks, 1); Assert.Fail("An exception should have been thrown."); } catch (NotSupportedException) { } catch (Exception ex) { Assert.Fail($"The {ex.GetType()} type of exception was not expected!"); } } }
public void FloorDateTimeNow() { var sut = DateTime.Now; { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Milliseconds, 250); var expected = new DateTime(sut.Year, sut.Month, sut.Day, sut.Hour, sut.Minute, sut.Second, 250 * (sut.Millisecond / 250)); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Seconds, 5); var expected = new DateTime(sut.Year, sut.Month, sut.Day, sut.Hour, sut.Minute, 5 * (sut.Second / 5)); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Minutes, 10); var expected = new DateTime(sut.Year, sut.Month, sut.Day, sut.Hour, 10 * (sut.Minute / 10), 0); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Hours, 3); var expected = new DateTime(sut.Year, sut.Month, sut.Day, 3 * (sut.Hour / 3), 0, 0); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Days, 7); var expected = new DateTime(sut.Year, sut.Month, 1 + 7 * ((sut.Day - 1) / 7)); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Months, 3); var expected = new DateTime(sut.Year, 1 + 3 * ((sut.Month - 1) / 3), 1); Assert.AreEqual(expected, flooredDateTime); } { var flooredDateTime = DateTimeUtilities.FloorDateTime(sut, DateTimePart.Years, 10); var expected = new DateTime(10 * (sut.Year / 10), 1, 1); Assert.AreEqual(expected, flooredDateTime); } }