| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Text; |
| using Microsoft.VisualStudio.TestTools.UnitTesting; |
| using OfficeOpenXml.DataValidation; |
| |
| namespace EPPlusTest.DataValidation |
| { |
| [TestClass] |
| public class ExcelTimeTests |
| { |
| private ExcelTime _time; |
| private readonly decimal SecondsPerHour = 3600; |
| // private readonly decimal HoursPerDay = 24; |
| private readonly decimal SecondsPerDay = 3600 * 24; |
| |
| private decimal Round(decimal value) |
| { |
| return Math.Round(value, ExcelTime.NumberOfDecimals); |
| } |
| |
| [TestInitialize] |
| public void Setup() |
| { |
| _time = new ExcelTime(); |
| } |
| |
| [TestCleanup] |
| public void Cleanup() |
| { |
| _time = null; |
| } |
| |
| [TestMethod, ExpectedException(typeof(ArgumentException))] |
| public void ExcelTimeTests_ConstructorWithValue_ShouldThrowIfValueIsLessThan0() |
| { |
| new ExcelTime(-1); |
| } |
| |
| [TestMethod, ExpectedException(typeof(ArgumentException))] |
| public void ExcelTimeTests_ConstructorWithValue_ShouldThrowIfValueIsEqualToOrGreaterThan1() |
| { |
| new ExcelTime(1); |
| } |
| |
| [TestMethod, ExpectedException(typeof(InvalidOperationException))] |
| public void ExcelTimeTests_Hour_ShouldThrowIfNegativeValue() |
| { |
| _time.Hour = -1; |
| } |
| |
| [TestMethod, ExpectedException(typeof(InvalidOperationException))] |
| public void ExcelTimeTests_Minute_ShouldThrowIfNegativeValue() |
| { |
| _time.Minute = -1; |
| } |
| |
| [TestMethod, ExpectedException(typeof(InvalidOperationException))] |
| public void ExcelTimeTests_Minute_ShouldThrowIValueIsGreaterThan59() |
| { |
| _time.Minute = 60; |
| } |
| |
| [TestMethod, ExpectedException(typeof(InvalidOperationException))] |
| public void ExcelTimeTests_Second_ShouldThrowIfNegativeValue() |
| { |
| _time.Second = -1; |
| } |
| |
| [TestMethod, ExpectedException(typeof(InvalidOperationException))] |
| public void ExcelTimeTests_Second_ShouldThrowIValueIsGreaterThan59() |
| { |
| _time.Second = 60; |
| } |
| |
| [TestMethod] |
| public void ExcelTimeTests_ToExcelTime_HourIsSet() |
| { |
| // Act |
| _time.Hour = 1; |
| |
| // Assert |
| Assert.AreEqual(Round(SecondsPerHour/SecondsPerDay), _time.ToExcelTime()); |
| } |
| |
| [TestMethod] |
| public void ExcelTimeTests_ToExcelTime_MinuteIsSet() |
| { |
| // Arrange |
| decimal expected = SecondsPerHour + (20M * 60M); |
| // Act |
| _time.Hour = 1; |
| _time.Minute = 20; |
| |
| // Assert |
| Assert.AreEqual(Round(expected/SecondsPerDay), _time.ToExcelTime()); |
| } |
| |
| [TestMethod] |
| public void ExcelTimeTests_ToExcelTime_SecondIsSet() |
| { |
| // Arrange |
| decimal expected = SecondsPerHour + (20M * 60M) + 10M; |
| // Act |
| _time.Hour = 1; |
| _time.Minute = 20; |
| _time.Second = 10; |
| |
| // Assert |
| Assert.AreEqual(Round(expected / SecondsPerDay), _time.ToExcelTime()); |
| } |
| |
| [TestMethod] |
| public void ExcelTimeTests_ConstructorWithValue_ShouldSetHour() |
| { |
| // Arrange |
| decimal value = 3660M/(decimal)SecondsPerDay; |
| |
| // Act |
| var time = new ExcelTime(value); |
| |
| // Assert |
| Assert.AreEqual(1, time.Hour); |
| } |
| |
| [TestMethod] |
| public void ExcelTimeTests_ConstructorWithValue_ShouldSetMinute() |
| { |
| // Arrange |
| decimal value = 3660M / (decimal)SecondsPerDay; |
| |
| // Act |
| var time = new ExcelTime(value); |
| |
| // Assert |
| Assert.AreEqual(1, time.Minute); |
| } |
| |
| [TestMethod] |
| public void ExcelTimeTests_ConstructorWithValue_ShouldSetSecond() |
| { |
| // Arrange |
| decimal value = 3662M / (decimal)SecondsPerDay; |
| |
| // Act |
| var time = new ExcelTime(value); |
| |
| // Assert |
| Assert.AreEqual(2, time.Second); |
| } |
| } |
| } |