assert.equal(52, moment('2012-01-01', 'YYYY-MM-DD').weeksInYear(), 'weeks in 2012 are 52'); // 52
});
+test('weeks numbers dow:1 doy:4', function (assert) {
+ moment.locale('dow: 1, doy: 4', {week: {dow: 1, doy: 4}});
+ assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52');
+ assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1');
+ assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1');
+ assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2');
+ assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2');
+ assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1');
+ assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1');
+ assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2');
+ assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2');
+ assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3');
+ assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1');
+ assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
+ assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1');
+ assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2');
+ assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2');
+ assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3');
+ assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1');
+ assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
+ assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1');
+ assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2');
+ assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2');
+ assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3');
+ assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1');
+ assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
+ assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1');
+ assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2');
+ assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2');
+ assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3');
+ assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53');
+ assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53');
+ assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53');
+ assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1');
+ assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1');
+ assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2');
+ assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52');
+ assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52');
+ assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52');
+ assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1');
+ assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1');
+ assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2');
+});
+
+test('weeks numbers dow:6 doy:12', function (assert) {
+ moment.locale('dow: 6, doy: 12', {week: {dow: 6, doy: 12}});
+ assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1');
+ assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1');
+ assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2');
+ assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2');
+ assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3');
+ assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1');
+ assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1');
+ assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2');
+ assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2');
+ assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3');
+ assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1');
+ assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
+ assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1');
+ assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2');
+ assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2');
+ assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3');
+ assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1');
+ assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
+ assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1');
+ assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2');
+ assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2');
+ assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3');
+ assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1');
+ assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
+ assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1');
+ assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2');
+ assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2');
+ assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3');
+ assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1');
+ assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1');
+ assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2');
+ assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2');
+ assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3');
+ assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1');
+ assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1');
+ assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2');
+ assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2');
+ assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3');
+});
+
+test('weeks numbers dow:1 doy:7', function (assert) {
+ moment.locale('dow: 1, doy: 7', {week: {dow: 1, doy: 7}});
+ assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1');
+ assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1');
+ assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2');
+ assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2');
+ assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3');
+ assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1');
+ assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1');
+ assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2');
+ assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2');
+ assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3');
+ assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1');
+ assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
+ assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1');
+ assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2');
+ assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2');
+ assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3');
+ assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1');
+ assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
+ assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1');
+ assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2');
+ assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2');
+ assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3');
+ assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1');
+ assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
+ assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1');
+ assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2');
+ assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2');
+ assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3');
+ assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1');
+ assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1');
+ assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1');
+ assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2');
+ assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2');
+ assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3');
+ assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1');
+ assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1');
+ assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1');
+ assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2');
+ assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2');
+ assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3');
+});
+
+test('weeks numbers dow:0 doy:6', function (assert) {
+ moment.locale('dow: 0, doy: 6', {week: {dow: 0, doy: 6}});
+ assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1');
+ assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1');
+ assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2');
+ assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2');
+ assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3');
+ assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1');
+ assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1');
+ assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1');
+ assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2');
+ assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2');
+ assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3');
+ assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52');
+ assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
+ assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1');
+ assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2');
+ assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2');
+ assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3');
+ assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1');
+ assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
+ assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1');
+ assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2');
+ assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2');
+ assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3');
+ assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1');
+ assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
+ assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1');
+ assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2');
+ assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2');
+ assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3');
+ assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1');
+ assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1');
+ assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1');
+ assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2');
+ assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2');
+ assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3');
+ assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1');
+ assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1');
+ assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2');
+ assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2');
+ assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3');
+});
+
test('week year overflows', function (assert) {
assert.equal('2005-01-01', moment.utc('2004-W53-6', moment.ISO_8601, true).format('YYYY-MM-DD'), '2004-W53-6 is 1st Jan 2005');
assert.equal('2007-12-31', moment.utc('2008-W01-1', moment.ISO_8601, true).format('YYYY-MM-DD'), '2008-W01-1 is 31st Dec 2007');