/**
  * @since 0.2
  *
  * @param DataValue $value
  * @param string $dataTypeId
  * @param GenericOptions $options
  *
  * @returns string
  */
 public function format(DataValue $value, $dataTypeId, GenericOptions $options = null)
 {
     if ($options === null) {
         $options = new GenericOptions();
     }
     $params = array('datavalue' => json_encode($this->dataValueSerializer->serialize($value)), 'datatype' => $dataTypeId, 'options' => json_encode($options->getOptions()));
     $result = $this->api->getRequest(new SimpleRequest('wbformatvalue', $params));
     return $result['result'];
 }
 public function testDefaultOption()
 {
     $options = array('foo' => 42, 'bar' => 4.2, 'baz' => array('o_O', false, null, '42' => 42, array()));
     $genericOptions = new GenericOptions($options);
     foreach ($options as $option => $value) {
         $genericOptions->defaultOption($option, 9001);
         $this->assertEquals(serialize($value), serialize($genericOptions->getOption($option)), 'Defaulting a set option should not affect its value');
     }
     $defaults = array('N' => 42, 'y' => 4.2, 'a' => false, 'n' => array('42' => 42, array('')));
     foreach ($defaults as $option => $value) {
         $genericOptions->defaultOption($option, $value);
         $this->assertEquals(serialize($value), serialize($genericOptions->getOption($option)), 'Defaulting a not set option should affect its value');
     }
 }