Author: gimler
Date: 2010-02-07 22:15:30 +0100 (Sun, 07 Feb 2010)
New Revision: 27675
Modified:
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/lib/basic/dmArray.php
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/test/unit/dmArrayTest.php
Log:
[Diem] fix dmArray::firstKey; add more tests and phpdocs for this class
Modified:
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/lib/basic/dmArray.php
===================================================================
---
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/lib/basic/dmArray.php
2010-02-07 21:11:19 UTC (rev 27674)
+++
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/lib/basic/dmArray.php
2010-02-07 21:15:30 UTC (rev 27675)
@@ -5,8 +5,12 @@
/**
* Sets each array key to its corresponding value
+ *
+ * @param array $array source array
+ *
+ * @return array new array
*/
- public static function valueToKey($array)
+ public static function valueToKey(array $array)
{
$tmp = array();
foreach($array as $value)
@@ -49,7 +53,13 @@
}
}
- // get first value of an array
+ /**
+ * get first value of an array
+ *
+ * @param array $array source array
+ *
+ * @return mixed first value
+ */
public static function first($array)
{
if(!is_array($array))
@@ -68,7 +78,13 @@
return $a;
}
- // get last value of an array
+ /**
+ * get last value of an array
+ *
+ * @param array $array source array
+ *
+ * @return mixed last value
+ */
public static function last($array)
{
if(!is_array($array))
@@ -87,13 +103,36 @@
return $a;
}
- // get first key of an array
+ /**
+ * get first key of an array
+ *
+ * @param array $array source array
+ *
+ * @return mixed the first key
+ */
public static function firstKey($array)
{
- return self::firstEntryIn(array_keys($array));
+ if(!is_array($array))
+ {
+ return $array;
+ }
+
+ if(empty($array))
+ {
+ return null;
+ }
+
+ return self::first(array_keys($array));
}
- // get first valueS of an array
+ /**
+ * get first n values of an array
+ *
+ * @param array $array source array
+ * @param int $nb how many values
+ *
+ * @return array the first n values
+ */
public static function firsts($array, $nb)
{
if(!is_array($array))
@@ -108,22 +147,20 @@
$nb = min(array($nb, count($array)));
- $return_entries = array();
-
- for($it = 0; $it < $nb; $it++)
- {
- if ($entry = array_shift($array))
- {
- $return_entries[] = $entry;
- }
- }
-
+ $return_entries = array_slice($array, 0, $nb);
unset($array);
return $return_entries;
}
- // unset empty elements of the array
+ /**
+ * unset empty elements of the array
+ *
+ * @param array $array array to clean
+ * @param array $keys keys to clean
+ *
+ * @return array cleaned array
+ */
public static function unsetEmpty(array $array, array $keys)
{
foreach($keys as $key)
@@ -137,7 +174,13 @@
return $array;
}
- // transform an array of string to a css classes string
+ /**
+ * transform an array of string to a css classes string
+ *
+ * @param array $classes single class or multi class values allowed
+ *
+ * @return string cleaned value
+ */
public static function toHtmlCssClasses(array $classes)
{
return implode(' ', array_unique(array_filter(array_map('trim',
$classes))));
Modified:
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/test/unit/dmArrayTest.php
===================================================================
---
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/test/unit/dmArrayTest.php
2010-02-07 21:11:19 UTC (rev 27674)
+++
plugins/diemPlugin/tags/RELEASE_5_0_0_BETA5/dmCorePlugin/test/unit/dmArrayTest.php
2010-02-07 21:15:30 UTC (rev 27675)
@@ -4,8 +4,10 @@
$helper = new dmUnitTestHelper();
$helper->boot();
-$t = new lime_test(3);
+$t = new lime_test(19);
+$t->diag('toHtmlCssClasses');
+
$classes = array('class1', '', ' class2', ' ', ' class3 ');
$cleanClasses = 'class1 class2 class3';
@@ -25,4 +27,124 @@
dmArray::toHtmlCssClasses($classes),
$cleanClasses,
'clean classes : '.$cleanClasses
-);
\ No newline at end of file
+);
+
+
+$t->diag('first');
+
+$t->is_deeply(
+ dmArray::first('alpha'),
+ 'alpha',
+ 'first parameter is not an array'
+);
+
+$t->is_deeply(
+ dmArray::first(array()),
+ null,
+ 'empty source array'
+);
+
+$array = array('alpha', 'beta', 'gamma', 'delta');
+$t->is_deeply(
+ dmArray::first($array),
+ 'alpha',
+ 'first value'
+);
+
+
+$t->diag('firstKey');
+
+$t->is_deeply(
+ dmArray::firstKey('alpha'),
+ 'alpha',
+ 'first parameter is not an array'
+);
+
+$t->is_deeply(
+ dmArray::firstKey(array()),
+ null,
+ 'empty source array'
+);
+
+$array = array(1 => 'alpha');
+$t->is_deeply(
+ dmArray::firstKey($array),
+ 1,
+ 'first value int'
+);
+
+$array = array('alpha' => 'beta');
+$t->is_deeply(
+ dmArray::firstKey($array),
+ 'alpha',
+ 'first value string'
+);
+
+
+$t->diag('firsts');
+
+$t->is_deeply(
+ dmArray::firsts('alpha', 2),
+ 'alpha',
+ 'first parameter is not an array'
+);
+
+$t->is_deeply(
+ dmArray::firsts(array(), 2),
+ null,
+ 'empty source array'
+);
+
+$t->is_deeply(
+ dmArray::firsts(array('alpha'), 2),
+ array('alpha'),
+ 'not enough values'
+);
+
+$array = array('alpha', 'beta', 'gamma', 'delta');
+$t->is_deeply(
+ dmArray::firsts($array, 2),
+ array('alpha', 'beta'),
+ 'first values'
+);
+
+$t->diag('last');
+
+$t->is_deeply(
+ dmArray::last('alpha'),
+ 'alpha',
+ 'first parameter is not an array'
+);
+
+$t->is_deeply(
+ dmArray::last(array()),
+ null,
+ 'empty source array'
+);
+
+$array = array('alpha', 'beta', 'gamma', 'delta');
+$t->is_deeply(
+ dmArray::last($array),
+ 'delta',
+ 'last value'
+);
+
+
+$t->diag('valueToKey');
+
+$array = array('alpha', 'beta', 'gamma', 'delta');
+$t->is_deeply(
+ dmArray::valueToKey($array),
+ array('alpha' => 'alpha', 'beta' => 'beta', 'gamma' => 'gamma', 'delta' =>
'delta'),
+ 'check'
+);
+
+
+$t->diag('unsetEmpty');
+
+$array = array(1 => '', 2 => 'delta', 3 => '', 'alpha' => 'gamma', 'gamma' =>
'', 'delta' => '');
+$t->is_deeply(
+ dmArray::unsetEmpty($array, array(3, 'gamma')),
+ array('1' => '', '2' => 'delta', 'alpha' => 'gamma', 'delta' => ''),
+ 'check'
+);
--
You received this message because you are subscribed to the Google Groups
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-svn?hl=en.