public function testValidationFailsWithCorruptedTransaction()
 {
     //Ensuring that validation cascades and checks transactions.
     $transaction = $this->transferRequest->getTransactions()[0];
     $transaction->setAmount(-500);
     $violations = Validator::validateTransferRequest($this->transferRequest);
     $this->assertTrue(count($violations) === 1);
     $this->assertTrue(count($violations->get('transactions')) === 1);
 }
 private function generateTrailerLine(TransferRequest $request)
 {
     $items = array();
     $items[] = array('%1d', self::RECORD_TRAILER);
     $items[] = array('%06d', count($request->getTransactions()));
     $totalAmount = array_sum(array_map(function (MoneyTransferTransaction $transaction) {
         return $transaction->getAmount();
     }, $request->getTransactions()));
     $items[] = array('%012d', $totalAmount);
     $items[] = array('%s', str_repeat(' ', 101));
     return StringUtil::sprintfItemGroupsToString($items);
 }