/**
  * Oh Shit: It's an actual simple unit test!
  * @covers DataValidator::getZeroPaddedValue()
  */
 public function testGetZeroPaddedValue()
 {
     //make sure that it works in the two main categories of ways it should work
     $this->assertEquals('00123', DataValidator::getZeroPaddedValue('123', 5), "getZeroPaddedValue does not properly pad out a value in the simplest case");
     $this->assertEquals('00123', DataValidator::getZeroPaddedValue('0000123', 5), "getZeroPaddedValue does not properly unpad and re-pad a value when leading zeroes exist in the initial value");
     //make sure it fails gracefully when asked to do something silly.
     $this->assertFalse(DataValidator::getZeroPaddedValue('123456', 5), "getZeroPaddedValue does not return false when the exact desired value is impossible");
 }
 public function stage(GatewayType $adapter, $normalized, &$stagedData)
 {
     // Pad some fields with zeros, to their maximum length.
     $fields = array('account_number', 'bank_code', 'branch_code');
     foreach ($fields as $field) {
         if (isset($normalized[$field])) {
             $constraints = $adapter->getDataConstraints($field);
             if (isset($constraints['length'])) {
                 $newval = DataValidator::getZeroPaddedValue($normalized[$field], $constraints['length']);
                 if ($newval !== false) {
                     $stagedData[$field] = $newval;
                 } else {
                     // Invalid value, so blank the field.
                     $stagedData[$field] = '';
                 }
             }
         }
     }
 }