mirror of https://github.com/tc39/test262.git
76 lines
1.9 KiB
JavaScript
76 lines
1.9 KiB
JavaScript
|
// Copyright (C) 2020 Igalia, S.L. All rights reserved.
|
||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||
|
/*---
|
||
|
esid: sec-temporal.now.zoneddatetime
|
||
|
description: Observable interactions with the provided timezone-like object
|
||
|
includes: [compareArray.js]
|
||
|
features: [BigInt, Proxy, Temporal]
|
||
|
---*/
|
||
|
const actual = [];
|
||
|
|
||
|
const expected = [
|
||
|
'has timeZone.timeZone',
|
||
|
'get timeZone.timeZone',
|
||
|
'has nestedTimeZone.timeZone'
|
||
|
];
|
||
|
|
||
|
const nestedTimeZone = new Proxy({
|
||
|
getOffsetNanosecondsFor(instant) {
|
||
|
actual.push('call nestedTimeZone.getOffsetNanosecondsFor');
|
||
|
|
||
|
assert.sameValue(
|
||
|
instant instanceof Temporal.Instant,
|
||
|
true,
|
||
|
'The result of evaluating (instant instanceof Temporal.Instant) is expected to be true'
|
||
|
);
|
||
|
|
||
|
return -Number(instant.epochNanoseconds % 86400000000000n);
|
||
|
}
|
||
|
}, {
|
||
|
has(target, property) {
|
||
|
actual.push(`has nestedTimeZone.${String(property)}`);
|
||
|
return property in target;
|
||
|
},
|
||
|
|
||
|
get(target, property) {
|
||
|
actual.push(`get nestedTimeZone.${String(property)}`);
|
||
|
return target[property];
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const timeZone = new Proxy({
|
||
|
timeZone: nestedTimeZone,
|
||
|
|
||
|
getOffsetNanosecondsFor(instant) {
|
||
|
actual.push('call timeZone.getOffsetNanosecondsFor');
|
||
|
|
||
|
assert.sameValue(
|
||
|
instant instanceof Temporal.Instant,
|
||
|
true,
|
||
|
'The result of evaluating (instant instanceof Temporal.Instant) is expected to be true'
|
||
|
);
|
||
|
|
||
|
return -Number(instant.epochNanoseconds % 86400000000000n);
|
||
|
}
|
||
|
}, {
|
||
|
has(target, property) {
|
||
|
actual.push(`has timeZone.${property}`);
|
||
|
return property in target;
|
||
|
},
|
||
|
|
||
|
get(target, property) {
|
||
|
actual.push(`get timeZone.${property}`);
|
||
|
return target[property];
|
||
|
}
|
||
|
});
|
||
|
|
||
|
Object.defineProperty(Temporal.TimeZone, 'from', {
|
||
|
get() {
|
||
|
actual.push('get Temporal.TimeZone.from');
|
||
|
return undefined;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
Temporal.Now.zonedDateTimeISO(timeZone);
|
||
|
assert.compareArray(actual, expected, 'The value of actual is expected to equal the value of expected');
|