import some from '../utils/some';
export function isValid(m) {
- if (m._isValid == null) {
+ var isNowValid = (m._d && !isNaN(m._d.getTime()));
+ if (isNowValid) {
var flags = getParsingFlags(m),
parsedParts = some.call(flags.parsedDateParts, function (i) {
return i != null;
- }),
- isNowValid =
- !isNaN(m._d.getTime()) &&
- flags.overflow < 0 &&
- !flags.empty &&
- !flags.invalidEra &&
- !flags.invalidMonth &&
- !flags.invalidWeekday &&
- !flags.weekdayMismatch &&
- !flags.nullInput &&
- !flags.invalidFormat &&
- !flags.userInvalidated &&
- (!flags.meridiem || (flags.meridiem && parsedParts));
-
+ });
+ isNowValid =
+ flags.overflow < 0 &&
+ !flags.empty &&
+ !flags.invalidEra &&
+ !flags.invalidMonth &&
+ !flags.invalidWeekday &&
+ !flags.weekdayMismatch &&
+ !flags.nullInput &&
+ !flags.invalidFormat &&
+ !flags.userInvalidated &&
+ (!flags.meridiem || (flags.meridiem && parsedParts));
if (m._strict) {
isNowValid =
isNowValid &&
flags.unusedTokens.length === 0 &&
flags.bigHour === undefined;
}
-
- if (Object.isFrozen == null || !Object.isFrozen(m)) {
- m._isValid = isNowValid;
- } else {
- return isNowValid;
- }
+ }
+ if (Object.isFrozen == null || !Object.isFrozen(m)) {
+ m._isValid = isNowValid;
+ } else {
+ return isNowValid;
}
return m._isValid;
}
assert.ok(moment(a[i][0], a[i][1], a[i][2]).isValid());
}
});
+
+test('destructive operation', function (assert) {
+ assert.equal(moment('2018-05-15').add(100, 'years').isValid(), true, 'add 100 years is valid');
+ assert.equal(moment('2018-05-15').add(1000000, 'years').isValid(), false, 'add 1000000 years is invalid');
+ assert.equal(moment('2018-05-15').subtract(100, 'years').isValid(), true, 'subtract 100 years is valid');
+ assert.equal(moment('2018-05-15').subtract(1000000, 'years').isValid(), false, 'subtract 1000000 years is invalid');
+})