public function testFieldPosition()
 {
     $compositeOuter = new CompositeField(new TextField('A'), new TextField('B'), $compositeInner = new CompositeField(new TextField('C1'), new TextField('C2')), new TextField('D'));
     $this->assertEquals(0, $compositeOuter->fieldPosition('A'));
     $this->assertEquals(1, $compositeOuter->fieldPosition('B'));
     $this->assertEquals(3, $compositeOuter->fieldPosition('D'));
     $this->assertEquals(0, $compositeInner->fieldPosition('C1'));
     $this->assertEquals(1, $compositeInner->fieldPosition('C2'));
     $compositeOuter->insertBefore('B', new TextField('AB'));
     $this->assertEquals(0, $compositeOuter->fieldPosition('A'));
     $this->assertEquals(1, $compositeOuter->fieldPosition('AB'));
     $this->assertEquals(2, $compositeOuter->fieldPosition('B'));
 }
 /**
  * Inserts a field before a particular field in a FieldList.
  *
  * @param string $insertBefore Name of the field to insert before
  * @param FormField $field The form field to insert
  * @return FormField|null
  */
 public function insertBefore($insertBefore, $field)
 {
     if ($field instanceof Tab || $field instanceof TabSet) {
         $field->setTabSet($this);
     }
     return parent::insertBefore($insertBefore, $field);
 }