public void TestIsAtLeastANullableDayBefore() {
            DateTime? wellKnownDay = new DateTime(2002, 4, 4);

            Enumerable.Range(-10, 9).
                Select(x => wellKnownDay.Value.AddDays(x)).
                Select(x => new DateTime?(x)).ToList().
                ForEach(x => Assert.IsFalse(wellKnownDay.IsAtLeastOneDayBefore(x)));

            Enumerable.Range(1, 9).
                Select(x => wellKnownDay.Value.AddDays(x)).
                Select(x => new DateTime?(x)).ToList().
                ForEach(x => Assert.IsTrue(wellKnownDay.IsAtLeastOneDayBefore(x)));

            Assert.IsFalse(((DateTime?) wellKnownDay).IsAtLeastOneDayBefore(wellKnownDay));
            Assert.IsFalse(((DateTime?) null).IsAtLeastOneDayBefore(wellKnownDay));
            Assert.IsFalse(((DateTime?) null).IsAtLeastOneDayBefore(null));
            Assert.IsFalse(wellKnownDay.IsAtLeastOneDayBefore(null));
        }
 public string ValidateListPurchaseOrders(Vendor vendor, DateTime? fromDate, DateTime? toDate)
 {
     return toDate.IsAtLeastOneDayBefore(fromDate) ? "To Date cannot be before From Date" : null;
 }
        public void TestIsAtLeastOneDayBefore() {
            var wellKnownDay = new DateTime(2002, 4, 4);
            var nextDay = wellKnownDay.AddDays(1);

            //Simple test
            Assert.IsFalse(nextDay.IsAtLeastOneDayBefore(wellKnownDay));
            Assert.IsTrue(wellKnownDay.IsAtLeastOneDayBefore(nextDay));

            Enumerable.Range(-10, 9).
                Select(x => wellKnownDay.AddDays(x)).ToList().
                ForEach(x => Assert.IsFalse(wellKnownDay.IsAtLeastOneDayBefore(x)));

            Enumerable.Range(1, 9).
                Select(x => wellKnownDay.AddDays(x)).ToList().
                ForEach(x => Assert.IsTrue(wellKnownDay.IsAtLeastOneDayBefore(x)));

            Assert.IsFalse(wellKnownDay.IsAtLeastOneDayBefore(null));
            Assert.IsFalse(wellKnownDay.IsAtLeastOneDayBefore(wellKnownDay));
        }