You are here

function BatchAPIPercentagesTestCase::setUp in SimpleTest 7

Generates a random database prefix, runs the install scripts on the prefixed database and enable the specified modules. After installation many caches are flushed and the internal browser is setup so that the page requests will run on the new prefix. A temporary files directory is created with the same name as the database prefix.

Parameters

...: List of modules to enable for the duration of the test.

Overrides DrupalWebTestCase::setUp

File

tests/batch.test, line 23
Unit tests for the Drupal Batch API.

Class

BatchAPIPercentagesTestCase
Tests the function _batch_api_percentage() to make sure that the rounding works properly in all cases.

Code

function setUp() {

  // Set up an array of test cases, where the expected values are the keys,
  // and the values are arrays with the keys 'total' and 'current',
  // corresponding with the function parameters of _batch_api_percentage().
  $this->testCases = array(
    // 1/2 is 50%.
    '50' => array(
      'total' => 2,
      'current' => 1,
    ),
    // Though we should never encounter a case where the current set is set
    // 0, if we did, we should get 0%.
    '0' => array(
      'total' => 3,
      'current' => 0,
    ),
    // 1/3 is closer to 33% than to 34%.
    '33' => array(
      'total' => 3,
      'current' => 1,
    ),
    // 2/3 is closer to 67% than to 66%.
    '67' => array(
      'total' => 3,
      'current' => 2,
    ),
    // A full 3/3 should equal 100%.
    '100' => array(
      'total' => 3,
      'current' => 3,
    ),
    // 1/199 should round up to 1%.
    '1' => array(
      'total' => 199,
      'current' => 1,
    ),
    // 198/199 should round down to 99%.
    '99' => array(
      'total' => 199,
      'current' => 198,
    ),
    // 199/200 would have rounded up to 100%, which would give the false
    // impression of being finished, so we add another digit and should get
    // 99.5%.
    '99.5' => array(
      'total' => 200,
      'current' => 199,
    ),
    // The same logic holds for 1/200: we should get 0.5%.
    '0.5' => array(
      'total' => 200,
      'current' => 1,
    ),
    // Numbers that come out evenly, such as 50/200, should be forced to have
    // extra digits for consistancy.
    '25.0' => array(
      'total' => 200,
      'current' => 50,
    ),
    // Regardless of number of digits we're using, 100% should always just be
    // 100%.
    '100' => array(
      'total' => 200,
      'current' => 200,
    ),
    // 1998/1999 should similarly round down to 99.9%.
    '99.9' => array(
      'total' => 1999,
      'current' => 1998,
    ),
    // 1999/2000 should add another digit and go to 99.95%.
    '99.95' => array(
      'total' => 2000,
      'current' => 1999,
    ),
    // 19999/20000 should add yet another digit and go to 99.995%.
    '99.995' => array(
      'total' => 20000,
      'current' => 19999,
    ),
  );
  parent::setUp();
}