Browse Source

More tests

euromark 12 years ago
parent
commit
f3c8a78a87
2 changed files with 26 additions and 1 deletions
  1. 4 1
      Lib/Utility/NumberLib.php
  2. 22 0
      Test/Case/Lib/Utility/NumberLibTest.php

+ 4 - 1
Lib/Utility/NumberLib.php

@@ -237,9 +237,12 @@ class NumberLib extends CakeNumber {
 	 *
 	 * @param array $values: int or float values
 	 * @param integer $precision
-	 * @return integer average
+	 * @return float Average
 	 */
 	public static function average($values, $precision = 0) {
+		if (empty($values)) {
+			return 0.0;
+		}
 		$average = round(array_sum($values) / count($values), $precision);
 		return $average;
 	}

+ 22 - 0
Test/Case/Lib/Utility/NumberLibTest.php

@@ -17,6 +17,28 @@ class NumberLibTest extends MyCakeTestCase {
 		NumberLib::config();
 	}
 
+	public function testAverage() {
+		$array = array();
+		$is = NumberLib::average($array);
+		$expected = 0.0;
+		$this->assertSame($expected, $is);
+
+		$array = array(3, 8, 4);
+		$is = NumberLib::average($array);
+		$expected = 5.0;
+		$this->assertSame($expected, $is);
+
+		$array = array(0.0, 3.8);
+		$is = NumberLib::average($array);
+		$expected = 2.0;
+		$this->assertSame($expected, $is);
+
+		$array = array(0.0, 3.7);
+		$is = NumberLib::average($array, 1);
+		$expected = 1.9;
+		$this->assertSame($expected, $is);
+	}
+
 	public function testMoney() {
 		$is = NumberLib::money(22.11);
 		$expected = '22,11 €';