summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/Array/from/Array.from_forwards-length-for-array-likes.js
blob: 8bb73635eef2864ca9d01d56c7031b1b52702225 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Copyright (c) 2014 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/*---
esid: sec-array.from
description: >
  If this is a constructor, and items doesn't have an @@iterator,
  returns a new instance of this
info: |
  22.1.2.1 Array.from ( items [ , mapfn [ , thisArg ] ] )

  4. Let usingIterator be GetMethod(items, @@iterator).
  ...
  6. If usingIterator is not undefined, then
  ...
  12. If IsConstructor(C) is true, then
    a. Let A be Construct(C, «len»).
  13. Else,
    a. Let A be ArrayCreate(len).
  ...
  19. Return A.
---*/

var result;

function MyCollection() {
  this.args = arguments;
}

result = Array.from.call(MyCollection, {
  length: 42
});

assert.sameValue(result.args.length, 1, 'The value of result.args.length is expected to be 1');
assert.sameValue(result.args[0], 42, 'The value of result.args[0] is expected to be 42');
assert(
  result instanceof MyCollection,
  'The result of evaluating (result instanceof MyCollection) is expected to be true'
);

reportCompare(0, 0);