Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | require_once 'CiviTest/CiviUnitTestCase.php'; | |
aba1cd8b EM |
3 | |
4 | /** | |
5 | * Class CRM_Utils_StringTest | |
6 | */ | |
6a488035 | 7 | class CRM_Utils_StringTest extends CiviUnitTestCase { |
6a488035 | 8 | |
00be9182 | 9 | public function setUp() { |
6a488035 TO |
10 | parent::setUp(); |
11 | } | |
12 | ||
00be9182 | 13 | public function testStripPathChars() { |
6a488035 TO |
14 | $testSet = array( |
15 | '' => '', | |
16 | NULL => NULL, | |
17 | 'civicrm' => 'civicrm', | |
18 | 'civicrm/dashboard' => 'civicrm/dashboard', | |
19 | 'civicrm/contribute/transact' => 'civicrm/contribute/transact', | |
20 | 'civicrm/<hack>attempt</hack>' => 'civicrm/_hack_attempt_/hack_', | |
21 | 'civicrm dashboard & force = 1,;' => 'civicrm_dashboard___force___1__', | |
22 | ); | |
23 | ||
6a488035 TO |
24 | foreach ($testSet as $in => $expected) { |
25 | $out = CRM_Utils_String::stripPathChars($in); | |
26 | $this->assertEquals($out, $expected, "Output does not match"); | |
27 | } | |
28 | } | |
29 | ||
00be9182 | 30 | public function testExtractName() { |
6a488035 TO |
31 | $cases = array( |
32 | array( | |
33 | 'full_name' => 'Alan', | |
34 | 'first_name' => 'Alan', | |
35 | ), | |
36 | array( | |
37 | 'full_name' => 'Alan Arkin', | |
38 | 'first_name' => 'Alan', | |
39 | 'last_name' => 'Arkin', | |
40 | ), | |
41 | array( | |
42 | 'full_name' => '"Alan Arkin"', | |
43 | 'first_name' => 'Alan', | |
44 | 'last_name' => 'Arkin', | |
45 | ), | |
46 | array( | |
47 | 'full_name' => 'Alan A Arkin', | |
48 | 'first_name' => 'Alan', | |
49 | 'middle_name' => 'A', | |
50 | 'last_name' => 'Arkin', | |
51 | ), | |
52 | array( | |
53 | 'full_name' => 'Adams, Amy', | |
54 | 'first_name' => 'Amy', | |
55 | 'last_name' => 'Adams', | |
56 | ), | |
57 | array( | |
58 | 'full_name' => 'Adams, Amy A', | |
59 | 'first_name' => 'Amy', | |
60 | 'middle_name' => 'A', | |
61 | 'last_name' => 'Adams', | |
62 | ), | |
63 | array( | |
64 | 'full_name' => '"Adams, Amy A"', | |
65 | 'first_name' => 'Amy', | |
66 | 'middle_name' => 'A', | |
67 | 'last_name' => 'Adams', | |
68 | ), | |
69 | ); | |
70 | foreach ($cases as $case) { | |
71 | $actual = array(); | |
72 | CRM_Utils_String::extractName($case['full_name'], $actual); | |
73 | $this->assertEquals($actual['first_name'], $case['first_name']); | |
e65f9c8f E |
74 | $this->assertEquals(CRM_Utils_Array::value('last_name', $actual), CRM_Utils_Array::value('last_name', $case)); |
75 | $this->assertEquals(CRM_Utils_Array::value('middle_name', $actual), CRM_Utils_Array::value('middle_name', $case)); | |
6a488035 TO |
76 | } |
77 | } | |
78 | ||
00be9182 | 79 | public function testEllipsify() { |
6a488035 TO |
80 | $maxLen = 5; |
81 | $cases = array( | |
82 | '1' => '1', | |
83 | '12345' => '12345', | |
84 | '123456' => '12...', | |
85 | ); | |
86 | foreach ($cases as $input => $expected) { | |
87 | $this->assertEquals($expected, CRM_Utils_String::ellipsify($input, $maxLen)); | |
7a0ea0f3 | 88 | } |
6a488035 TO |
89 | } |
90 | ||
00be9182 | 91 | public function testRandom() { |
6a488035 TO |
92 | for ($i = 0; $i < 4; $i++) { |
93 | $actual = CRM_Utils_String::createRandom(4, 'abc'); | |
94 | $this->assertEquals(4, strlen($actual)); | |
95 | $this->assertRegExp('/^[abc]+$/', $actual); | |
96 | ||
97 | $actual = CRM_Utils_String::createRandom(6, '12345678'); | |
98 | $this->assertEquals(6, strlen($actual)); | |
99 | $this->assertRegExp('/^[12345678]+$/', $actual); | |
100 | } | |
101 | } | |
fc7a0aee | 102 | |
4cbe18b8 EM |
103 | /** |
104 | * @return array | |
105 | */ | |
fc7a0aee TO |
106 | public function parsePrefixData() { |
107 | $cases = array(); | |
108 | $cases[] = array('administer CiviCRM', NULL, array(NULL, 'administer CiviCRM')); | |
109 | $cases[] = array('administer CiviCRM', 'com_civicrm', array('com_civicrm', 'administer CiviCRM')); | |
110 | $cases[] = array('Drupal:access user profiles', NULL, array('Drupal', 'access user profiles')); | |
111 | $cases[] = array('Joomla:component:perm', NULL, array('Joomla', 'component:perm')); | |
112 | return $cases; | |
113 | } | |
114 | ||
115 | /** | |
116 | * @dataProvider parsePrefixData | |
1e1fdcf6 EM |
117 | * @param $input |
118 | * @param $defaultPrefix | |
119 | * @param $expected | |
fc7a0aee TO |
120 | */ |
121 | public function testParsePrefix($input, $defaultPrefix, $expected) { | |
122 | $actual = CRM_Utils_String::parsePrefix(':', $input, $defaultPrefix); | |
123 | $this->assertEquals($expected, $actual); | |
124 | } | |
a5b8726f | 125 | |
7fe37828 EM |
126 | /** |
127 | * @return array | |
128 | */ | |
00be9182 | 129 | public function booleanDataProvider() { |
a5b8726f TO |
130 | $cases = array(); // array(0 => $input, 1 => $expectedOutput) |
131 | $cases[] = array(TRUE, TRUE); | |
132 | $cases[] = array(FALSE, FALSE); | |
133 | $cases[] = array(1, TRUE); | |
134 | $cases[] = array(0, FALSE); | |
135 | $cases[] = array('1', TRUE); | |
136 | $cases[] = array('0', FALSE); | |
137 | $cases[] = array(TRUE, TRUE); | |
138 | $cases[] = array(FALSE, FALSE); | |
139 | $cases[] = array('Y', TRUE); | |
140 | $cases[] = array('N', FALSE); | |
141 | $cases[] = array('y', TRUE); | |
142 | $cases[] = array('n', FALSE); | |
143 | $cases[] = array('Yes', TRUE); | |
144 | $cases[] = array('No', FALSE); | |
145 | $cases[] = array('True', TRUE); | |
146 | $cases[] = array('False', FALSE); | |
147 | $cases[] = array('yEs', TRUE); | |
148 | $cases[] = array('nO', FALSE); | |
149 | $cases[] = array('tRuE', TRUE); | |
150 | $cases[] = array('FaLsE', FALSE); | |
151 | return $cases; | |
152 | } | |
153 | ||
154 | /** | |
155 | * @param $input | |
5a4f6742 CW |
156 | * @param bool $expected |
157 | * * @dataProvider booleanDataProvider | |
a5b8726f | 158 | */ |
00be9182 | 159 | public function testStrToBool($input, $expected) { |
a5b8726f TO |
160 | $actual = CRM_Utils_String::strtobool($input); |
161 | $this->assertTrue($expected === $actual); | |
162 | } | |
163 | ||
6a488035 | 164 | } |