summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/staging/Temporal/UserCalendar/old/trivial-subclass.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/staging/Temporal/UserCalendar/old/trivial-subclass.js')
-rw-r--r--js/src/tests/test262/staging/Temporal/UserCalendar/old/trivial-subclass.js167
1 files changed, 167 insertions, 0 deletions
diff --git a/js/src/tests/test262/staging/Temporal/UserCalendar/old/trivial-subclass.js b/js/src/tests/test262/staging/Temporal/UserCalendar/old/trivial-subclass.js
new file mode 100644
index 0000000000..b96e75c95c
--- /dev/null
+++ b/js/src/tests/test262/staging/Temporal/UserCalendar/old/trivial-subclass.js
@@ -0,0 +1,167 @@
+// |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally
+// Copyright (C) 2018 Bloomberg LP. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-temporal-zoneddatetime-objects
+description: Trivial subclass
+features: [Temporal]
+---*/
+
+class TwoBasedCalendar extends Temporal.Calendar {
+ constructor() {
+ super("iso8601");
+ }
+ get id() {
+ return "two-based";
+ }
+ toString() {
+ return "two-based";
+ }
+ dateFromFields(fields, options) {
+ var {year, month, monthCode, day} = fields;
+ if (month === undefined)
+ month = +monthCode.slice(1);
+ return super.dateFromFields({
+ year,
+ monthCode: `M${ (month - 1).toString().padStart(2, "0") }`,
+ day
+ }, options).withCalendar(this);
+ }
+ yearMonthFromFields(fields, options) {
+ var {year, month, monthCode} = fields;
+ if (month === undefined)
+ month = +monthCode.slice(1);
+ const { isoYear, isoMonth, isoDay } = super.yearMonthFromFields({
+ year,
+ monthCode: `M${ (month - 1).toString().padStart(2, "0") }`
+ }, options).getISOFields();
+ return new Temporal.PlainYearMonth(isoYear, isoMonth, this, isoDay);
+ }
+ monthDayFromFields(fields, options) {
+ var {month, monthCode, day} = fields;
+ if (month === undefined)
+ month = +monthCode.slice(1);
+ const { isoYear, isoMonth, isoDay } = super.monthDayFromFields({
+ monthCode: `M${ (month - 1).toString().padStart(2, "0") }`,
+ day
+ }, options).getISOFields();
+ return new Temporal.PlainMonthDay(isoMonth, isoDay, this, isoYear);
+ }
+ month(date) {
+ return date.getISOFields().isoMonth + 1;
+ }
+ monthCode(date) {
+ return `M${ this.month(date).toString().padStart(2, "0") }`;
+ }
+}
+var obj = new TwoBasedCalendar();
+var date = Temporal.PlainDate.from({
+ year: 2020,
+ month: 5,
+ day: 5,
+ calendar: obj
+});
+var dt = Temporal.PlainDateTime.from({
+ year: 2020,
+ month: 5,
+ day: 5,
+ hour: 12,
+ calendar: obj
+});
+var ym = Temporal.PlainYearMonth.from({
+ year: 2020,
+ month: 5,
+ calendar: obj
+});
+var md = Temporal.PlainMonthDay.from({
+ monthCode: "M05",
+ day: 5,
+ calendar: obj
+});
+
+// is a calendar
+assert.sameValue(typeof obj, "object")
+
+// .id property
+assert.sameValue(obj.id, "two-based")
+
+// .id is not available in from()
+assert.throws(RangeError, () => Temporal.Calendar.from("two-based"));
+assert.throws(RangeError, () => Temporal.Calendar.from("2020-06-05T09:34-00:00[UTC][u-ca=two-based]"));
+
+// Temporal.PlainDate.from()
+assert.sameValue(`${ date }`, "2020-04-05[u-ca=two-based]")
+
+// Temporal.PlainDate fields
+assert.sameValue(date.year, 2020);
+assert.sameValue(date.month, 5);
+assert.sameValue(date.day, 5);
+
+// date.with()
+var date2 = date.with({ month: 2 });
+assert.sameValue(date2.month, 2);
+
+// date.withCalendar()
+var date2 = Temporal.PlainDate.from("2020-04-05");
+assert(date2.withCalendar(obj).equals(date));
+
+// Temporal.PlainDateTime.from()
+assert.sameValue(`${ dt }`, "2020-04-05T12:00:00[u-ca=two-based]")
+
+// Temporal.PlainDateTime fields
+assert.sameValue(dt.year, 2020);
+assert.sameValue(dt.month, 5);
+assert.sameValue(dt.day, 5);
+assert.sameValue(dt.hour, 12);
+assert.sameValue(dt.minute, 0);
+assert.sameValue(dt.second, 0);
+assert.sameValue(dt.millisecond, 0);
+assert.sameValue(dt.microsecond, 0);
+assert.sameValue(dt.nanosecond, 0);
+
+// datetime.with()
+var dt2 = dt.with({ month: 2 });
+assert.sameValue(dt2.month, 2);
+
+// datetime.withCalendar()
+var dt2 = Temporal.PlainDateTime.from("2020-04-05T12:00");
+assert(dt2.withCalendar(obj).equals(dt));
+
+// Temporal.PlainYearMonth.from()
+assert.sameValue(`${ ym }`, "2020-04-01[u-ca=two-based]")
+
+// Temporal.PlainYearMonth fields
+assert.sameValue(dt.year, 2020);
+assert.sameValue(dt.month, 5);
+
+// yearmonth.with()
+var ym2 = ym.with({ month: 2 });
+assert.sameValue(ym2.month, 2);
+
+// Temporal.PlainMonthDay.from()
+assert.sameValue(`${ md }`, "1972-04-05[u-ca=two-based]")
+
+// Temporal.PlainMonthDay fields
+assert.sameValue(md.monthCode, "M05");
+assert.sameValue(md.day, 5);
+
+// monthday.with()
+var md2 = md.with({ monthCode: "M02" });
+assert.sameValue(md2.monthCode, "M02");
+
+// timezone.getPlainDateTimeFor()
+var tz = Temporal.TimeZone.from("UTC");
+var instant = Temporal.Instant.fromEpochSeconds(0);
+var dt = tz.getPlainDateTimeFor(instant, obj);
+assert.sameValue(dt.getCalendar(), obj);
+
+// Temporal.Now.plainDateTime()
+var nowDateTime = Temporal.Now.plainDateTime(obj, "UTC");
+assert.sameValue(nowDateTime.getCalendar(), obj);
+
+// Temporal.Now.plainDate()
+var nowDate = Temporal.Now.plainDate(obj, "UTC");
+assert.sameValue(nowDate.getCalendar(), obj);
+
+reportCompare(0, 0);