Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal.calendar.prototype.weekofyear
description: Temporal.Calendar.prototype.weekofyear will take Temporal.PlainDateTime object
and return the week of year of that date.
info: |
4. Let temporalDate be ? ToTemporalDate(temporalDateLike).
5. Return 𝔽(! ToISOWeekOfYear(temporalDate.[[ISOYear]], temporalDate.[[ISOMonth]], temporalDate.[[ISODay]])).
features: [Temporal]
---*/
let cal = new Temporal.Calendar("iso8601");

// From https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar
let dt = new Temporal.PlainDateTime(1977, 1, 1, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 53, "1977-01-01 should w53");

dt = new Temporal.PlainDateTime(1977, 1, 2, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 53, "1977-01-02 should w53");


dt = new Temporal.PlainDateTime(1977, 12, 31, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 52, "1977-12-31 should w52");

dt = new Temporal.PlainDateTime(1978, 1, 1, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 52, "1978-01-01 should w52");

dt = new Temporal.PlainDateTime(1978, 1, 2, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1978-01-02 should w01");


dt = new Temporal.PlainDateTime(1978, 12, 31, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 52, "1978-12-31 should w52");

dt = new Temporal.PlainDateTime(1979, 1, 1, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1979-01-01 should w01");


dt = new Temporal.PlainDateTime(1979, 12, 30, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 52, "1979-12-30 should w52");

dt = new Temporal.PlainDateTime(1979, 12, 31, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1979-12-31 should w01");

dt = new Temporal.PlainDateTime(1980, 1, 1, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1980-01-01 should w01");


dt = new Temporal.PlainDateTime(1980, 12, 28, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 52, "1980-12-28 should w52");

dt = new Temporal.PlainDateTime(1980, 12, 29, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1980-12-29 should w01");

dt = new Temporal.PlainDateTime(1980, 12, 30, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1980-12-30 should w01");

dt = new Temporal.PlainDateTime(1980, 12, 31, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1980-12-31 should w01");

dt = new Temporal.PlainDateTime(1981, 1, 1, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 1, "1981-01-01 should w01");


dt = new Temporal.PlainDateTime(1981, 12, 31, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 53, "1981-12-31 should w53");

dt = new Temporal.PlainDateTime(1982, 1, 1, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 53, "1982-01-01 should w53");

dt = new Temporal.PlainDateTime(1982, 1, 2, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 53, "1982-01-02 should w53");

dt = new Temporal.PlainDateTime(1982, 1, 3, 9, 8);
assert.sameValue(cal.weekOfYear(dt), 53, "1982-01-03 should w53");
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal.calendar.prototype.weekofyear
description: Temporal.Calendar.prototype.weekofyear will take Temporal.PlainDate object
and return the week of year of that date.
info: |
4. Let temporalDate be ? ToTemporalDate(temporalDateLike).
5. Return 𝔽(! ToISOWeekOfYear(temporalDate.[[ISOYear]], temporalDate.[[ISOMonth]], temporalDate.[[ISODay]])).
features: [Temporal]
---*/
let cal = new Temporal.Calendar("iso8601");

// From https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar
let d = new Temporal.PlainDate(1977, 1, 1);
assert.sameValue(cal.weekOfYear(d), 53);

d = new Temporal.PlainDate(1977, 1, 2);
assert.sameValue(cal.weekOfYear(d), 53);


d = new Temporal.PlainDate(1977, 12, 31);
assert.sameValue(cal.weekOfYear(d), 52);

d = new Temporal.PlainDate(1978, 1, 1);
assert.sameValue(cal.weekOfYear(d), 52);

d = new Temporal.PlainDate(1978, 1, 2);
assert.sameValue(cal.weekOfYear(d), 1);


d = new Temporal.PlainDate(1978, 12, 31);
assert.sameValue(cal.weekOfYear(d), 52);

d = new Temporal.PlainDate(1979, 1, 1);
assert.sameValue(cal.weekOfYear(d), 1);


d = new Temporal.PlainDate(1979, 12, 30);
assert.sameValue(cal.weekOfYear(d), 52);

d = new Temporal.PlainDate(1979, 12, 31);
assert.sameValue(cal.weekOfYear(d), 1);

d = new Temporal.PlainDate(1980, 1, 1);
assert.sameValue(cal.weekOfYear(d), 1);


d = new Temporal.PlainDate(1980, 12, 28);
assert.sameValue(cal.weekOfYear(d), 52);

d = new Temporal.PlainDate(1980, 12, 29);
assert.sameValue(cal.weekOfYear(d), 1);

d = new Temporal.PlainDate(1980, 12, 30);
assert.sameValue(cal.weekOfYear(d), 1);

d = new Temporal.PlainDate(1980, 12, 31);
assert.sameValue(cal.weekOfYear(d), 1);

d = new Temporal.PlainDate(1981, 1, 1);
assert.sameValue(cal.weekOfYear(d), 1);


d = new Temporal.PlainDate(1981, 12, 31);
assert.sameValue(cal.weekOfYear(d), 53);

d = new Temporal.PlainDate(1982, 1, 1);
assert.sameValue(cal.weekOfYear(d), 53);

d = new Temporal.PlainDate(1982, 1, 2);
assert.sameValue(cal.weekOfYear(d), 53);

d = new Temporal.PlainDate(1982, 1, 3);
assert.sameValue(cal.weekOfYear(d), 53);
38 changes: 38 additions & 0 deletions test/built-ins/Temporal/Calendar/prototype/weekOfYear/string.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal.calendar.prototype.weekofyear
description: Temporal.Calendar.prototype.weekofyear will take Temporal.PlainDate object
and return the week of year of that date.
info: |
4. Let temporalDate be ? ToTemporalDate(temporalDateLike).
5. Return 𝔽(! ToISOWeekOfYear(temporalDate.[[ISOYear]], temporalDate.[[ISOMonth]], temporalDate.[[ISODay]])).
features: [Temporal]
---*/
let cal = new Temporal.Calendar("iso8601");

// From https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar
assert.sameValue(cal.weekOfYear("1977-01-01"), 53);
assert.sameValue(cal.weekOfYear("1977-01-02"), 53);

assert.sameValue(cal.weekOfYear("1977-12-31"), 52);
assert.sameValue(cal.weekOfYear("1978-01-01"), 52);
assert.sameValue(cal.weekOfYear("1978-01-02"), 1);

assert.sameValue(cal.weekOfYear("1978-12-31"), 52);
assert.sameValue(cal.weekOfYear("1979-01-01"), 1);

assert.sameValue(cal.weekOfYear("1979-12-30"), 52);
assert.sameValue(cal.weekOfYear("1979-12-31"), 1);
assert.sameValue(cal.weekOfYear("1980-01-01"), 1);

assert.sameValue(cal.weekOfYear("1980-12-28"), 52);
assert.sameValue(cal.weekOfYear("1980-12-29"), 1);
assert.sameValue(cal.weekOfYear("1980-12-30"), 1);
assert.sameValue(cal.weekOfYear("1980-12-31"), 1);
assert.sameValue(cal.weekOfYear("1981-01-01"), 1);

assert.sameValue(cal.weekOfYear("1981-12-31"), 53);
assert.sameValue(cal.weekOfYear("1982-01-01"), 53);
assert.sameValue(cal.weekOfYear("1982-01-02"), 53);
assert.sameValue(cal.weekOfYear("1982-01-03"), 53);
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal.calendar.prototype.weekofyear
description: Temporal.Calendar.prototype.weekofyear should throw from ToTemporalDate
if temporalDateLike is invalid
does not have [[InitializedTemporalCalendar]].
info: |
4. Let temporalDate be ? ToTemporalDate(temporalDateLike).
features: [Temporal]
---*/
let cal = new Temporal.Calendar("iso8601");

assert.throws(RangeError, () => cal.weekOfYear("invalid iso8601"),
"RangeError should be thrown by ToTemporalDate if temporalDateLike is not valid");
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright (C) 2021 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-temporal.calendar.prototype.weekofyear
description: Temporal.Calendar.prototype.weekofyear should throw from RequireInternalSlot if calendar
does not have [[InitializedTemporalCalendar]].
info: |
2. Perform ? RequireInternalSlot(calendar, [[InitializedTemporalCalendar]]).
features: [Temporal]
---*/
let cal = new Temporal.Calendar("iso8601");

let badCal = {weekOfYear: cal.weekOfYear};
assert.throws(TypeError, () => badCal.weekOfYear("2021-07-20"),
"calendar does not have [[InitializedTemporalCalendar]]");