Merge pull request #4875 from civicrm/minor-fix
[civicrm-core.git] / tests / phpunit / CRM / Utils / GlobalStackTest.php
1 <?php
2
3 require_once 'CiviTest/CiviUnitTestCase.php';
4
5 /**
6 * Class CRM_Utils_GlobalStackTest
7 */
8 class CRM_Utils_GlobalStackTest extends CiviUnitTestCase {
9
10 /**
11 * Temporarily override global variables and ensure that the variable data
12 * is set as expected (before/during/after the override).
13 */
14 public function testPushPop() {
15 global $_FOO, $_EXTRA;
16
17 $_FOO['bar'] = 1;
18 $_FOO['whiz'] = 1;
19 $_EXTRA = 1;
20
21 $this->assertEquals(1, $_FOO['bar']);
22 $this->assertEquals(1, $_FOO['whiz']);
23 $this->assertFalse(isset($_FOO['bang']));
24 $this->assertEquals(1, $_EXTRA);
25
26 CRM_Utils_GlobalStack::singleton()->push(array(
27 '_FOO' => array(
28 'bar' => 2,
29 'bang' => 2,
30 ),
31 '_EXTRA' => 2,
32 ));
33
34 $this->assertEquals(2, $_FOO['bar']);
35 $this->assertEquals(1, $_FOO['whiz']);
36 $this->assertEquals(2, $_FOO['bang']);
37 $this->assertEquals(2, $_EXTRA);
38
39 CRM_Utils_GlobalStack::singleton()->pop();
40
41 $this->assertEquals(1, $_FOO['bar']);
42 $this->assertEquals(1, $_FOO['whiz']);
43 $this->assertEquals(NULL, $_FOO['bang']);
44 $this->assertEquals(1, $_EXTRA);
45 }
46 }