ResettableStaticUnitTest.php

Definition of Drupal\system\Tests\Bootstrap\ResettableStaticUnitTest.

Namespace

Drupal\system\Tests\Bootstrap

File

drupal/core/modules/system/lib/Drupal/system/Tests/Bootstrap/ResettableStaticUnitTest.php
View source
<?php

/**
 * @file
 * Definition of Drupal\system\Tests\Bootstrap\ResettableStaticUnitTest.
 */
namespace Drupal\system\Tests\Bootstrap;

use Drupal\simpletest\UnitTestBase;

/**
 * Tests that resetting static variables works.
 */
class ResettableStaticUnitTest extends UnitTestBase {
  public static function getInfo() {
    return array(
      'name' => 'Resettable static variables test',
      'description' => 'Test that drupal_static() and drupal_static_reset() work.',
      'group' => 'Bootstrap',
    );
  }

  /**
   * Tests drupal_static() function.
   *
   * Tests that a variable reference returned by drupal_static() gets reset when
   * drupal_static_reset() is called.
   */
  function testDrupalStatic() {
    $name = __CLASS__ . '_' . __METHOD__;
    $var =& drupal_static($name, 'foo');
    $this
      ->assertEqual($var, 'foo', 'Variable returned by drupal_static() was set to its default.');

    // Call the specific reset and the global reset each twice to ensure that
    // multiple resets can be issued without odd side effects.
    $var = 'bar';
    drupal_static_reset($name);
    $this
      ->assertEqual($var, 'foo', 'Variable was reset after first invocation of name-specific reset.');
    $var = 'bar';
    drupal_static_reset($name);
    $this
      ->assertEqual($var, 'foo', 'Variable was reset after second invocation of name-specific reset.');
    $var = 'bar';
    drupal_static_reset();
    $this
      ->assertEqual($var, 'foo', 'Variable was reset after first invocation of global reset.');
    $var = 'bar';
    drupal_static_reset();
    $this
      ->assertEqual($var, 'foo', 'Variable was reset after second invocation of global reset.');
  }

}

Classes

Namesort descending Description
ResettableStaticUnitTest Tests that resetting static variables works.