]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/utils/SugarArrayTest.php
Release 6.2.0
[Github/sugarcrm.git] / tests / include / utils / SugarArrayTest.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/utils/array_utils.php';
39
40 class SugarArrayTest extends Sugar_PHPUnit_Framework_TestCase
41 {
42     public function testCanFindValueUsingDotNotation() 
43     {
44         $random = rand(100, 200);
45         $array = array(
46             'foo' => array(
47                 $random => array(
48                     'bar' => $random,
49                 ),
50             ),
51         );
52
53         $array = new SugarArray($array);
54         $this->assertEquals($array->get("foo.{$random}.bar"), $random);
55     }
56
57     public function testReturnsDefaultValueWhenDoesNotContainRequestedValue() 
58     {
59         $random = rand(100, 200);
60         $array = new SugarArray(array());
61         $this->assertEquals($array->get('unknown', $random), $random);
62     }
63     
64     public function testImplementsArrayAccess() 
65     {
66         $reflection = new ReflectionClass('SugarArray');
67         $this->assertTrue($reflection->implementsInterface('ArrayAccess'));
68     }
69
70     public function testImplementsCountable() 
71     {
72         $reflection = new ReflectionClass('SugarArray');
73         $this->assertTrue($reflection->implementsInterface('Countable'));
74     }
75
76     public function testStaticMethodCanTraverseProvidedArray() 
77     {
78         $random = rand(100, 200);
79         $array = array(
80             'foo' => array(
81                 $random => array(
82                     'bar' => $random,
83                 ),
84             ),
85         );
86
87         $this->assertEquals(SugarArray::staticGet($array, "foo.{$random}.bar"), $random);
88     }
89
90     public function testStaticMethodCanReturnDefaultOnUnknownValue() 
91     {
92         $random = rand(100, 200);
93         $this->assertEquals(SugarArray::staticGet(array(123, 321), 'unknown', $random), $random);
94     }
95     
96     public function testAdd_blank_option()
97     {
98         $options = 'noneArray';
99         $expectedArray = array(''=>'');
100         $result = add_blank_option($options);
101         $this->assertEquals($result[''], $expectedArray['']);
102         $options2 = array('mason'=>'unittest');
103         $expectedArray2 = array(''=>'','mason'=>'unittest');
104         $result2 = add_blank_option($options2);
105         $this->assertEquals($result2, $expectedArray2);
106     }
107 }
108