| using System; | |
| using System.Text; | |
| using System.Collections.Generic; | |
| using System.Linq; | |
| using Microsoft.VisualStudio.TestTools.UnitTesting; | |
| using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; | |
| namespace EPPlusTest.Excel.Functions | |
| { | |
| [TestClass] | |
| public class TimeStringParserTests | |
| { | |
| private double GetSerialNumber(int hour, int minute, int second) | |
| { | |
| var secondsInADay = 24d * 60d * 60d; | |
| return ((double)hour * 60 * 60 + (double)minute * 60 + (double)second) / secondsInADay; | |
| } | |
| [TestMethod] | |
| public void CanParseShouldHandleValid24HourPatterns() | |
| { | |
| var parser = new TimeStringParser(); | |
| Assert.IsTrue(parser.CanParse("10:12:55"), "Could not parse 10:12:55"); | |
| Assert.IsTrue(parser.CanParse("22:12:55"), "Could not parse 13:12:55"); | |
| Assert.IsTrue(parser.CanParse("13"), "Could not parse 13"); | |
| Assert.IsTrue(parser.CanParse("13:12"), "Could not parse 13:12"); | |
| } | |
| [TestMethod] | |
| public void CanParseShouldHandleValid12HourPatterns() | |
| { | |
| var parser = new TimeStringParser(); | |
| Assert.IsTrue(parser.CanParse("10:12:55 AM"), "Could not parse 10:12:55 AM"); | |
| Assert.IsTrue(parser.CanParse("9:12:55 PM"), "Could not parse 9:12:55 PM"); | |
| Assert.IsTrue(parser.CanParse("7 AM"), "Could not parse 7 AM"); | |
| Assert.IsTrue(parser.CanParse("4:12 PM"), "Could not parse 4:12 PM"); | |
| } | |
| [TestMethod] | |
| public void ParseShouldIdentifyPatternAndReturnCorrectResult() | |
| { | |
| var parser = new TimeStringParser(); | |
| var result = parser.Parse("10:12:55"); | |
| Assert.AreEqual(GetSerialNumber(10, 12, 55), result); | |
| } | |
| [TestMethod, ExpectedException(typeof(FormatException))] | |
| public void ParseShouldThrowExceptionIfSecondIsOutOfRange() | |
| { | |
| var parser = new TimeStringParser(); | |
| var result = parser.Parse("10:12:60"); | |
| } | |
| [TestMethod, ExpectedException(typeof(FormatException))] | |
| public void ParseShouldThrowExceptionIfMinuteIsOutOfRange() | |
| { | |
| var parser = new TimeStringParser(); | |
| var result = parser.Parse("10:60:55"); | |
| } | |
| [TestMethod] | |
| public void ParseShouldIdentify12HourAMPatternAndReturnCorrectResult() | |
| { | |
| var parser = new TimeStringParser(); | |
| var result = parser.Parse("10:12:55 AM"); | |
| Assert.AreEqual(GetSerialNumber(10, 12, 55), result); | |
| } | |
| [TestMethod] | |
| public void ParseShouldIdentify12HourPMPatternAndReturnCorrectResult() | |
| { | |
| var parser = new TimeStringParser(); | |
| var result = parser.Parse("10:12:55 PM"); | |
| Assert.AreEqual(GetSerialNumber(22, 12, 55), result); | |
| } | |
| } | |
| } |