using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using Helpers; namespace HelpersTest { /// /// Summary description for UnitTest1 /// [TestClass] public class DateHelperTests { public DateHelperTests() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// ///Gets or sets the test context which provides ///information about and functionality for the current test run. /// public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // [ClassInitialize()] // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // [ClassCleanup()] // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // [TestInitialize()] // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // [TestCleanup()] // public void MyTestCleanup() { } // #endregion [TestMethod] public void TestSecondsIncludingSeconds() { DateTime testTime = DateTime.Now; for(int i = 0; i <= 19; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(i), true); Assert.IsTrue(output.Contains("seconds"), string.Format("output = {0}", output)); } for (int i = 20; i <= 119; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(i), true); Assert.IsTrue(output.Contains("minute"), string.Format("output = {0}", output)); } } [TestMethod] public void TestSecondsWithoutSeconds() { DateTime testTime = DateTime.Now; for (int i = 0; i <= 59; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(i), false); Assert.IsTrue(output.Equals("less than a minute"), string.Format("output = {0}", output)); } for (int i = 60; i <= 119; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(i), false); Assert.IsTrue(output.Equals("1 minute"), string.Format("output = {0}", output)); } } [TestMethod] public void TestMultipleMinutes() { DateTime testTime = DateTime.Now; for (int i = 2; i <= 44; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains("minutes"), string.Format("output = {0}", output)); } } [TestMethod] public void TestAboutOneHour() { DateTime testTime = DateTime.Now; for (int i = 45; i <= 89; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains("about 1 hour"), string.Format("output = {0}", output)); } } [TestMethod] public void TestMultipleHours() { DateTime testTime = DateTime.Now; for (int i = 90; i <= 1439; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains(" hours"), string.Format("output = {0}", output)); } } [TestMethod] public void TestOneDay() { DateTime testTime = DateTime.Now; for (int i = 1440; i <= 2879; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains("1 day"), string.Format("output = {0}", output)); } } [TestMethod] public void TestMultipleDays() { DateTime testTime = DateTime.Now; for (int i = 2880; i <= 43199; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains(" days"), string.Format("output = {0}", output)); } } public void TestAboutOneMonth() { DateTime testTime = DateTime.Now; for (int i = 43200; i <= 86399; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains("about 1 month"), string.Format("output = {0}", output)); } } [TestMethod] public void TestMultipleMonths() { DateTime testTime = DateTime.Now; for (int i = 86400; i <= 525599; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains(" months"), string.Format("output = {0}", output)); } } public void TestAboutOneYear() { DateTime testTime = DateTime.Now; for (int i = 525600; i <= 1051199; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains("about 1 year"), string.Format("output = {0}", output)); } } [TestMethod] public void TestMultipleYears() { DateTime testTime = DateTime.Now; for (int i = 1051200; i <= 1551200; i++) { string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(i), false); Assert.IsTrue(output.Contains(" years"), string.Format("output = {0}", output)); } } [TestMethod] public void TestRailsExamples() { DateTime testTime = DateTime.Now; string output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddMinutes(50)); Assert.IsTrue(output.Equals("about 1 hour"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, DateTime.Now.AddMinutes(50)); Assert.IsTrue(output.Equals("about 1 hour"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(15)); Assert.IsTrue(output.Equals("less than a minute"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(15), true); Assert.IsTrue(output.Equals("less than 20 seconds"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddYears(3)); Assert.IsTrue(output.Equals("over 3 years"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddHours(60)); Assert.IsTrue(output.Equals("about 3 days"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(45)); Assert.IsTrue(output.Equals("less than a minute"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddSeconds(-45)); Assert.IsTrue(output.Equals("less than a minute"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, DateTime.Now.AddSeconds(76)); Assert.IsTrue(output.Equals("1 minute"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddYears(1).AddDays(3)); Assert.IsTrue(output.Equals("about 1 year"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(testTime, testTime.AddYears(4).AddDays(15).AddMinutes(30).AddSeconds(5)); Assert.IsTrue(output.Equals("over 4 years"), string.Format("output = {0}", output)); DateTime toTime = DateTime.Now.AddYears(6).AddDays(19); output = DateHelper.DistanceOfTimeInWords(testTime, toTime, true); Assert.IsTrue(output.Equals("over 6 years"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(toTime, testTime, true); Assert.IsTrue(output.Equals("over 6 years"), string.Format("output = {0}", output)); output = DateHelper.DistanceOfTimeInWords(DateTime.Now, DateTime.Now); Assert.IsTrue(output.Equals("less than a minute"), string.Format("output = {0}", output)); } } }