public void IsValid()
        {
            var v = new PastAttribute();

            Assert.IsTrue(v.IsValid(DateTime.Now.AddMilliseconds(-1), null));
            Assert.IsTrue(v.IsValid(new DateTime?(), null));
            Assert.IsTrue(v.IsValid(new DateTime?(DateTime.Now.AddDays(-1)), null));
            Assert.IsTrue(v.IsValid(null, null));
            Assert.IsTrue(v.IsValid(new DateTime(), null));
            Assert.IsFalse(v.IsValid(DateTime.Now, null));
            Assert.IsFalse(v.IsValid(DateTime.Now.AddMilliseconds(+1), null));
            Assert.IsFalse(v.IsValid(DateTime.Now.ToString(), null));
            Assert.IsFalse(v.IsValid(123456, null));
        }
        public void IsValid()
        {
            var v = new PastAttribute();

            Assert.That(v.IsValid(DateTime.Now.AddMilliseconds(-1), null), Is.True, "One ms in past");
            Assert.That(v.IsValid(new DateTime?(), null), Is.True, "null nullable date");
            Assert.That(v.IsValid(new DateTime?(DateTime.Now.AddDays(-1)), null), Is.True, "One day in past as nullable");
            Assert.That(v.IsValid(null, null), Is.True, "null");
            Assert.That(v.IsValid(new DateTime(), null), Is.True, "Min date");
            // Below test relies on execution to be fast enough for checking the attribute before the next tick...
            // So that is a flaky test, forget it.
            //Assert.That(v.IsValid(DateTime.Now, null), Is.False, "Now");
            Assert.That(v.IsValid(DateTime.Now.AddMilliseconds(+1), null), Is.False, "One ms in future");
            Assert.That(v.IsValid(DateTime.Now.ToString(), null), Is.False, "string");
            Assert.That(v.IsValid(123456, null), Is.False, "int");
        }