Ian province abbreviation patch - issue 724
[civicrm-core.git] / tests / phpunit / CRM / Utils / StringTest.php
CommitLineData
6a488035
TO
1<?php
2require_once 'CiviTest/CiviUnitTestCase.php';
aba1cd8b
EM
3
4/**
5 * Class CRM_Utils_StringTest
6 */
6a488035 7class 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}