public function testAssociatesExceptionsWithRequests()
 {
     $r1 = new Request('GET', 'http://www.foo.com');
     $re1 = new \Exception('foo');
     $re2 = new \Exception('bar');
     $e = new MultiTransferException();
     $e->add($re2);
     $e->addFailedRequestWithException($r1, $re1);
     $this->assertSame($re1, $e->getExceptionForFailedRequest($r1));
     $this->assertNull($e->getExceptionForFailedRequest(new Request('POST', '/foo')));
 }
 public static function fromMultiTransferException(MultiTransferException $e)
 {
     $ce = new self($e->getMessage(), $e->getCode(), $e->getPrevious());
     $ce->setSuccessfulRequests($e->getSuccessfulRequests());
     $alreadyAddedExceptions = array();
     foreach ($e->getFailedRequests() as $request) {
         if ($re = $e->getExceptionForFailedRequest($request)) {
             $alreadyAddedExceptions[] = $re;
             $ce->addFailedRequestWithException($request, $re);
         } else {
             $ce->addFailedRequest($request);
         }
     }
     if (count($alreadyAddedExceptions) < count($e)) {
         foreach ($e as $ex) {
             if (!in_array($ex, $alreadyAddedExceptions)) {
                 $ce->add($ex);
             }
         }
     }
     return $ce;
 }