if(typeof require !== 'undefined') { var Specification = require('../scripts/specification-converter.js'); } Date.Specification = new Specification({ 'RememberTheMilk': { setup: function() { this.now = new Date(); this.now.setMilliseconds(0); }, 'today': { run: function() { }, assert: function() { return Date.today().equals( Date.parse('today') ) } }, 'tod': { run: function() { }, assert: function() { return Date.today().equals( Date.parse('tod') ) } }, 'tomorrow': { run: function() { }, assert: function() { return Date.today().add(1).day().equals( Date.parse('tomorrow') ) } }, 'tom': { run: function() { }, assert: function() { return Date.today().add(1).day().equals( Date.parse('tom') ) } }, '25 Apr': { run: function() { }, assert: function() { return Date.april().set({ day: 25 }).equals( Date.parse('25 Apr') ) } }, 'Apr 25': { run: function() { }, assert: function() { return Date.april().set({ day: 25 }).equals( Date.parse('Apr 25') ) } }, '04/25/2007': { run: function() { }, assert: function() { return new Date(2007,3,25).equals( Date.parse('04/25/2007') ) } }, '25/04/2007': { run: function() { }, assert: function() { return new Date(2007,3,25).equals( Date.parse('25/04/2007') ) } }, '2006/04/25': { run: function() { }, assert: function() { return new Date(2006,3,25).equals( Date.parse('2006/04/25') ) } }, '2006-04-25': { run: function() { }, assert: function() { return new Date(2006,3,25).equals( Date.parse('2006-04-25') ) } }, '25th': { run: function() { }, assert: function() { return Date.today().set({ day: 25 }).equals( Date.parse('25th') ) } }, 'Friday': { run: function() { }, assert: function() { return Date.friday().equals( Date.parse('Friday') ) } }, 'Next Friday': { run: function() { }, assert: function() { return Date.today().next().friday().equals( Date.parse('Next Friday') ) } }, 'Fri at 7pm': { run: function() { }, assert: function() { return Date.fri().set({ hour: 19 }).equals( Date.parse('Fri at 7pm') ) } }, 'Fri @ 7pm': { run: function() { }, assert: function() { return Date.fri().set({ hour: 19 }).equals( Date.parse('Fri @ 7pm') ) } }, '6pm': { run: function() { }, assert: function() { return Date.today().set({ hour: 18 }).equals( Date.parse('6pm') ) } }, '18:00': { run: function() { }, assert: function() { return Date.today().set({ hour: 18 }).equals( Date.parse('18:00') ) } }, '5 hours': { run: function() { this.date = Date.parse('5 hours'); this.date.setMilliseconds(0); }, assert: function() { return this.now.add(5).hours().equals( this.date ) } }, '2 days': { run: function() { this.date = Date.parse('2 days'); this.date.setMilliseconds(0); }, assert: function() { return Date.today().add(2).days().equals( this.date ) } }, }, "Fail: Differences between RememberTheMilk and Date.js": { '3 weeks : Datejs uses "+3 weeks."': { run: function() { this.date = Date.parse('3 weeks'); this.date.setMilliseconds(0); }, assert: function() { return Date.today().add(3).weeks().equals( this.date ) } }, 'End of month : Not supported currently.': { run: function() { }, assert: function() { return Date.today().moveToLastDayOfMonth().equals( Date.parse('End of month') ) } }, } });