| 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); | |
| } | |
| } | |
| } |