You are here

public function WebformTestCase::webformComponents in Webform 7.4

Provide a list of components to test throughout the suite.

Each component provides:

  • A default configuration for the component.
  • Values to try setting via POST
  • Values that should match the database storage when set via POST
  • Values that should match the database storage when using the default values.

Return value

array An array of each component settings.

8 calls to WebformTestCase::webformComponents()
WebformComponentsTestCase::testWebformComponents in tests/WebformComponentsTestCase.test
Webform module component tests.
WebformConditionalsTestCase::testWebformConditionals in tests/WebformConditionalsTestCase.test
Test that required fields with no default value can't be submitted as-is.
WebformConditionalsTestCase::webformTestConditionalComponent in tests/WebformConditionalsTestCase.test
Assembles a test node for checking if conditional properties are respected.
WebformGeneralTestCase::testWebformCreateNewType in tests/WebformGeneralTestCase.test
Test webform-enabling a different node type and testing behavior.
WebformSubmissionTestCase::webformSubmissionExecute in tests/WebformSubmissionTestCase.test
Execute the submission test.

... See full list

File

tests/WebformTestCase.test, line 117

Class

WebformTestCase
Webform module tests.

Code

public function webformComponents() {
  if (isset($this->_webform_components)) {
    return $this->_webform_components;
  }
  $this->_webform_components = array(
    // Test date components.
    'date' => array(
      'component' => array(
        'form_key' => 'date',
        'name' => 'Date',
        'type' => 'date',
        'value' => '19 Nov 1978',
        'extra' => array(
          'timezone' => 'site',
          'start_date' => '-100 years',
          'end_date' => '+2 years',
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => array(
        'day' => '30',
        'month' => '9',
        'year' => '1982',
      ),
      'database values' => array(
        '1982-09-30',
      ),
      'database default values' => array(
        '1978-11-19',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '1982/9/30',
        'before' => '1982/10/1',
        'before_equal' => '1982/9/30',
        'after' => '1982/9/29',
        'after_equal' => '1982/9/29',
      ),
      'mismatch conditional values' => array(
        'equal' => '1981/9/30',
        'before' => '1982/9/30',
        'before_equal' => '1982/9/29',
        'after' => '1982/9/30',
        'after_equal' => '1982/10/1',
      ),
    ),
    // Test grid components.
    'grid' => array(
      'component' => array(
        'form_key' => 'grid',
        'name' => 'Grid',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          // Left side.
          'questions' => "0|Ålphå\n1|ıé†å\n2|Î鬆å",
          // Top.
          'options' => "0|øne\n1|twö\n2|ǼBƇ\n3|€Euro",
        ),
        'required' => '0',
        'pid' => '2',
        'weight' => '-19',
      ),
      'sample values' => array(
        '0' => '0',
        '1' => '1',
        '2' => '2',
      ),
      'database values' => array(
        '0' => '0',
        '1' => '1',
        '2' => '2',
      ),
      'database default values' => array(
        '',
        '',
        '',
      ),
    ),
    'grid_keyed' => array(
      'component' => array(
        'form_key' => 'grid_keyed',
        'name' => 'Grid Keyed',
        'type' => 'grid',
        'value' => '',
        'extra' => array(
          // Left side.
          'questions' => "one|What's your option?\ntwo|Agåin?|Again, right text\nthree|One more time!",
          // Top.
          'options' => "one|Option one\ntwo|Option 2\nthree| Three is me",
          'title_display' => 'internal',
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => array(
        'one' => 'one',
        'two' => 'two',
        'three' => 'three',
      ),
      'database values' => array(
        'one' => 'one',
        'two' => 'two',
        'three' => 'three',
      ),
      'database default values' => array(
        'one' => '',
        'two' => '',
        'three' => '',
      ),
    ),
    // Test select components.
    'checkboxes' => array(
      'component' => array(
        'form_key' => 'checkboxes',
        'name' => 'Checkboxes',
        'type' => 'select',
        'value' => 'two',
        'extra' => array(
          'items' => "one|one\ntwo|two\nthree|three",
          'multiple' => 1,
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => array(
        'one' => TRUE,
        'two' => FALSE,
        'three' => TRUE,
      ),
      'database values' => array(
        'one',
        'three',
      ),
      'database default values' => array(
        'two',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        // ANDed together match.
        'equal' => array(
          'one',
          'three',
        ),
        'not_equal' => array(
          'two',
        ),
      ),
      'mismatch conditional values' => array(
        'equal' => array(
          'one',
          'two',
        ),
        'not_equal' => array(
          'two',
          'three',
        ),
      ),
    ),
    'checkboxes_zero' => array(
      'component' => array(
        'form_key' => 'checkboxes_zero',
        'name' => 'Checkboxes zero',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'items' => "0|zero\n1|one\n2|two",
          'multiple' => 1,
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => array(
        '0' => TRUE,
      ),
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '0',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '0',
        'not_equal' => '1',
      ),
      'mismatch conditional values' => array(
        'equal' => '1',
        'not_equal' => '0',
      ),
    ),
    'radios' => array(
      'component' => array(
        'form_key' => 'radios',
        'name' => 'Radios',
        'type' => 'select',
        'value' => 'two',
        'extra' => array(
          'items' => "one|one\ntwo|two\nthree|three",
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => 'one',
      'database values' => array(
        'one',
      ),
      'database default values' => array(
        'two',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'one',
        'not_equal' => 'two',
      ),
      'mismatch conditional values' => array(
        'equal' => 'two',
        'not_equal' => 'one',
      ),
    ),
    'radios_zero' => array(
      'component' => array(
        'form_key' => 'radios_zero',
        'name' => 'Radios zero',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'items' => "0|zero\n1|one\n2|two",
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => '0',
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '0',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '0',
        'not_equal' => '1',
      ),
      'mismatch conditional values' => array(
        'equal' => '1',
        'not_equal' => '0',
      ),
    ),
    'radios_relative' => array(
      'component' => array(
        'form_key' => 'radios_relative',
        'name' => 'Radios relative',
        'type' => 'select',
        'value' => 'one',
        'extra' => array(
          'items' => "zero|Zero\none|One\ntwo|Two\nthree|Three\n",
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => 'one',
      'database values' => array(
        'one',
      ),
      'database default values' => array(
        'one',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'one',
        'not_equal' => 'zero',
        'less_than' => 'two',
        'less_than_equal' => 'one',
        'greater_than' => 'zero',
        'greater_than_equal' => 'zero',
      ),
      'mismatch conditional values' => array(
        'equal' => 'zero',
        'not_equal' => 'one',
        'less_than' => 'one',
        'less_than_equal' => 'zero',
        'greater_than' => 'two',
        'greater_than_equal' => 'two',
      ),
    ),
    'select' => array(
      'component' => array(
        'form_key' => 'select',
        'name' => 'Select',
        'type' => 'select',
        'value' => 'one',
        'extra' => array(
          'description' => 'Description here',
          'items' => "one|one\ntwo|two\nthree|three\nfour|four\nfive|five\nsix|six",
          'aslist' => 1,
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => 'two',
      'database values' => array(
        'two',
      ),
      'database default values' => array(
        'one',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'two',
        'not_equal' => 'one',
      ),
      'mismatch conditional values' => array(
        'equal' => 'one',
        'not_equal' => 'two',
      ),
    ),
    'select_zero' => array(
      'component' => array(
        'form_key' => 'select_zero',
        'name' => 'Select zero',
        'type' => 'select',
        'value' => '0',
        'extra' => array(
          'description' => 'Tests saving zero as a value.',
          'items' => "0|zero\n1|one\n2|two",
          'aslist' => 1,
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => '0',
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '0',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '0',
        'not_equal' => '1',
      ),
      'mismatch conditional values' => array(
        'equal' => '1',
        'not_equal' => '0',
      ),
    ),
    'select_no_default' => array(
      'component' => array(
        'form_key' => 'select_no_default',
        'name' => 'Select no default',
        'type' => 'select',
        'value' => '',
        'extra' => array(
          'description' => 'Description here',
          'items' => "one|one\ntwo|two\nthree|three\nfour|four\nfive|five\nsix|six",
          'aslist' => 1,
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => 'two',
      'database values' => array(
        'two',
      ),
      'database default values' => array(
        '',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'two',
        'not_equal' => '',
      ),
      'mismatch conditional values' => array(
        'equal' => '',
        'not_equal' => 'two',
      ),
    ),
    'select_no_default_zero' => array(
      'component' => array(
        'form_key' => 'select_no_default_zero',
        'name' => 'Select no default zero',
        'type' => 'select',
        'value' => '',
        'extra' => array(
          'description' => 'Tests saving zero as a value.',
          'items' => "0|zero\n1|one\n2|two",
          'aslist' => 1,
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => '0',
      'database values' => array(
        '0',
      ),
      'database default values' => array(
        '',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '0',
        'not_equal' => '',
      ),
      'mismatch conditional values' => array(
        'equal' => '',
        'not_equal' => '0',
      ),
    ),
    'select_optgroup' => array(
      'component' => array(
        'form_key' => 'select_optgroup',
        'name' => 'Select Optgroup',
        'type' => 'select',
        'value' => 'option 1-2',
        'extra' => array(
          'description' => 'Tests saving zero as a value.',
          'items' => "<Group 1>\noption 1-1|option 1-1\noption 1-2|option 1-2\noption 1-3|option 1-3\n<Group 2>\noption 2-1|option 2-1\noption 2-2|option 2-2\noption 2-3|option 2-3",
          'aslist' => 1,
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => 'option 2-2',
      'database values' => array(
        'option 2-2',
      ),
      'database default values' => array(
        'option 1-2',
      ),
    ),
    'select_email' => array(
      'component' => array(
        'form_key' => 'select_email',
        'name' => 'Select e-mails',
        'type' => 'select',
        'value' => 'nate@localhost.localhost',
        'extra' => array(
          'items' => "nate@localhost.localhost|one\nadmin@localhost.localhost|two",
        ),
        'required' => '0',
        'pid' => '2',
        'weight' => '-17',
      ),
      'sample values' => 'admin@localhost.localhost',
      'database values' => array(
        'admin@localhost.localhost',
      ),
      'database default values' => array(
        'nate@localhost.localhost',
      ),
    ),
    'select_multiple' => array(
      'component' => array(
        'form_key' => 'select_multiple',
        'name' => 'Select Multiple',
        'type' => 'select',
        'value' => 'one,two',
        'extra' => array(
          'items' => "one|one\ntwo|two\nthree|three",
          'multiple' => 1,
          'aslist' => 1,
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-10',
      ),
      // @todo I'd like to test a value, but SimpleTest can't set multiple values.
      'sample values' => NULL,
      'database values' => array(
        'one',
        'two',
      ),
      'database default values' => array(
        'one',
        'two',
      ),
    ),
    'select_relative' => array(
      'component' => array(
        'form_key' => 'select_relative',
        'name' => 'Select relative',
        'type' => 'select',
        'value' => 'one',
        'extra' => array(
          'items' => "zero|Zero\none|One\ntwo|Two\nthree|Three\n",
          'aslist' => 1,
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-9',
      ),
      'sample values' => 'one',
      'database values' => array(
        'one',
      ),
      'database default values' => array(
        'one',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'one',
        'not_equal' => 'zero',
        'less_than' => 'two',
        'less_than_equal' => 'one',
        'greater_than' => 'zero',
        'greater_than_equal' => 'zero',
      ),
      'mismatch conditional values' => array(
        'equal' => 'zero',
        'not_equal' => 'one',
        'less_than' => 'one',
        'less_than_equal' => 'zero',
        'greater_than' => 'two',
        'greater_than_equal' => 'two',
      ),
    ),
    // Test date components.
    'date_textfield' => array(
      'component' => array(
        'form_key' => 'date_textfield',
        'name' => 'Date Textfield',
        'type' => 'date',
        'value' => 'Nov 19 1978',
        'extra' => array(
          'timezone' => 'site',
          'start_date' => '-100 years',
          'end_date' => '+2 years',
          'year_textfield' => 1,
        ),
        'required' => '1',
        'pid' => '0',
        'weight' => '-7',
      ),
      'sample values' => array(
        'day' => '30',
        'month' => '9',
        'year' => '1982',
      ),
      'database values' => array(
        '1982-09-30',
      ),
      'database default values' => array(
        '1978-11-19',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '1982/9/30',
        'before' => '1982/10/1',
        'before_equal' => '1982/9/30',
        'after' => '1982/9/29',
        'after_equal' => '1982/9/29',
      ),
      'mismatch conditional values' => array(
        'equal' => '1981/9/30',
        'before' => '1982/9/30',
        'before_equal' => '1982/9/29',
        'after' => '1982/9/30',
        'after_equal' => '1982/10/1',
      ),
    ),
    // Test email components.
    'email' => array(
      'component' => array(
        'form_key' => 'email',
        'name' => 'E-mail',
        'type' => 'email',
        'value' => '[current-user:mail]',
        'required' => '0',
        'extra' => array(
          // SimpleTest does not support type="email" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'pid' => '0',
        'weight' => '-5',
      ),
      'sample values' => 'admin@localhost.localhost',
      'database values' => array(
        'admin@localhost.localhost',
      ),
      'database default values' => array(
        $this->webform_users['admin']->mail,
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'admin@localhost.localhost',
        'not_equal' => '',
        'contains' => 'admin',
        'does_not_contain' => 'foo',
        'begins_with' => 'admin',
        'ends_with' => 'localhost',
        'not_empty' => TRUE,
      ),
      'mismatch conditional values' => array(
        'equal' => 'foo@localhost.localhost',
        'not_equal' => 'admin@localhost.localhost',
        'contains' => 'foo',
        'does_not_contain' => 'admin',
        'begins_with' => 'localhost',
        'ends_with' => 'admin',
        'empty' => TRUE,
      ),
    ),
    // Test hidden components.
    'hidden' => array(
      'component' => array(
        'form_key' => 'hidden',
        'name' => 'Hidden',
        'type' => 'hidden',
        'value' => 'default hidden value',
        'required' => '1',
        'pid' => '0',
        'weight' => '-4',
      ),
      'sample values' => NULL,
      'database values' => array(
        'default hidden value',
      ),
      'database default values' => array(
        'default hidden value',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'default hidden value',
        'not_equal' => '',
        'contains' => 'hidden',
        'does_not_contain' => 'foo',
        'begins_with' => 'default',
        'ends_with' => 'value',
        'not_empty' => TRUE,
      ),
      'mismatch conditional values' => array(
        'equal' => '',
        'not_equal' => 'default hidden value',
        'contains' => 'foo',
        'does_not_contain' => 'hidden',
        'begins_with' => 'value',
        'ends_with' => 'default',
        'empty' => TRUE,
      ),
    ),
    // Test textarea components.
    'textarea' => array(
      'component' => array(
        'form_key' => 'textarea',
        'name' => 'Textarea',
        'type' => 'textarea',
        'value' => 'sample textarea default value',
        'extra' => array(),
        'required' => '0',
        'pid' => '0',
        'weight' => '15',
      ),
      'sample values' => 'sample textarea value',
      'database values' => array(
        'sample textarea value',
      ),
      'database default values' => array(
        'sample textarea default value',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => 'sample textarea value',
        'not_equal' => '',
        'contains' => 'sample',
        'does_not_contain' => 'foo',
        'begins_with' => 'sample',
        'ends_with' => 'value',
        'not_empty' => TRUE,
      ),
      'mismatch conditional values' => array(
        'equal' => '',
        'not_equal' => 'sample textarea value',
        'contains' => 'foo',
        'does_not_contain' => 'sample',
        'begins_with' => 'value',
        'ends_with' => 'sample',
        'empty' => TRUE,
      ),
    ),
    // Test textfield components.
    'textfield' => array(
      'component' => array(
        'form_key' => 'textfield',
        'name' => 'Textfield',
        'type' => 'textfield',
        'value' => '',
        'required' => '0',
        'pid' => '0',
        'weight' => '-14',
      ),
      'sample values' => '',
      'database values' => array(
        '',
      ),
      'database default values' => array(
        '',
      ),
    ),
    'textfield_disabled' => array(
      'component' => array(
        'form_key' => 'textfield_disabled',
        'name' => 'Textfield Disabled',
        'type' => 'textfield',
        'value' => '[current-page:query:foo]',
        'extra' => array(
          'disabled' => 1,
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-15',
      ),
      'sample values' => NULL,
      'database values' => array(
        'bar',
      ),
      'database default values' => array(
        'bar',
      ),
    ),
    'textfield_profile' => array(
      'component' => array(
        'form_key' => 'textfield_profile',
        'name' => 'Textfield Profile',
        'type' => 'textfield',
        'value' => '[current-user:gender]',
        'extra' => array(
          'width' => '20',
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '-6',
      ),
      'sample values' => 'Female',
      'database values' => array(
        'Female',
      ),
      'database default values' => array(
        $this->webform_users['admin']->gender[LANGUAGE_NONE][0]['value'],
      ),
    ),
    // Test time components.
    'time' => array(
      'component' => array(
        'form_key' => 'time',
        'name' => 'Time',
        'type' => 'time',
        'value' => '10:30pm',
        'extra' => array(
          'timezone' => 'site',
          'hourformat' => '12-hour',
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '16',
      ),
      'sample values' => array(
        'hour' => '12',
        'minute' => '0',
        'ampm' => 'pm',
      ),
      'database values' => array(
        '12:00:00',
      ),
      'database default values' => array(
        '22:30:00',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '12:00pm',
        'before' => '1:00pm',
        'before_equal' => '12:00pm',
        'after' => '11:00am',
        'after_equal' => '11:00am',
      ),
      'mismatch conditional values' => array(
        'equal' => '12:00am',
        'before' => '12:00pm',
        'before_equal' => '11:00am',
        'after' => '12:00pm',
      ),
    ),
    'time_24h' => array(
      'component' => array(
        'form_key' => 'time_24h',
        'name' => 'Time 24H',
        'type' => 'time',
        'value' => '10:30pm',
        'extra' => array(
          'timezone' => 'site',
          'hourformat' => '24-hour',
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '17',
      ),
      'sample values' => array(
        'hour' => '5',
        'minute' => '0',
      ),
      'database values' => array(
        '05:00:00',
      ),
      'database default values' => array(
        '22:30:00',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '5:00',
        'before' => '24:00',
        'before_equal' => '5:00',
        'after' => '00:00',
        'after_equal' => '00:00',
      ),
      'mismatch conditional values' => array(
        'equal' => '5:01',
        'before' => '5:00',
        'before_equal' => '4:59',
        'after' => '5:00',
        'after_equal' => '5:01',
      ),
    ),
    // Test number components.
    'integer' => array(
      'component' => array(
        'form_key' => 'integer',
        'name' => 'Integer',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'textfield',
          'integer' => 1,
          'max' => '100',
          // SimpleTest does not support type="number" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '18',
      ),
      'sample values' => '2',
      'database values' => array(
        '2',
      ),
      'database default values' => array(
        '1',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '2',
        'not_equal' => '0',
        'less_than' => '3',
        'less_than_equal' => '2',
        'greater_than' => '1',
        'greater_than_equal' => '1',
        'not_empty' => TRUE,
      ),
      'mismatch conditional values' => array(
        'equal' => '0',
        'not_equal' => '2',
        'less_than' => '2',
        'less_than_equal' => '1',
        'greater_than' => '2',
        'greater_than_equal' => '3',
        'empty' => TRUE,
      ),
      'error values' => array(
        '1.5' => t('!name field value of @value must be an integer.', array(
          '!name' => 'Integer',
          '@value' => '1.5',
        )),
        '101' => t('!name field value must be less than or equal to @max.', array(
          '!name' => 'Integer',
          '@max' => '100',
        )),
      ),
    ),
    'integer_range' => array(
      'component' => array(
        'form_key' => 'integer_range',
        'name' => 'Integer Range',
        'type' => 'number',
        'value' => '50',
        'extra' => array(
          'type' => 'select',
          'min' => '10',
          'max' => '50',
          'step' => 5,
          'integer' => 1,
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '19',
      ),
      'sample values' => '10',
      'database values' => array(
        '10',
      ),
      'database default values' => array(
        '50',
      ),
    ),
    'decimal_positive' => array(
      'component' => array(
        'form_key' => 'decimal_positive',
        'name' => 'Decimal positive',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'textfield',
          'field_prefix' => '$',
          'field_suffix' => 'lbs',
          'min' => '0',
          'decimals' => '2',
          'point' => '.',
          'separator' => ',',
          // SimpleTest does not support type="number" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '20',
      ),
      'sample values' => '2.00',
      'database values' => array(
        '2.00',
      ),
      'database default values' => array(
        '1',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '2',
        'not_equal' => '0',
        'less_than' => '3.000',
        'greater_than' => '1.000',
        'not_empty' => TRUE,
      ),
      'mismatch conditional values' => array(
        'equal' => '0',
        'not_equal' => '2',
        'less_than' => '2.0',
        'greater_than' => '2.00',
        'empty' => TRUE,
      ),
      'error values' => array(
        '-1' => t('!name field value must be greater than or equal to @min.', array(
          '!name' => 'Decimal positive',
          '@min' => '0',
        )),
      ),
    ),
    'decimal_range' => array(
      'component' => array(
        'form_key' => 'decimal_range',
        'name' => 'Decimal range',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'textfield',
          'field_prefix' => '$',
          'field_suffix' => 'lbs',
          'min' => '1',
          'max' => '12',
          'step' => '1.5',
          // SimpleTest does not support type="number" input fields.
          'attributes' => array(
            'type' => 'text',
          ),
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '21',
      ),
      'sample values' => '11.5',
      'database values' => array(
        '11.5',
      ),
      'database default values' => array(
        '1',
      ),
      'error values' => array(
        '2' => t('!name field value must be @start plus a multiple of @step.', array(
          '!name' => 'Decimal range',
          '@start' => '1',
          '@step' => '1.5',
        )),
        '13' => t('!name field value of @value should be in the range @min to @max.', array(
          '!name' => 'Decimal range',
          '@value' => '13',
          '@min' => '1',
          '@max' => '12',
        )),
      ),
    ),
    'decimal_range_select' => array(
      'component' => array(
        'form_key' => 'decimal_range_select',
        'name' => 'Decimal range select',
        'type' => 'number',
        'value' => '1',
        'extra' => array(
          'type' => 'select',
          'field_prefix' => '$',
          'field_suffix' => 'lbs',
          'min' => '1',
          'max' => '12',
          'step' => '1.5',
        ),
        'required' => '0',
        'pid' => '0',
        'weight' => '21',
      ),
      'sample values' => '10',
      'database values' => array(
        '10',
      ),
      'database default values' => array(
        '1',
      ),
      // Conditionals match against the 'sample values'.
      'match conditional values' => array(
        'equal' => '10',
        'not_equal' => '2.5',
        'less_than' => '11.5',
        'greater_than' => '1',
      ),
      'mismatch conditional values' => array(
        'equal' => '2.5',
        'not_equal' => '10',
        'less_than' => '10',
        'greater_than' => '11.5',
      ),
    ),
  );
  return $this->_webform_components;
}