/**
  * @dataProvider formatterDataProvider
  */
 public function testGetOutput($format, $item)
 {
     $formatter = new GenericResponseItemFormatter();
     $keys = array_keys($item);
     $currentItemKey = $keys[0];
     $formatter->formatter(array($currentItemKey => 'fake', 'content' => $item[$currentItemKey]));
     $propertyValue = $this->propertyGetValue($formatter, 'data');
     $this->assertArrayHasKey($currentItemKey, $propertyValue);
     $this->assertArrayHasKey('content', $propertyValue);
     $output = $formatter->getOutput();
     $outputKeys = array_keys($output);
     $this->assertEquals($currentItemKey, $outputKeys[0]);
     $this->assertEquals('fake', $output[$currentItemKey]);
     if ($format === 'string') {
         if ($item[$currentItemKey] === '') {
             $this->assertNull($output['content']);
         } else {
             $this->assertEquals(trim($item[$currentItemKey]), $output['content']);
         }
     } elseif ($format === 'numeric') {
         if ($item[$currentItemKey] === '12') {
             $this->assertTrue(is_int($output['content']));
         } else {
             $this->assertTrue(is_float($output['content']));
         }
     } elseif ($format === 'boolean') {
         if (strtolower($item[$currentItemKey]) === 'false') {
             $this->assertFalse($output['content']);
         } else {
             $this->assertTrue($output['content']);
         }
     } elseif ($format === 'datetime') {
         $this->assertInstanceOf('\\DateTime', $output['content']);
     }
 }
 /**
  * @inheritdoc
  */
 public function formatter(array $data)
 {
     $this->data = array();
     $formatter = new GenericResponseItemFormatter();
     if (!isset($data[0])) {
         $data = array($data);
     }
     foreach ($data as $item) {
         $formattedItem = $formatter->formatter($item)->getOutput();
         $this->data[isset($formattedItem['val']) ? $formattedItem['val'] : $formattedItem['sl']] = $formattedItem['content'];
     }
     return $this;
 }