public function testGetters() { $name = $this->getFaker()->word; $recordSpec1 = \Mockery::mock('Giftcards\\FixedWidth\\Spec\\RecordSpec'); $recordSpec2 = \Mockery::mock('Giftcards\\FixedWidth\\Spec\\RecordSpec'); $recordSpecs = array('record1' => $recordSpec1, 'record2' => $recordSpec2); $width = $this->getFaker()->numberBetween(10, 20); $spec = new FileSpec($name, $recordSpecs, $width, "\r\n"); $this->assertEquals($name, $spec->getName()); $this->assertSame($recordSpecs, $spec->getRecordSpecs()); $this->assertSame($recordSpec1, $spec->getRecordSpec('record1')); $this->assertSame($recordSpec2, $spec->getRecordSpec('record2')); $this->assertEquals("\r\n", $spec->getLineSeparator()); }
public function recognize(LineInterface $line, FileSpec $spec) { $specsMissingField = array(); foreach ($spec->getRecordSpecs() as $name => $recordSpec) { try { $fieldSpec = $recordSpec->getFieldSpec($this->field); } catch (SpecNotFoundException $e) { $specsMissingField[] = $name; continue; } try { if ($fieldSpec->getDefault() == $line[$fieldSpec->getSlice()]) { return $name; } } catch (\OutOfBoundsException $e) { } } $extraHelp = ''; if (count($specsMissingField)) { $extraHelp = sprintf('record specs named %s are missing the %s field.', implode(', ', $specsMissingField), $this->field); } throw new CouldNotRecognizeException($extraHelp); }