public function testValidationFailsWithCorruptedBankAccount()
 {
     //Ensuring that validation cascades and checks the bank account.
     $bankAccount = $this->transaction->getDestinationBankAccount();
     $bankAccount->setNumber(null);
     $violations = Validator::validateMoneyTransferTransaction($this->transaction);
     $this->assertTrue(count($violations) === 1);
     $this->assertTrue(count($violations->get('destinationBankAccount')) === 1);
 }
 private function generateTransactionLine(MoneyTransferTransaction $transaction)
 {
     $items = array();
     $items[] = array('%1d', self::RECORD_DATA);
     $items[] = array('%04d', $transaction->getDestinationBankAccount()->getBankCode());
     $bankName = $transaction->getDestinationBankAccount()->getBankName();
     $bankNameHalfWidth = StringUtil::convertFullWidthToHalfWidthKana($bankName);
     $items[] = array('%s', StringUtil::stringPadRight($bankNameHalfWidth, 15, ' '));
     $items[] = array('%03d', $transaction->getDestinationBankAccount()->getBranchCode());
     $branchName = $transaction->getDestinationBankAccount()->getBranchName();
     $branchNameHalfWidth = StringUtil::convertFullWidthToHalfWidthKana($branchName);
     $items[] = array('%s', StringUtil::stringPadRight($branchNameHalfWidth, 15, ' '));
     //Clearing-house number
     $items[] = array('%04d', 0);
     $items[] = array('%1d', self::resolveBankAccountType($transaction->getDestinationBankAccount()->getType()));
     $items[] = array('%07d', $transaction->getDestinationBankAccount()->getNumber());
     $holderName = $transaction->getDestinationBankAccount()->getHolderName();
     $holderNameHalfWidth = StringUtil::convertFullWidthToHalfWidthKana($holderName);
     $items[] = array('%s', StringUtil::stringPadRight($holderNameHalfWidth, 30, ' '));
     $items[] = array('%010d', $transaction->getAmount());
     //New Code: 1 (new), 2 (change), 0 (other)
     $items[] = array('%d', 0);
     if ($transaction->getMemberCode()) {
         $items[] = array('%010d', $transaction->getMemberCode());
     } else {
         $items[] = array('%s', str_repeat(' ', 10));
     }
     if ($transaction->getAffiliationCode()) {
         $items[] = array('%010d', $transaction->getAffiliationCode());
     } else {
         $items[] = array('%s', str_repeat(' ', 10));
     }
     //Transfer designation classification: 7 (Tele-Exchange)
     $items[] = array('%d', 7);
     //Identification
     $items[] = array('%s', ' ');
     $items[] = array('%s', str_repeat(' ', 7));
     return StringUtil::sprintfItemGroupsToString($items);
 }