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.

Reply via email to