SchemaTestCase::testSchemaAddField

  1. drupal
    1. 8
    2. 7
Versions
7 SchemaTestCase::testSchemaAddField()

Test adding columns to an existing table.

Code

modules/simpletest/tests/schema.test, line 226

<?php
function testSchemaAddField() {
  // Test varchar types.
  foreach (array(1, 32, 128, 256, 512) as $length) {
    $base_field_spec = array(
      'type' => 'varchar', 
      'length' => $length,
    );
    $variations = array(
      array('not null' => FALSE),
      array(
        'not null' => FALSE,
        'default' => '7',
      ),
      array(
        'not null' => TRUE,
        'initial' => 'd',
      ),
      array(
        'not null' => TRUE,
        'initial' => 'd',
        'default' => '7',
      ),
    );

    foreach ($variations as $variation) {
      $field_spec = $variation + $base_field_spec;
      $this->assertFieldAdditionRemoval($field_spec);
    }
  }

  // Test int and float types.
  foreach (array('int', 'float') as $type) {
    foreach (array('tiny', 'small', 'medium', 'normal', 'big') as $size) {
      $base_field_spec = array(
        'type' => $type, 
        'size' => $size,
      );
      $variations = array(
        array('not null' => FALSE),
        array(
          'not null' => FALSE,
          'default' => 7,
        ),
        array(
          'not null' => TRUE,
          'initial' => 1,
        ),
        array(
          'not null' => TRUE,
          'initial' => 1,
          'default' => 7,
        ),
      );

      foreach ($variations as $variation) {
        $field_spec = $variation + $base_field_spec;
        $this->assertFieldAdditionRemoval($field_spec);
      }
    }
  }

  // Test numeric types.
  foreach (array(1, 5, 10, 40, 65) as $precision) {
    foreach (array(0, 2, 10, 30) as $scale) {
      if ($precision <= $scale) {
        // Precision must be smaller then scale.
        continue;
      }

      $base_field_spec = array(
        'type' => 'numeric', 
        'scale' => $scale, 
        'precision' => $precision,
      );
      $variations = array(
        array('not null' => FALSE),
        array(
          'not null' => FALSE,
          'default' => 7,
        ),
        array(
          'not null' => TRUE,
          'initial' => 1,
        ),
        array(
          'not null' => TRUE,
          'initial' => 1,
          'default' => 7,
        ),
      );

      foreach ($variations as $variation) {
        $field_spec = $variation + $base_field_spec;
        $this->assertFieldAdditionRemoval($field_spec);
      }
    }
  }
}
?>