function SchemaTestCase::testSchemaAddField

Test adding columns to an existing table.

File

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

Class

SchemaTestCase
Unit tests for the Schema API.

Code

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);
            }
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.