function ImageDimensionsScaleTestCase::testImageDimensionsScale

Tests all control flow branches in image_dimensions_scale().

File

modules/image/image.test, line 1591

Class

ImageDimensionsScaleTestCase
Tests image_dimensions_scale().

Code

function testImageDimensionsScale() {
    // Define input / output datasets to test different branch conditions.
    $test = array();
    // Test branch conditions:
    // - No height.
    // - Upscale, don't need to upscale.
    $tests[] = array(
        'input' => array(
            'dimensions' => array(
                'width' => 1000,
                'height' => 2000,
            ),
            'width' => 200,
            'height' => NULL,
            'upscale' => TRUE,
        ),
        'output' => array(
            'dimensions' => array(
                'width' => 200,
                'height' => 400,
            ),
            'return_value' => TRUE,
        ),
    );
    // Test branch conditions:
    // - No width.
    // - Don't upscale, don't need to upscale.
    $tests[] = array(
        'input' => array(
            'dimensions' => array(
                'width' => 1000,
                'height' => 800,
            ),
            'width' => NULL,
            'height' => 140,
            'upscale' => FALSE,
        ),
        'output' => array(
            'dimensions' => array(
                'width' => 175,
                'height' => 140,
            ),
            'return_value' => TRUE,
        ),
    );
    // Test branch conditions:
    // - Source aspect ratio greater than target.
    // - Upscale, need to upscale.
    $tests[] = array(
        'input' => array(
            'dimensions' => array(
                'width' => 8,
                'height' => 20,
            ),
            'width' => 200,
            'height' => 140,
            'upscale' => TRUE,
        ),
        'output' => array(
            'dimensions' => array(
                'width' => 56,
                'height' => 140,
            ),
            'return_value' => TRUE,
        ),
    );
    // Test branch condition: target aspect ratio greater than source.
    $tests[] = array(
        'input' => array(
            'dimensions' => array(
                'width' => 2000,
                'height' => 800,
            ),
            'width' => 200,
            'height' => 140,
            'upscale' => FALSE,
        ),
        'output' => array(
            'dimensions' => array(
                'width' => 200,
                'height' => 80,
            ),
            'return_value' => TRUE,
        ),
    );
    // Test branch condition: don't upscale, need to upscale.
    $tests[] = array(
        'input' => array(
            'dimensions' => array(
                'width' => 100,
                'height' => 50,
            ),
            'width' => 200,
            'height' => 140,
            'upscale' => FALSE,
        ),
        'output' => array(
            'dimensions' => array(
                'width' => 100,
                'height' => 50,
            ),
            'return_value' => FALSE,
        ),
    );
    foreach ($tests as $test) {
        // Process the test dataset.
        $return_value = image_dimensions_scale($test['input']['dimensions'], $test['input']['width'], $test['input']['height'], $test['input']['upscale']);
        // Check the width.
        $this->assertEqual($test['output']['dimensions']['width'], $test['input']['dimensions']['width'], format_string('Computed width (@computed_width) equals expected width (@expected_width)', array(
            '@computed_width' => $test['output']['dimensions']['width'],
            '@expected_width' => $test['input']['dimensions']['width'],
        )));
        // Check the height.
        $this->assertEqual($test['output']['dimensions']['height'], $test['input']['dimensions']['height'], format_string('Computed height (@computed_height) equals expected height (@expected_height)', array(
            '@computed_height' => $test['output']['dimensions']['height'],
            '@expected_height' => $test['input']['dimensions']['height'],
        )));
        // Check the return value.
        $this->assertEqual($test['output']['return_value'], $return_value, 'Correct return value.');
    }
}

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