// Copyright 2014 Cubane Canada, Inc.  All rights reserved.
// See LICENSE for details.

/*---
info: |
    Promise.all with 1-element array
    should accept an array with settled promise
es6id: S25.4.4.1_A6.1_T2
author: Sam Mikes
description: Promise.all([p1]) is resolved with a promise for a one-element array
flags: [async]
---*/

var p1 = Promise.resolve(3);

var pAll = Promise.all([p1]);

pAll.then(function(result) {
  if (!(pAll instanceof Promise)) {
    $ERROR("Expected Promise.all() to be promise, actually " + pAll);
  }
  if (!(result instanceof Array)) {
    $ERROR("Expected Promise.all() to be promise for an Array, actually " + result);
  }
  if (result.length !== 1) {
    $ERROR("Expected Promise.all([p1]) to be a promise for one-element Array, actually " + result);
  }
  if (result[0] !== 3) {
    $ERROR("Expected result[0] to be 3, actually " + result[0]);
  }
}).then($DONE, $DONE);
