1.20.x number.test public NumberFieldTestCase::testNumberDecimalFieldStepValidation()

Test number_decimal field step validation.

File

modules/field/modules/number/tests/number.test, line 107
Tests for number.module.

Class

NumberFieldTestCase
Tests for number field types.

Code

public function testNumberDecimalFieldStepValidation() {
  // Create a field with settings to validate, this time with higher
  // precision and scale.
  $this->field = array(
    'field_name' => backdrop_strtolower($this->randomName()),
    'type' => 'number_decimal',
    'settings' => array(
      'precision' => 14,
      'scale' => 10,
      'decimal_separator' => '.',
    ),
  );
  field_create_field($this->field);
  $this->instance = array(
    'field_name' => $this->field['field_name'],
    'entity_type' => 'test_entity',
    'bundle' => 'test_bundle',
    'widget' => array(
      'type' => 'number',
    ),
    'display' => array(
      'default' => array(
        'type' => 'number_decimal',
      ),
    ),
  );
  field_create_instance($this->instance);

  // Valid values but problematic because of php floating point precision.
  // All these values are divisible by 0.0000000001 (1.0E-10), so the step
  // validation must pass.
  $valid_values = array(
    20.123456789,
    9999.1933172003,
    219.200005,
    199.200001,
  );
  foreach ($valid_values as $index => $decimal) {
    $langcode = LANGUAGE_NONE;
    $this->backdropGet('test-entity/add/test-bundle');
    $edit = array(
      "{$this->field['field_name']}[$langcode][0][value]" => $decimal,
    );
    $this->backdropPost(NULL, $edit, t('Save'));
    $this->assertNoRaw(format_string('%name is not a valid number.', array('%name' => $this->field['field_name'])));
  }
}