// Copyright (C) 2018 Ujjwal Sharma. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-initializenumberformat
description: >
  Tests that HasProperty(O, Pk) is properly called within the constructor for
  Intl.NumberFormat
info: |
  9.2.1 CanonicalizeLocaleList ( locales )

  7.b. Let kPresent be ? HasProperty(O, Pk).
---*/

const locales = {
  length: 8,
  1: 'en-US',
  3: 'de-DE',
  5: 'en-IN',
  7: 'en-GB'
};

const actualLookups = [];

const handlers = {
  has(obj, prop) {
    actualLookups.push(prop);
    return Reflect.has(...arguments);
  }
};

const proxyLocales = new Proxy(locales, handlers);

const nf = new Intl.NumberFormat(proxyLocales);

assert.sameValue(actualLookups.length, locales.length);
for (let index in actualLookups) {
  assert.sameValue(actualLookups[index], String(index));
}

reportCompare(0, 0);
