/**
* Tests setting, getting and removing custom media types.
*
* @return void
*/
public function testMediaTypes()
{
$result = Media::types();
$this->assertTrue(is_array($result));
$this->assertTrue(in_array('json', $result));
$this->assertFalse(in_array('my', $result));
$this->assertEqual($result, Media::formats());
$result = Media::type('json');
$expected = 'application/json';
$this->assertEqual($expected, $result['content']);
$expected = array('view' => false, 'layout' => false, 'encode' => 'json_encode', 'decode' => 'json_decode');
$this->assertEqual($expected, $result['options']);
Media::type('my', 'text/x-my', array('view' => '\\my\\custom\\View', 'layout' => false));
$result = Media::types();
$this->assertTrue(in_array('my', $result));
$result = Media::type('my');
$expected = 'text/x-my';
$this->assertEqual($expected, $result['content']);
$expected = array('view' => '\\my\\custom\\View', 'template' => null, 'layout' => null, 'encode' => null, 'decode' => null);
$this->assertEqual($expected, $result['options']);
Media::type('my', false);
$result = Media::types();
$this->assertFalse(in_array('my', $result));
}