// Copyright (C) 2021 Igalia, S.L. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-temporal.calendar.from description: Converting objects to Temporal.Calendar includes: [compareArray.js, temporalHelpers.js] features: [Temporal] ---*/ const expected = [ "has outer.calendar", "get outer.calendar", "has inner.calendar", "get inner.toString", "call inner.toString", ]; const actual = []; const calendar = new Proxy({}, { has(t, p) { actual.push(`has outer.${p}`); return true; }, get(t, p) { actual.push(`get outer.${p}`); return new Proxy(TemporalHelpers.toPrimitiveObserver(actual, "iso8601", "inner"), { has(t, p) { actual.push(`has inner.${p}`); return true; }, get(t, p) { return t[p]; }, }); }, }); const result = Temporal.Calendar.from(calendar); assert.sameValue(result.id, "iso8601"); assert.compareArray(actual, expected);