Chris@0: formatterManager = new FormatterManager(); Chris@0: $this->formatterManager->addDefaultFormatters(); Chris@0: $this->formatterManager->addDefaultSimplifiers(); Chris@0: } Chris@0: Chris@0: function testValidFormats() Chris@0: { Chris@0: $arrayObjectRef = new \ReflectionClass('\ArrayObject'); Chris@0: $associativeListRef = new \ReflectionClass('\Consolidation\OutputFormatters\StructuredData\PropertyList'); Chris@0: $rowsOfFieldsRef = new \ReflectionClass('\Consolidation\OutputFormatters\StructuredData\RowsOfFields'); Chris@0: $notADataType = new \ReflectionClass('\Consolidation\OutputFormatters\FormatterManager'); Chris@0: Chris@0: $jsonFormatter = $this->formatterManager->getFormatter('json'); Chris@0: $isValid = $this->formatterManager->isValidFormat($jsonFormatter, $notADataType); Chris@0: $this->assertFalse($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($jsonFormatter, new \ArrayObject()); Chris@0: $this->assertTrue($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($jsonFormatter, $arrayObjectRef); Chris@0: $this->assertTrue($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($jsonFormatter, []); Chris@0: $this->assertTrue($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($jsonFormatter, $associativeListRef); Chris@0: $this->assertTrue($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($jsonFormatter, $rowsOfFieldsRef); Chris@0: $this->assertTrue($isValid); Chris@0: Chris@0: $sectionsFormatter = $this->formatterManager->getFormatter('sections'); Chris@0: $isValid = $this->formatterManager->isValidFormat($sectionsFormatter, $notADataType); Chris@0: $this->assertFalse($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($sectionsFormatter, []); Chris@0: $this->assertFalse($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($sectionsFormatter, $arrayObjectRef); Chris@0: $this->assertFalse($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($sectionsFormatter, $rowsOfFieldsRef); Chris@0: $this->assertTrue($isValid); Chris@0: $isValid = $this->formatterManager->isValidFormat($sectionsFormatter, $associativeListRef); Chris@0: $this->assertFalse($isValid); Chris@0: Chris@0: // Check to see which formats can handle a simple array Chris@0: $validFormats = $this->formatterManager->validFormats([]); Chris@0: $this->assertEquals('csv,json,list,php,print-r,string,tsv,var_export,xml,yaml', implode(',', $validFormats)); Chris@0: Chris@0: // Check to see which formats can handle an PropertyList Chris@0: $validFormats = $this->formatterManager->validFormats($associativeListRef); Chris@0: $this->assertEquals('csv,json,list,php,print-r,string,table,tsv,var_export,xml,yaml', implode(',', $validFormats)); Chris@0: Chris@0: // Check to see which formats can handle an RowsOfFields Chris@0: $validFormats = $this->formatterManager->validFormats($rowsOfFieldsRef); Chris@0: $this->assertEquals('csv,json,list,php,print-r,sections,string,table,tsv,var_export,xml,yaml', implode(',', $validFormats)); Chris@0: Chris@0: // TODO: it woud be better if this returned an empty set instead of 'string'. Chris@0: $validFormats = $this->formatterManager->validFormats($notADataType); Chris@0: $this->assertEquals('string', implode(',', $validFormats)); Chris@0: } Chris@0: Chris@0: function testAutomaticOptions() Chris@0: { Chris@0: $rowsOfFieldsRef = new \ReflectionClass('\Consolidation\OutputFormatters\StructuredData\RowsOfFields'); Chris@0: $formatterOptions = new FormatterOptions( Chris@0: [ Chris@0: FormatterOptions::FIELD_LABELS => "name: Name\nphone_number: Phone Number", Chris@0: ] Chris@0: ); Chris@0: $inputOptions = $this->formatterManager->automaticOptions($formatterOptions, $rowsOfFieldsRef); Chris@0: $this->assertInputOptionDescriptionsEquals("Format the result data. Available formats: csv,json,list,php,print-r,sections,string,table,tsv,var_export,xml,yaml [Default: 'table']\nAvailable fields: Name (name), Phone Number (phone_number) [Default: '']\nSelect just one field, and force format to 'string'. [Default: '']", $inputOptions); Chris@0: } Chris@0: Chris@0: function assertInputOptionDescriptionsEquals($expected, $inputOptions) Chris@0: { Chris@0: $descriptions = []; Chris@0: foreach ($inputOptions as $inputOption) { Chris@0: $descriptions[] = $inputOption->getDescription() . " [Default: '" . $inputOption->getDefault() . "']"; Chris@0: } Chris@0: $this->assertEquals($expected, implode("\n", $descriptions)); Chris@0: } Chris@0: }