// Copyright (C) 2015 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 23.1.1.1
description: >
  Returns the new Map object with the new empty list if the iterable argument is
  undefined.
info: |
  Map ( [ iterable ] )

  ...
  2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%",
  «‍[[MapData]]» ).
  ...
  4. Map map’s [[MapData]] internal slot to a new empty List.
  5. If iterable is not present, let iterable be undefined.
  6. If iterable is either undefined or null, let iter be undefined.
  ...
  8. If iter is undefined, return map.
---*/

var m1 = new Map();
var m2 = new Map(undefined);
var m3 = new Map(null);

assert.sameValue(m1.size, 0, 'The value of `new Map().size` is `0`');
assert.sameValue(m2.size, 0, 'The value of `new Map(undefined).size` is `0`');
assert.sameValue(m3.size, 0, 'The value of `new Map(null).size` is `0`');

assert(m1 instanceof Map);
assert(m2 instanceof Map);
assert(m3 instanceof Map);
