public function testAppendRequiredFields()
 {
     //get the validator
     $requiredFields = new RequiredFields('Title', 'Content', 'Image', 'AnotherField');
     //create another validator with other fields
     $otherRequiredFields = new RequiredFields(array('ExtraField1', 'ExtraField2'));
     //append the new fields
     $requiredFields->appendRequiredFields($otherRequiredFields);
     //check they were added correctly
     $this->assertEquals(array('Title', 'Content', 'Image', 'AnotherField', 'ExtraField1', 'ExtraField2'), $requiredFields->getRequired(), "Merging of required fields failed to behave as expected");
     // create the standard validator so we can check duplicates are ignored
     $otherRequiredFields = new RequiredFields('Title', 'Content', 'Image', 'AnotherField');
     //add the new validator
     $requiredFields->appendRequiredFields($otherRequiredFields);
     //check nothing was changed
     $this->assertEquals(array('Title', 'Content', 'Image', 'AnotherField', 'ExtraField1', 'ExtraField2'), $requiredFields->getRequired(), "Merging of required fields with duplicates failed to behave as expected");
     //add some new fields and some old ones in a strange order
     $otherRequiredFields = new RequiredFields('ExtraField3', 'Title', 'ExtraField4', 'Image', 'Content');
     //add the new validator
     $requiredFields->appendRequiredFields($otherRequiredFields);
     //check that only the new fields were added
     $this->assertEquals(array('Title', 'Content', 'Image', 'AnotherField', 'ExtraField1', 'ExtraField2', 'ExtraField3', 'ExtraField4'), $requiredFields->getRequired(), "Merging of required fields with some duplicates in a muddled order failed to behave as expected");
 }
 function Form()
 {
     if (Session::get('SmartChimp.SUCCESS')) {
         Session::clear('SmartChimp.SUCCESS');
         return false;
     }
     $requiredFields = new RequiredFields('email');
     if ($this->FirstFieldRequired) {
         $requiredFields->appendRequiredFields(array('fname'));
     }
     if ($this->LastFieldRequired) {
         $requiredFields->appendRequiredFields(array('lname'));
     }
     $form = new Form($this, 'Form', new FieldSet(new TextField('fname', 'First name'), new TextField('lname', 'Last name'), new TextField('email', 'Email address')), new FieldSet(new FormAction('SignupAction', 'Sign up')), $requiredFields);
     $this->extend('updateSmartChimpForm', $form);
     return $form;
 }