]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/SugarObjects/SugarRegistryTest.php
Release 6.2.0
[Github/sugarcrm.git] / tests / include / SugarObjects / SugarRegistryTest.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37  
38 require_once 'include/SugarObjects/SugarRegistry.php';
39
40 class SugarRegistryTest extends Sugar_PHPUnit_Framework_TestCase
41 {
42     private $_old_reporting = null;
43     private $_old_globals = null;
44
45     public function setUp() 
46     {
47         $this->_old_reporting = error_reporting(E_ALL);
48         $this->_old_globals = $GLOBALS;
49         unset($GLOBALS);
50     }
51
52     public function tearDown() 
53     {
54         error_reporting($this->_old_reporting);
55         $GLOBALS = $this->_old_globals;
56         unset($this->_old_globals);
57     }
58
59     public function testGetInstanceReturnsAnInstanceOfSugarRegistry() 
60     {
61         $this->assertTrue(SugarRegistry::getInstance() instanceOf SugarRegistry,'Returned object is not a SugarRegistry instance');
62     }
63
64     public function testGetInstanceReturnsSameObject() 
65     {
66         $one = SugarRegistry::getInstance();
67         $two = SugarRegistry::getInstance();
68         $this->assertSame($one, $two);
69     }
70
71     public function testParameterPassedToGetInstanceSpecifiesInstanceName() 
72     {
73         $foo1 = SugarRegistry::getInstance('foo');
74         $foo2 = SugarRegistry::getInstance('foo');
75         $this->assertSame($foo1, $foo2);
76
77         $bar = SugarRegistry::getInstance('bar');
78         $this->assertNotSame($foo1, $bar);
79     }
80
81     public function testCanSetAndGetValues() 
82     {
83         $random = rand(100, 200);
84         $r = SugarRegistry::getInstance();
85         $r->integer = $random;
86         $this->assertEquals($random, $r->integer);
87         $this->assertEquals($random, SugarRegistry::getInstance()->integer);
88     }
89
90     public function testIssetReturnsTrueFalse() 
91     {
92         $r = SugarRegistry::getInstance();
93         $this->assertFalse(isset($r->foo));
94         $this->assertFalse(isset(SugarRegistry::getInstance()->foo));
95
96         $r->foo = 'bar';
97         $this->assertTrue(isset($r->foo));
98         $this->assertTrue(isset(SugarRegistry::getInstance()->foo));
99     }
100
101     public function testUnsetRemovesValueFromRegistry() 
102     {
103         $r = SugarRegistry::getInstance();
104         $r->foo = 'bar';
105         unset($r->foo);
106         $this->assertFalse(isset($r->foo));
107         $this->assertFalse(isset(SugarRegistry::getInstance()->foo));
108     }
109
110     public function testReturnsNullOnAnyUnknownValue() 
111     {
112         $r = SugarRegistry::getInstance();
113         $this->assertNull($r->unknown);
114         $this->assertNull(SugarRegistry::getInstance()->unknown);
115     }
116
117     public function testAddToGlobalsPutsRefsToAllRegistryObjectsInGlobalSpace() 
118     {
119         $r = SugarRegistry::getInstance();
120         $r->foo = 'bar';
121
122         $this->assertFalse(isset($GLOBALS['foo']), 'sanity check');
123         $r->addToGlobals();
124         $this->assertTrue(isset($GLOBALS['foo']));
125     }
126 }
127