Skip to content

Commit

Permalink
[feature] Add isoWeeksInISOWeekYear
Browse files Browse the repository at this point in the history
  • Loading branch information
ichernev committed Apr 29, 2020
1 parent 64a46b3 commit b617cff
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 22 deletions.
4 changes: 3 additions & 1 deletion src/lib/moment/prototype.js
Expand Up @@ -86,8 +86,9 @@ import {
getSetWeekYear,
getSetISOWeekYear,
getWeeksInYear,
getISOWeeksInYear,
getWeeksInWeekYear,
getISOWeeksInYear,
getISOWeeksInISOWeekYear,
} from '../units/week-year';
proto.weekYear = getSetWeekYear;
proto.isoWeekYear = getSetISOWeekYear;
Expand All @@ -108,6 +109,7 @@ proto.isoWeek = proto.isoWeeks = getSetISOWeek;
proto.weeksInYear = getWeeksInYear;
proto.weeksInWeekYear = getWeeksInWeekYear;
proto.isoWeeksInYear = getISOWeeksInYear;
proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;

// Day
import { getSetDayOfMonth } from '../units/day-of-month';
Expand Down
4 changes: 4 additions & 0 deletions src/lib/units/week-year.js
Expand Up @@ -99,6 +99,10 @@ export function getSetISOWeekYear(input) {
}

export function getISOWeeksInYear() {
return weeksInYear(this.year(), 1, 4);
}

export function getISOWeeksInISOWeekYear() {
return weeksInYear(this.isoWeekYear(), 1, 4);
}

Expand Down
65 changes: 44 additions & 21 deletions src/test/moment/weeks_in_year.js
Expand Up @@ -3,89 +3,112 @@ import moment from '../../moment';

module('weeks in year');

test('isoWeeksInYear first day of ISO Year', function (assert) {
test('isoWeeksInYear', function (assert) {
assert.equal(
moment('2003-12-29').isoWeeksInYear(),
moment([2005]).isoWeeksInYear(),
52,
'ISO year 2005 has 52 iso weeks'
);
assert.equal(
moment([2006]).isoWeeksInYear(),
52,
'ISO year 2006 has 52 iso weeks'
);
assert.equal(
moment([2009]).isoWeeksInYear(),
53,
'ISO year 2009 has 53 iso weeks'
);
assert.equal(
moment([2010]).isoWeeksInYear(),
52,
'ISO year 2010 has 52 iso weeks'
);
});

test('isoWeeksInISOWeekYear first day of ISO Year', function (assert) {
assert.equal(
moment('2003-12-29').isoWeeksInISOWeekYear(),
53,
'ISO year 2004 has 53 iso weeks'
);
assert.equal(
moment('2005-01-03').isoWeeksInYear(),
moment('2005-01-03').isoWeeksInISOWeekYear(),
52,
'ISO year 2005 has 53 iso weeks'
);
assert.equal(
moment('2006-01-02').isoWeeksInYear(),
moment('2006-01-02').isoWeeksInISOWeekYear(),
52,
'ISO year 2006 has 53 iso weeks'
);
assert.equal(
moment('2007-01-01').isoWeeksInYear(),
moment('2007-01-01').isoWeeksInISOWeekYear(),
52,
'ISO year 2007 has 52 iso weeks'
);
assert.equal(
moment('2007-12-31').isoWeeksInYear(),
moment('2007-12-31').isoWeeksInISOWeekYear(),
52,
'ISO year 2008 has 53 iso weeks'
);
assert.equal(
moment('2008-12-29').isoWeeksInYear(),
moment('2008-12-29').isoWeeksInISOWeekYear(),
53,
'ISO year 2009 has 53 iso weeks'
);
assert.equal(
moment('2010-01-04').isoWeeksInYear(),
moment('2010-01-04').isoWeeksInISOWeekYear(),
52,
'ISO year 2010 has 52 iso weeks'
);
assert.equal(
moment('2011-01-03').isoWeeksInYear(),
moment('2011-01-03').isoWeeksInISOWeekYear(),
52,
'ISO year 2011 has 52 iso weeks'
);
assert.equal(
moment('2012-01-02').isoWeeksInYear(),
moment('2012-01-02').isoWeeksInISOWeekYear(),
52,
'ISO year 2012 has 52 iso weeks'
);
assert.equal(
moment('2012-12-31').isoWeeksInYear(),
moment('2012-12-31').isoWeeksInISOWeekYear(),
52,
'ISO year 2013 has 52 iso weeks'
);
assert.equal(
moment('2013-12-30').isoWeeksInYear(),
moment('2013-12-30').isoWeeksInISOWeekYear(),
52,
'ISO year 2014 has 52 iso weeks'
);
assert.equal(
moment('2014-12-29').isoWeeksInYear(),
moment('2014-12-29').isoWeeksInISOWeekYear(),
53,
'ISO year 2015 has 53 iso weeks'
);
assert.equal(
moment('2016-01-04').isoWeeksInYear(),
moment('2016-01-04').isoWeeksInISOWeekYear(),
52,
'ISO year 2016 has 52 iso weeks'
);
assert.equal(
moment('2017-01-02').isoWeeksInYear(),
moment('2017-01-02').isoWeeksInISOWeekYear(),
52,
'ISO year 2017 has 52 iso weeks'
);
assert.equal(
moment('2018-01-01').isoWeeksInYear(),
moment('2018-01-01').isoWeeksInISOWeekYear(),
52,
'ISO year 2018 has 52 iso weeks'
);
assert.equal(
moment('2018-12-31').isoWeeksInYear(),
moment('2018-12-31').isoWeeksInISOWeekYear(),
52,
'ISO year 2019 has 52 iso weeks'
);
assert.equal(
moment('2019-12-30').isoWeeksInYear(),
moment('2019-12-30').isoWeeksInISOWeekYear(),
53,
'ISO year 2020 has 53 iso weeks'
);
Expand Down Expand Up @@ -179,17 +202,17 @@ test('weeksInYear doy/dow = 0/6', function (assert) {
test('isoWeeksInYear calendar year !== ISO year', function (assert) {
var m = moment('2010-01-01');
assert.equal(
moment('2019-12-31').isoWeeksInYear(),
moment('2019-12-31').isoWeeksInISOWeekYear(),
53,
'December 31, 2019 is in ISO year 2020 and ISO year 2020 has 53 weeks'
);
assert.equal(
moment('2020-12-31').isoWeeksInYear(),
moment('2020-12-31').isoWeeksInISOWeekYear(),
53,
'December 31, 2020 is in ISO year 2020 and ISO year 2020 has 53 weeks'
);
assert.equal(
m.isoWeeksInYear(),
m.isoWeeksInISOWeekYear(),
53,
'2010-01-01 is isoWeekYear 2009, which has 53 iso weeks'
);
Expand Down

0 comments on commit b617cff

Please sign in to comment.