public function testParsing()
 {
     /* @var TableFormElementDefinition $formElementDefinition */
     $formElementDefinition = Parser::parseFormElementDefinition('Table = table (A,B)');
     $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TableFormElementDefinition', $formElementDefinition);
     $this->assertEquals('Table', $formElementDefinition->getLabel());
     $this->assertEquals('table', $formElementDefinition->getName());
     $this->assertFalse($formElementDefinition->isMandatory());
     $this->assertFalse($formElementDefinition->isUnique());
     $this->assertEquals(array(1 => 'A', 2 => 'B'), $formElementDefinition->getColumnHeadings());
     $this->assertEquals(array(), $formElementDefinition->getWidths());
     /* @var TableFormElementDefinition $formElementDefinition */
     $formElementDefinition = Parser::parseFormElementDefinition('Table = table (A,B) (10,10,50)');
     $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TableFormElementDefinition', $formElementDefinition);
     $this->assertEquals(array(1 => 'A', 2 => 'B'), $formElementDefinition->getColumnHeadings());
     $this->assertEquals(array(1 => '10', 2 => '10', 3 => '50'), $formElementDefinition->getWidths());
 }
 public function testRepositoryReference()
 {
     /** @var ReferenceFormElementDefinition $formElementDefinition */
     $formElementDefinition = Parser::parseFormElementDefinition('prop1 = reference news');
     $this->assertInstanceOf('CMDL\\FormElementDefinitions\\ReferenceFormElementDefinition', $formElementDefinition);
     $this->assertEquals('dropdown', $formElementDefinition->getType());
     $this->assertEquals('news', $formElementDefinition->getContentType());
     $this->assertEquals('default', $formElementDefinition->getWorkspace());
     $this->assertEquals('name', $formElementDefinition->getOrder());
     $this->assertFalse($formElementDefinition->hasRepositoryName());
     /** @var ReferenceFormElementDefinition $formElementDefinition */
     $formElementDefinition = Parser::parseFormElementDefinition('prop1 = reference a.news');
     $this->assertInstanceOf('CMDL\\FormElementDefinitions\\ReferenceFormElementDefinition', $formElementDefinition);
     $this->assertEquals('dropdown', $formElementDefinition->getType());
     $this->assertEquals('news', $formElementDefinition->getContentType());
     $this->assertEquals('default', $formElementDefinition->getWorkspace());
     $this->assertEquals('name', $formElementDefinition->getOrder());
     $this->assertTrue($formElementDefinition->hasRepositoryName());
     /** @var MultiReferenceFormElementDefinition $formElementDefinition */
     $formElementDefinition = Parser::parseFormElementDefinition('prop1 = multireference news');
     $this->assertInstanceOf('CMDL\\FormElementDefinitions\\MultiReferenceFormElementDefinition', $formElementDefinition);
     $this->assertEquals('list', $formElementDefinition->getType());
     $this->assertEquals('news', $formElementDefinition->getContentType());
     $this->assertEquals('default', $formElementDefinition->getWorkspace());
     $this->assertEquals('name', $formElementDefinition->getOrder());
     $this->assertFalse($formElementDefinition->hasRepositoryName());
     /** @var MultiReferenceFormElementDefinition $formElementDefinition */
     $formElementDefinition = Parser::parseFormElementDefinition('prop1 = multireference a.news');
     $this->assertInstanceOf('CMDL\\FormElementDefinitions\\MultiReferenceFormElementDefinition', $formElementDefinition);
     $this->assertEquals('list', $formElementDefinition->getType());
     $this->assertEquals('news', $formElementDefinition->getContentType());
     $this->assertEquals('default', $formElementDefinition->getWorkspace());
     $this->assertEquals('name', $formElementDefinition->getOrder());
     $this->assertTrue($formElementDefinition->hasRepositoryName());
 }
 public function testCustomFormElementDefinition()
 {
     $formElementDefinition = Parser::parseFormElementDefinition('prop1 = custom video youtube (360p,720p,1080p)');
     $this->assertInstanceOf('CMDL\\FormElementDefinitions\\CustomFormElementDefinition', $formElementDefinition);
     $this->assertEquals('video', $formElementDefinition->getType());
     $this->assertEquals('youtube', $formElementDefinition->getParam(1));
     $this->assertCount(3, $formElementDefinition->getList(1));
 }